linuxkpi: Add some basic swap functions
These are used by kms-drm to determine various heuristics relate memory conditions. The number of free swap pages is just a variable, and it can be much cheaper by either adding a new getter, or simply extern'ing swap_total. However, this patch opts to use the more expensive, existing interface - since this isn't an operation in a high per path. This allows us to remove some more gpl linuxkpi and do the follo kms-drm: git rm linuxkpi/gplv2/include/linux/swap.h Reviewed by: mmacy, Johannes Lundberg <johalun0@gmail.com> Approved by: emaste (mentor) Differential Revision: https://reviews.freebsd.org/D18052
This commit is contained in:
parent
edce78c2c4
commit
c3f4f28c63
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=340709
102
sys/compat/linuxkpi/common/include/linux/swap.h
Normal file
102
sys/compat/linuxkpi/common/include/linux/swap.h
Normal file
@ -0,0 +1,102 @@
|
||||
/*-
|
||||
* Copyright (c) 2018 Intel Corporation
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_SWAP_H_
|
||||
#define _LINUX_SWAP_H_
|
||||
|
||||
#include <vm/swap_pager.h>
|
||||
#include <vm/vm_pageout.h>
|
||||
|
||||
static inline long
|
||||
get_nr_swap_pages(void)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
/* NB: This could be done cheaply by obtaining swap_total directly */
|
||||
swap_pager_status(&i, &j);
|
||||
return i - j;
|
||||
}
|
||||
|
||||
static inline int
|
||||
current_is_kswapd(void)
|
||||
{
|
||||
return vm_curproc_is_vmproc();
|
||||
}
|
||||
|
||||
#endif
|
||||
/*-
|
||||
* Copyright (c) 2018 Intel Corporation
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_SWAP_H_
|
||||
#define _LINUX_SWAP_H_
|
||||
|
||||
#include <vm/swap_pager.h>
|
||||
#include <vm/vm_pageout.h>
|
||||
|
||||
static inline long
|
||||
get_nr_swap_pages(void)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
/* NB: This could be done cheaply by obtaining swap_total directly */
|
||||
swap_pager_status(&i, &j);
|
||||
return i - j;
|
||||
}
|
||||
|
||||
static inline int
|
||||
current_is_kswapd(void)
|
||||
{
|
||||
return vm_curproc_is_vmproc();
|
||||
}
|
||||
|
||||
#endif
|
@ -106,5 +106,8 @@ void vm_pageout_oom(int shortage);
|
||||
|
||||
void vm_swapout_run(void);
|
||||
void vm_swapout_run_idle(void);
|
||||
|
||||
bool vm_curproc_is_vmproc(void);
|
||||
|
||||
#endif /* _KERNEL */
|
||||
#endif /* _VM_VM_PAGEOUT_H_ */
|
||||
|
@ -961,3 +961,10 @@ swapout(struct proc *p)
|
||||
p->p_swtick = ticks;
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* Used to determine if the current process is itself the reaper. */
|
||||
bool
|
||||
vm_curproc_is_vmproc(void)
|
||||
{
|
||||
return curproc == vmproc;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user