FreeBSD virtual memory subsystem code
vm_page.c File Reference
#include <sys/cdefs.h>
#include "opt_vm.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/counter.h>
#include <sys/domainset.h>
#include <sys/kernel.h>
#include <sys/limits.h>
#include <sys/linker.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mman.h>
#include <sys/msgbuf.h>
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/rwlock.h>
#include <sys/sleepqueue.h>
#include <sys/sbuf.h>
#include <sys/sched.h>
#include <sys/smp.h>
#include <sys/sysctl.h>
#include <sys/vmmeter.h>
#include <sys/vnode.h>
#include <vm/vm.h>
#include <vm/pmap.h>
#include <vm/vm_param.h>
#include <vm/vm_domainset.h>
#include <vm/vm_kern.h>
#include <vm/vm_map.h>
#include <vm/vm_object.h>
#include <vm/vm_page.h>
#include <vm/vm_pageout.h>
#include <vm/vm_phys.h>
#include <vm/vm_pagequeue.h>
#include <vm/vm_pager.h>
#include <vm/vm_radix.h>
#include <vm/vm_reserv.h>
#include <vm/vm_extern.h>
#include <vm/vm_dumpset.h>
#include <vm/uma.h>
#include <vm/uma_int.h>
#include <machine/md_var.h>
#include "opt_ddb.h"
Include dependency graph for vm_page.c:

Go to the source code of this file.

Macros

#define VPA_FLAGS
 
#define VPAC_FLAGS   (VPA_FLAGS | VM_ALLOC_NORECLAIM)
 
#define VPAN_FLAGS
 
#define VPANC_FLAGS   (VPAN_FLAGS | VM_ALLOC_NORECLAIM)
 
#define VPSC_ANY   0 /* No restrictions. */
 
#define VPSC_NORESERV   1 /* Skip reservations; implies VPSC_NOSUPER. */
 
#define VPSC_NOSUPER   2 /* Skip superpages. */
 
#define NRUNS   16
 
#define RUN_INDEX(count)   ((count) & (NRUNS - 1))
 
#define MIN_RECLAIM   8
 

Functions

 __FBSDID ("$FreeBSD$")
 
 DPCPU_DEFINE_STATIC (struct vm_batchqueue, pqbatch[MAXMEMDOM][PQ_COUNT])
 
static SYSCTL_NODE (_vm_stats, OID_AUTO, page, CTLFLAG_RD|CTLFLAG_MPSAFE, 0, "VM page statistics")
 
static COUNTER_U64_DEFINE_EARLY (pqstate_commit_retries)
 
 SYSCTL_COUNTER_U64 (_vm_stats_page, OID_AUTO, pqstate_commit_retries, CTLFLAG_RD, &pqstate_commit_retries, "Number of failed per-page atomic queue state updates")
 
static COUNTER_U64_DEFINE_EARLY (queue_ops)
 
 SYSCTL_COUNTER_U64 (_vm_stats_page, OID_AUTO, queue_ops, CTLFLAG_RD, &queue_ops, "Number of batched queue operations")
 
static COUNTER_U64_DEFINE_EARLY (queue_nops)
 
 SYSCTL_COUNTER_U64 (_vm_stats_page, OID_AUTO, queue_nops, CTLFLAG_RD, &queue_nops, "Number of batched queue operations with no effects")
 
static TAILQ_HEAD (SYSINIT(vm_page)
 
static void vm_page_init_cache_zones (void *dummy __unused)
 
 SYSINIT (vm_page2, SI_SUB_VM_CONF, SI_ORDER_ANY, vm_page_init_cache_zones, NULL)
 
void vm_set_page_size (void)
 
static vm_paddr_t vm_page_blacklist_next (char **list, char *end)
 
bool vm_page_blacklist_add (vm_paddr_t pa, bool verbose)
 
static void vm_page_blacklist_check (char *list, char *end)
 
static void vm_page_blacklist_load (char **list, char **end)
 
static int sysctl_vm_page_blacklist (SYSCTL_HANDLER_ARGS)
 
void vm_page_init_marker (vm_page_t marker, int queue, uint16_t aflags)
 
static void vm_page_domain_init (int domain)
 
void vm_page_init_page (vm_page_t m, vm_paddr_t pa, int segind)
 
static vm_paddr_t vm_page_array_alloc (vm_offset_t *vaddr, vm_paddr_t end, vm_paddr_t page_range)
 
vm_offset_t vm_page_startup (vm_offset_t vaddr)
 
void vm_page_reference (vm_page_t m)
 
static bool vm_page_trybusy (vm_page_t m, int allocflags)
 
static bool vm_page_tryacquire (vm_page_t m, int allocflags)
 
bool vm_page_busy_acquire (vm_page_t m, int allocflags)
 
void vm_page_busy_downgrade (vm_page_t m)
 
int vm_page_busy_tryupgrade (vm_page_t m)
 
int vm_page_sbusied (vm_page_t m)
 
void vm_page_sunbusy (vm_page_t m)
 
bool vm_page_busy_sleep (vm_page_t m, const char *wmesg, int allocflags)
 
void vm_page_busy_sleep_unlocked (vm_object_t obj, vm_page_t m, vm_pindex_t pindex, const char *wmesg, int allocflags)
 
static bool _vm_page_busy_sleep (vm_object_t obj, vm_page_t m, vm_pindex_t pindex, const char *wmesg, int allocflags, bool locked)
 
int vm_page_trysbusy (vm_page_t m)
 
int vm_page_tryxbusy (vm_page_t m)
 
static void vm_page_xunbusy_hard_tail (vm_page_t m)
 
void vm_page_xunbusy_hard (vm_page_t m)
 
void vm_page_xunbusy_hard_unchecked (vm_page_t m)
 
static void vm_page_busy_free (vm_page_t m)
 
void vm_page_unhold_pages (vm_page_t *ma, int count)
 
vm_page_t PHYS_TO_VM_PAGE (vm_paddr_t pa)
 
vm_page_t vm_page_getfake (vm_paddr_t paddr, vm_memattr_t memattr)
 
void vm_page_initfake (vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr)
 
void vm_page_putfake (vm_page_t m)
 
void vm_page_updatefake (vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr)
 
void vm_page_free (vm_page_t m)
 
void vm_page_free_zero (vm_page_t m)
 
void vm_page_readahead_finish (vm_page_t m)
 
void vm_page_free_invalid (vm_page_t m)
 
void vm_page_dirty_KBI (vm_page_t m)
 
int vm_page_insert (vm_page_t m, vm_object_t object, vm_pindex_t pindex)
 
static int vm_page_insert_after (vm_page_t m, vm_object_t object, vm_pindex_t pindex, vm_page_t mpred)
 
static void vm_page_insert_radixdone (vm_page_t m, vm_object_t object, vm_page_t mpred)
 
static void vm_page_object_remove (vm_page_t m)
 
bool vm_page_remove (vm_page_t m)
 
bool vm_page_remove_xbusy (vm_page_t m)
 
vm_page_t vm_page_lookup (vm_object_t object, vm_pindex_t pindex)
 
vm_page_t vm_page_lookup_unlocked (vm_object_t object, vm_pindex_t pindex)
 
vm_page_t vm_page_relookup (vm_object_t object, vm_pindex_t pindex)
 
static void vm_page_busy_release (vm_page_t m)
 
vm_page_t vm_page_find_least (vm_object_t object, vm_pindex_t pindex)
 
vm_page_t vm_page_next (vm_page_t m)
 
vm_page_t vm_page_prev (vm_page_t m)
 
static bool vm_page_replace_hold (vm_page_t mnew, vm_object_t object, vm_pindex_t pindex, vm_page_t mold)
 
void vm_page_replace (vm_page_t mnew, vm_object_t object, vm_pindex_t pindex, vm_page_t mold)
 
int vm_page_rename (vm_page_t m, vm_object_t new_object, vm_pindex_t new_pindex)
 
vm_page_t vm_page_alloc (vm_object_t object, vm_pindex_t pindex, int req)
 
vm_page_t vm_page_alloc_domain (vm_object_t object, vm_pindex_t pindex, int domain, int req)
 
vm_page_t vm_page_alloc_after (vm_object_t object, vm_pindex_t pindex, int req, vm_page_t mpred)
 
static int _vm_domain_allocate (struct vm_domain *vmd, int req_class, int npages)
 
int vm_domain_allocate (struct vm_domain *vmd, int req, int npages)
 
vm_page_t vm_page_alloc_domain_after (vm_object_t object, vm_pindex_t pindex, int domain, int req, vm_page_t mpred)
 
vm_page_t vm_page_alloc_contig (vm_object_t object, vm_pindex_t pindex, int req, u_long npages, vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary, vm_memattr_t memattr)
 
static vm_page_t vm_page_find_contig_domain (int domain, int req, u_long npages, vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary)
 
vm_page_t vm_page_alloc_contig_domain (vm_object_t object, vm_pindex_t pindex, int domain, int req, u_long npages, vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary, vm_memattr_t memattr)
 
static __always_inline vm_page_t _vm_page_alloc_noobj_domain (int domain, const int freelist, int req)
 
vm_page_t vm_page_alloc_freelist (int freelist, int req)
 
vm_page_t vm_page_alloc_freelist_domain (int domain, int freelist, int req)
 
vm_page_t vm_page_alloc_noobj (int req)
 
vm_page_t vm_page_alloc_noobj_domain (int domain, int req)
 
vm_page_t vm_page_alloc_noobj_contig (int req, u_long npages, vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary, vm_memattr_t memattr)
 
vm_page_t vm_page_alloc_noobj_contig_domain (int domain, int req, u_long npages, vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary, vm_memattr_t memattr)
 
static void vm_page_alloc_check (vm_page_t m)
 
static int vm_page_zone_import (void *arg, void **store, int cnt, int domain, int flags)
 
static void vm_page_zone_release (void *arg, void **store, int cnt)
 
vm_page_t vm_page_scan_contig (u_long npages, vm_page_t m_start, vm_page_t m_end, u_long alignment, vm_paddr_t boundary, int options)
 
static int vm_page_reclaim_run (int req_class, int domain, u_long npages, vm_page_t m_run, vm_paddr_t high)
 
 CTASSERT (powerof2(NRUNS))
 
bool vm_page_reclaim_contig_domain (int domain, int req, u_long npages, vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary)
 
bool vm_page_reclaim_contig (int req, u_long npages, vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary)
 
void vm_domain_set (struct vm_domain *vmd)
 
void vm_domain_clear (struct vm_domain *vmd)
 
void vm_wait_min (void)
 
void vm_wait_severe (void)
 
u_int vm_wait_count (void)
 
int vm_wait_doms (const domainset_t *wdoms, int mflags)
 
void vm_wait_domain (int domain)
 
static int vm_wait_flags (vm_object_t obj, int mflags)
 
void vm_wait (vm_object_t obj)
 
int vm_wait_intr (vm_object_t obj)
 
static int vm_domain_alloc_fail (struct vm_domain *vmd, vm_object_t object, int req)
 
void vm_waitpfault (struct domainset *dset, int timo)
 
static struct vm_pagequeue_vm_page_pagequeue (vm_page_t m, uint8_t queue)
 
static __always_inline bool vm_page_pqstate_fcmpset (vm_page_t m, vm_page_astate_t *old, vm_page_astate_t new)
 
static bool _vm_page_pqstate_commit_dequeue (struct vm_pagequeue *pq, vm_page_t m, vm_page_astate_t *old, vm_page_astate_t new)
 
static bool vm_page_pqstate_commit_dequeue (vm_page_t m, vm_page_astate_t *old, vm_page_astate_t new)
 
static bool _vm_page_pqstate_commit_requeue (struct vm_pagequeue *pq, vm_page_t m, vm_page_astate_t *old, vm_page_astate_t new)
 
static bool vm_page_pqstate_commit_request (vm_page_t m, vm_page_astate_t *old, vm_page_astate_t new)
 
bool vm_page_pqstate_commit (vm_page_t m, vm_page_astate_t *old, vm_page_astate_t new)
 
static void vm_pqbatch_process_page (struct vm_pagequeue *pq, vm_page_t m, uint8_t queue)
 
static void vm_pqbatch_process (struct vm_pagequeue *pq, struct vm_batchqueue *bq, uint8_t queue)
 
void vm_page_pqbatch_submit (vm_page_t m, uint8_t queue)
 
void vm_page_pqbatch_drain (void)
 
void vm_page_dequeue_deferred (vm_page_t m)
 
void vm_page_dequeue (vm_page_t m)
 
static void vm_page_enqueue (vm_page_t m, uint8_t queue)
 
static bool vm_page_free_prep (vm_page_t m)
 
static void vm_page_free_toq (vm_page_t m)
 
void vm_page_free_pages_toq (struct spglist *free, bool update_wire_count)
 
void vm_page_wire (vm_page_t m)
 
bool vm_page_wire_mapped (vm_page_t m)
 
static void vm_page_unwire_managed (vm_page_t m, uint8_t nqueue, bool noreuse)
 
void vm_page_unwire (vm_page_t m, uint8_t nqueue)
 
bool vm_page_unwire_noq (vm_page_t m)
 
static __always_inline void vm_page_mvqueue (vm_page_t m, const uint8_t nqueue, const uint16_t nflag)
 
void vm_page_activate (vm_page_t m)
 
void vm_page_deactivate (vm_page_t m)
 
void vm_page_deactivate_noreuse (vm_page_t m)
 
void vm_page_launder (vm_page_t m)
 
void vm_page_unswappable (vm_page_t m)
 
static void vm_page_release_toq (vm_page_t m, uint8_t nqueue, const bool noreuse)
 
void vm_page_release (vm_page_t m, int flags)
 
void vm_page_release_locked (vm_page_t m, int flags)
 
static bool vm_page_try_blocked_op (vm_page_t m, void(*op)(vm_page_t))
 
bool vm_page_try_remove_all (vm_page_t m)
 
bool vm_page_try_remove_write (vm_page_t m)
 
void vm_page_advise (vm_page_t m, int advice)
 
static void vm_page_grab_release (vm_page_t m, int allocflags)
 
static bool vm_page_grab_sleep (vm_object_t object, vm_page_t m, vm_pindex_t pindex, const char *wmesg, int allocflags, bool locked)
 
static void vm_page_grab_check (int allocflags)
 
static int vm_page_grab_pflags (int allocflags)
 
vm_page_t vm_page_grab (vm_object_t object, vm_pindex_t pindex, int allocflags)
 
static bool vm_page_acquire_unlocked (vm_object_t object, vm_pindex_t pindex, vm_page_t prev, vm_page_t *mp, int allocflags)
 
vm_page_t vm_page_grab_unlocked (vm_object_t object, vm_pindex_t pindex, int allocflags)
 
int vm_page_grab_valid (vm_page_t *mp, vm_object_t object, vm_pindex_t pindex, int allocflags)
 
int vm_page_grab_valid_unlocked (vm_page_t *mp, vm_object_t object, vm_pindex_t pindex, int allocflags)
 
int vm_page_grab_pages (vm_object_t object, vm_pindex_t pindex, int allocflags, vm_page_t *ma, int count)
 
int vm_page_grab_pages_unlocked (vm_object_t object, vm_pindex_t pindex, int allocflags, vm_page_t *ma, int count)
 
vm_page_bits_t vm_page_bits (int base, int size)
 
void vm_page_bits_set (vm_page_t m, vm_page_bits_t *bits, vm_page_bits_t set)
 
static void vm_page_bits_clear (vm_page_t m, vm_page_bits_t *bits, vm_page_bits_t clear)
 
static vm_page_bits_t vm_page_bits_swap (vm_page_t m, vm_page_bits_t *bits, vm_page_bits_t newbits)
 
void vm_page_set_valid_range (vm_page_t m, int base, int size)
 
vm_page_bits_t vm_page_set_dirty (vm_page_t m)
 
static __inline void vm_page_clear_dirty_mask (vm_page_t m, vm_page_bits_t pagebits)
 
void vm_page_set_validclean (vm_page_t m, int base, int size)
 
void vm_page_clear_dirty (vm_page_t m, int base, int size)
 
void vm_page_set_invalid (vm_page_t m, int base, int size)
 
void vm_page_invalid (vm_page_t m)
 
void vm_page_zero_invalid (vm_page_t m, boolean_t setvalid)
 
int vm_page_is_valid (vm_page_t m, int base, int size)
 
bool vm_page_ps_test (vm_page_t m, int flags, vm_page_t skip_m)
 
void vm_page_test_dirty (vm_page_t m)
 
void vm_page_valid (vm_page_t m)
 
void vm_page_lock_KBI (vm_page_t m, const char *file, int line)
 
void vm_page_unlock_KBI (vm_page_t m, const char *file, int line)
 
int vm_page_trylock_KBI (vm_page_t m, const char *file, int line)
 

Variables

struct vm_domain vm_dom [MAXMEMDOM]
 
struct mtx_padalign __exclusive_cache_line pa_lock [PA_LOCK_COUNT]
 
struct mtx_padalign __exclusive_cache_line vm_domainset_lock
 
domainset_t __exclusive_cache_line vm_min_domains
 
domainset_t __exclusive_cache_line vm_severe_domains
 
static int vm_min_waiters
 
static int vm_severe_waiters
 
static int vm_pageproc_waiters
 
vm_page_t bogus_page
 
vm_page_t vm_page_array
 
long vm_page_array_size
 
long first_page
 
struct bitset * vm_page_dump
 
long vm_page_dump_pages
 

Macro Definition Documentation

◆ MIN_RECLAIM

#define MIN_RECLAIM   8

Definition at line 2998 of file vm_page.c.

◆ NRUNS

#define NRUNS   16

Definition at line 2992 of file vm_page.c.

◆ RUN_INDEX

#define RUN_INDEX (   count)    ((count) & (NRUNS - 1))

Definition at line 2996 of file vm_page.c.

◆ VPA_FLAGS

#define VPA_FLAGS
Value:
VM_ALLOC_NOWAIT | VM_ALLOC_NOBUSY | \
VM_ALLOC_SBUSY | VM_ALLOC_WIRED | \
VM_ALLOC_NODUMP | VM_ALLOC_ZERO | VM_ALLOC_COUNT_MASK)
#define VM_ALLOC_CLASS_MASK
Definition: vm_page.h:538
#define VM_ALLOC_WAITFAIL
Definition: vm_page.h:540
#define VM_ALLOC_WIRED
Definition: vm_page.h:541
#define VM_ALLOC_COUNT_MASK
Definition: vm_page.h:554
#define VM_ALLOC_ZERO
Definition: vm_page.h:542
#define VM_ALLOC_NOBUSY
Definition: vm_page.h:545

◆ VPAC_FLAGS

#define VPAC_FLAGS   (VPA_FLAGS | VM_ALLOC_NORECLAIM)

◆ VPAN_FLAGS

#define VPAN_FLAGS
Value:
VM_ALLOC_NOWAIT | VM_ALLOC_WAITOK | \
VM_ALLOC_NOBUSY | VM_ALLOC_WIRED | \
VM_ALLOC_NODUMP | VM_ALLOC_ZERO | VM_ALLOC_COUNT_MASK)
#define VM_ALLOC_WAITOK
Definition: vm_page.h:539

◆ VPANC_FLAGS

#define VPANC_FLAGS   (VPAN_FLAGS | VM_ALLOC_NORECLAIM)

◆ VPSC_ANY

#define VPSC_ANY   0 /* No restrictions. */

Definition at line 2602 of file vm_page.c.

◆ VPSC_NORESERV

#define VPSC_NORESERV   1 /* Skip reservations; implies VPSC_NOSUPER. */

Definition at line 2603 of file vm_page.c.

◆ VPSC_NOSUPER

#define VPSC_NOSUPER   2 /* Skip superpages. */

Definition at line 2604 of file vm_page.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ _vm_domain_allocate()

static int _vm_domain_allocate ( struct vm_domain vmd,
int  req_class,
int  npages 
)
static

◆ _vm_page_alloc_noobj_domain()

static __always_inline vm_page_t _vm_page_alloc_noobj_domain ( int  domain,
const int  freelist,
int  req 
)
static

◆ _vm_page_busy_sleep()

static bool _vm_page_busy_sleep ( vm_object_t  obj,
vm_page_t  m,
vm_pindex_t  pindex,
const char *  wmesg,
int  allocflags,
bool  locked 
)
static

◆ _vm_page_pagequeue()

static struct vm_pagequeue * _vm_page_pagequeue ( vm_page_t  m,
uint8_t  queue 
)
static

Definition at line 3408 of file vm_page.c.

References vm_pagequeue_domain(), and vmd_pagequeues.

Referenced by vm_page_pqstate_commit_dequeue(), and vm_pqbatch_process_page().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _vm_page_pqstate_commit_dequeue()

static bool _vm_page_pqstate_commit_dequeue ( struct vm_pagequeue pq,
vm_page_t  m,
vm_page_astate_t old,
vm_page_astate_t  new 
)
static

Definition at line 3443 of file vm_page.c.

References vm_page_astate::flags, PGA_ENQUEUED, PQ_NONE, vm_pagequeue::pq_pl, vm_page_astate::queue, vm_page_pqstate_fcmpset(), vm_pagequeue_assert_locked, vm_pagequeue_cnt_dec, and vm_pagequeue_cnt_inc.

Referenced by vm_page_pqstate_commit_dequeue(), and vm_pqbatch_process_page().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _vm_page_pqstate_commit_requeue()

static bool _vm_page_pqstate_commit_requeue ( struct vm_pagequeue pq,
vm_page_t  m,
vm_page_astate_t old,
vm_page_astate_t  new 
)
static

◆ COUNTER_U64_DEFINE_EARLY() [1/3]

static COUNTER_U64_DEFINE_EARLY ( pqstate_commit_retries  )
static

◆ COUNTER_U64_DEFINE_EARLY() [2/3]

static COUNTER_U64_DEFINE_EARLY ( queue_nops  )
static

◆ COUNTER_U64_DEFINE_EARLY() [3/3]

static COUNTER_U64_DEFINE_EARLY ( queue_ops  )
static

◆ CTASSERT()

CTASSERT ( powerof2(NRUNS )

◆ DPCPU_DEFINE_STATIC()

DPCPU_DEFINE_STATIC ( struct vm_batchqueue  ,
pqbatch  [MAXMEMDOM][PQ_COUNT] 
)

◆ PHYS_TO_VM_PAGE()

vm_page_t PHYS_TO_VM_PAGE ( vm_paddr_t  pa)

Definition at line 1221 of file vm_page.c.

References first_page, vm_page_array, vm_page_array_size, vm_phys_fictitious_to_vm_page(), and vm_phys_paddr_to_vm_page().

Referenced by kern_mincore(), kmem_bootstrap_free(), pcpu_page_free(), startup_free(), v2sizep(), v2sizev(), vm_phys_init(), vsetzoneslab(), and vtozoneslab().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SYSCTL_COUNTER_U64() [1/3]

SYSCTL_COUNTER_U64 ( _vm_stats_page  ,
OID_AUTO  ,
pqstate_commit_retries  ,
CTLFLAG_RD  ,
pqstate_commit_retries,
"Number of failed per-page atomic queue state updates"   
)

◆ SYSCTL_COUNTER_U64() [2/3]

SYSCTL_COUNTER_U64 ( _vm_stats_page  ,
OID_AUTO  ,
queue_nops  ,
CTLFLAG_RD  ,
queue_nops,
"Number of batched queue operations with no effects"   
)

◆ SYSCTL_COUNTER_U64() [3/3]

SYSCTL_COUNTER_U64 ( _vm_stats_page  ,
OID_AUTO  ,
queue_ops  ,
CTLFLAG_RD  ,
queue_ops,
"Number of batched queue operations"   
)

◆ SYSCTL_NODE()

static SYSCTL_NODE ( _vm_stats  ,
OID_AUTO  ,
page  ,
CTLFLAG_RD|  CTLFLAG_MPSAFE,
,
"VM page statistics"   
)
static

◆ sysctl_vm_page_blacklist()

static int sysctl_vm_page_blacklist ( SYSCTL_HANDLER_ARGS  )
static

Definition at line 401 of file vm_page.c.

◆ SYSINIT()

SYSINIT ( vm_page2  ,
SI_SUB_VM_CONF  ,
SI_ORDER_ANY  ,
vm_page_init_cache_zones  ,
NULL   
)

◆ TAILQ_HEAD()

static TAILQ_HEAD ( SYSINIT vm_page)
static

Definition at line 162 of file vm_page.c.

◆ vm_domain_alloc_fail()

static int vm_domain_alloc_fail ( struct vm_domain vmd,
vm_object_t  object,
int  req 
)
static

◆ vm_domain_allocate()

int vm_domain_allocate ( struct vm_domain vmd,
int  req,
int  npages 
)

Definition at line 1989 of file vm_page.c.

References _vm_domain_allocate(), pageproc, VM_ALLOC_CLASS_MASK, VM_ALLOC_INTERRUPT, and VM_ALLOC_SYSTEM.

Referenced by _vm_page_alloc_noobj_domain(), vm_page_alloc_domain_after(), and vm_page_find_contig_domain().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_domain_clear()

void vm_domain_clear ( struct vm_domain vmd)

◆ vm_domain_set()

void vm_domain_set ( struct vm_domain vmd)

Definition at line 3144 of file vm_page.c.

References vm_domainset_lock, vm_min_domains, vm_paging_min(), vm_paging_severe(), vm_severe_domains, vm_domain::vmd_domain, vm_domain::vmd_minset, and vm_domain::vmd_severeset.

Referenced by _vm_domain_allocate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_acquire_unlocked()

static bool vm_page_acquire_unlocked ( vm_object_t  object,
vm_pindex_t  pindex,
vm_page_t  prev,
vm_page_t *  mp,
int  allocflags 
)
static

◆ vm_page_activate()

void vm_page_activate ( vm_page_t  m)

Definition at line 4159 of file vm_page.c.

References PGA_REQUEUE, PQ_ACTIVE, and vm_page_mvqueue().

Referenced by swp_pager_async_iodone(), vm_fault(), vm_fault_copy_entry(), vm_fault_populate(), vm_page_advise(), vm_page_readahead_finish(), and vm_pageout_flush().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_advise()

void vm_page_advise ( vm_page_t  m,
int  advice 
)

Definition at line 4370 of file vm_page.c.

References PGA_REFERENCED, pmap_is_modified(), VM_OBJECT_ASSERT_WLOCKED, vm_page_activate(), vm_page_aflag_clear(), vm_page_assert_xbusied, vm_page_deactivate_noreuse(), vm_page_dirty(), vm_page_in_laundry(), vm_page_launder(), and vm_page_undirty().

Referenced by vm_object_madvise().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_alloc()

vm_page_t vm_page_alloc ( vm_object_t  object,
vm_pindex_t  pindex,
int  req 
)

Definition at line 1908 of file vm_page.c.

References vm_page::object, vm_page::pindex, vm_object::rtree, vm_page_alloc_after(), and vm_radix_lookup_le().

Referenced by swap_pager_getpages_locked(), swap_pager_swapoff_object(), vm_fault_allocate(), vm_fault_copy_entry(), vm_page_grab(), vm_page_grab_valid(), and vnode_pager_generic_getpages().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_alloc_after()

vm_page_t vm_page_alloc_after ( vm_object_t  object,
vm_pindex_t  pindex,
int  req,
vm_page_t  mpred 
)

Definition at line 1931 of file vm_page.c.

References vm_domainset_iter_page(), vm_domainset_iter_page_init(), and vm_page_alloc_domain_after().

Referenced by vm_page_alloc(), and vm_page_grab_pages().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_alloc_check()

static void vm_page_alloc_check ( vm_page_t  m)
static

Definition at line 2537 of file vm_page.c.

References PGA_QUEUE_STATE_MASK, PQ_NONE, and vm_page_busy_freed.

Referenced by _vm_page_alloc_noobj_domain(), vm_page_alloc_contig_domain(), vm_page_alloc_domain_after(), and vm_page_alloc_noobj_contig_domain().

Here is the caller graph for this function:

◆ vm_page_alloc_contig()

vm_page_t vm_page_alloc_contig ( vm_object_t  object,
vm_pindex_t  pindex,
int  req,
u_long  npages,
vm_paddr_t  low,
vm_paddr_t  high,
u_long  alignment,
vm_paddr_t  boundary,
vm_memattr_t  memattr 
)

Definition at line 2162 of file vm_page.c.

References vm_domainset_iter_page(), vm_domainset_iter_page_init(), and vm_page_alloc_contig_domain().

Here is the call graph for this function:

◆ vm_page_alloc_contig_domain()

vm_page_t vm_page_alloc_contig_domain ( vm_object_t  object,
vm_pindex_t  pindex,
int  domain,
int  req,
u_long  npages,
vm_paddr_t  low,
vm_paddr_t  high,
u_long  alignment,
vm_paddr_t  boundary,
vm_memattr_t  memattr 
)

◆ vm_page_alloc_domain()

vm_page_t vm_page_alloc_domain ( vm_object_t  object,
vm_pindex_t  pindex,
int  domain,
int  req 
)

Definition at line 1916 of file vm_page.c.

References vm_page::object, vm_page::pindex, vm_object::rtree, vm_page_alloc_domain_after(), and vm_radix_lookup_le().

Here is the call graph for this function:

◆ vm_page_alloc_domain_after()

◆ vm_page_alloc_freelist()

vm_page_t vm_page_alloc_freelist ( int  freelist,
int  req 
)

Definition at line 2402 of file vm_page.c.

References vm_domainset_iter_page(), vm_domainset_iter_page_init(), and vm_page_alloc_freelist_domain().

Here is the call graph for this function:

◆ vm_page_alloc_freelist_domain()

vm_page_t vm_page_alloc_freelist_domain ( int  domain,
int  freelist,
int  req 
)

Definition at line 2419 of file vm_page.c.

References _vm_page_alloc_noobj_domain().

Referenced by vm_page_alloc_freelist().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_alloc_noobj()

vm_page_t vm_page_alloc_noobj ( int  req)

Definition at line 2428 of file vm_page.c.

References vm_domainset_iter_page(), vm_domainset_iter_page_init(), and vm_page_alloc_noobj_domain().

Referenced by kmem_init_zero_region(), and pcpu_page_alloc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_alloc_noobj_contig()

vm_page_t vm_page_alloc_noobj_contig ( int  req,
u_long  npages,
vm_paddr_t  low,
vm_paddr_t  high,
u_long  alignment,
vm_paddr_t  boundary,
vm_memattr_t  memattr 
)

Definition at line 2451 of file vm_page.c.

References vm_domainset_iter_page(), vm_domainset_iter_page_init(), and vm_page_alloc_noobj_contig_domain().

Referenced by vm_page_reclaim_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_alloc_noobj_contig_domain()

vm_page_t vm_page_alloc_noobj_contig_domain ( int  domain,
int  req,
u_long  npages,
vm_paddr_t  low,
vm_paddr_t  high,
u_long  alignment,
vm_paddr_t  boundary,
vm_memattr_t  memattr 
)

◆ vm_page_alloc_noobj_domain()

vm_page_t vm_page_alloc_noobj_domain ( int  domain,
int  req 
)

Definition at line 2445 of file vm_page.c.

References _vm_page_alloc_noobj_domain().

Referenced by noobj_alloc(), pcpu_page_alloc(), and vm_page_alloc_noobj().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_array_alloc()

static vm_paddr_t vm_page_array_alloc ( vm_offset_t *  vaddr,
vm_paddr_t  end,
vm_paddr_t  page_range 
)
static

Definition at line 519 of file vm_page.c.

References pmap_map(), vm_page_array, vm_page_array_size, VM_PROT_READ, and VM_PROT_WRITE.

Referenced by vm_page_startup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_bits()

vm_page_bits_t vm_page_bits ( int  base,
int  size 
)

◆ vm_page_bits_clear()

static void vm_page_bits_clear ( vm_page_t  m,
vm_page_bits_t *  bits,
vm_page_bits_t  clear 
)
inlinestatic

Definition at line 4983 of file vm_page.c.

Referenced by vm_page_clear_dirty_mask(), vm_page_invalid(), and vm_page_set_invalid().

Here is the caller graph for this function:

◆ vm_page_bits_set()

void vm_page_bits_set ( vm_page_t  m,
vm_page_bits_t *  bits,
vm_page_bits_t  set 
)

Definition at line 4950 of file vm_page.c.

Referenced by vm_page_set_valid_range(), vm_page_set_validclean(), vm_page_valid(), and vnode_pager_input_smlfs().

Here is the caller graph for this function:

◆ vm_page_bits_swap()

static vm_page_bits_t vm_page_bits_swap ( vm_page_t  m,
vm_page_bits_t *  bits,
vm_page_bits_t  newbits 
)
inlinestatic

Definition at line 5016 of file vm_page.c.

Referenced by vm_page_set_dirty().

Here is the caller graph for this function:

◆ vm_page_blacklist_add()

bool vm_page_blacklist_add ( vm_paddr_t  pa,
bool  verbose 
)

Definition at line 326 of file vm_page.c.

References vm_domain_free_lock, vm_domain_free_unlock, vm_domain_freecnt_inc(), vm_pagequeue_domain(), vm_phys_paddr_to_vm_page(), and vm_phys_unfree_page().

Referenced by vm_page_blacklist_check().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_blacklist_check()

static void vm_page_blacklist_check ( char *  list,
char *  end 
)
static

Definition at line 357 of file vm_page.c.

References vm_page_blacklist_add(), and vm_page_blacklist_next().

Referenced by vm_page_startup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_blacklist_load()

static void vm_page_blacklist_load ( char **  list,
char **  end 
)
static

Definition at line 378 of file vm_page.c.

Referenced by vm_page_startup().

Here is the caller graph for this function:

◆ vm_page_blacklist_next()

static vm_paddr_t vm_page_blacklist_next ( char **  list,
char *  end 
)
static

Definition at line 273 of file vm_page.c.

Referenced by vm_page_blacklist_check().

Here is the caller graph for this function:

◆ vm_page_busy_acquire()

bool vm_page_busy_acquire ( vm_page_t  m,
int  allocflags 
)

Definition at line 869 of file vm_page.c.

References _vm_page_busy_sleep(), VM_ALLOC_NOWAIT, VM_ALLOC_WAITFAIL, VM_OBJECT_WLOCK, VM_OBJECT_WOWNED, vm_page_tryacquire(), and vm_page_wired().

Referenced by dev_pager_dealloc(), sg_pager_dealloc(), swap_pager_swapoff_object(), vm_fault_copy_entry(), and vm_object_page_clean().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_busy_downgrade()

void vm_page_busy_downgrade ( vm_page_t  m)

Definition at line 909 of file vm_page.c.

References vm_page_assert_xbusied, vm_page_busy_fetch, VPB_BIT_WAITERS, and VPB_SHARERS_WORD.

Referenced by vm_page_grab_valid(), and vm_pageout_flush().

Here is the caller graph for this function:

◆ vm_page_busy_free()

static void vm_page_busy_free ( vm_page_t  m)
static

Definition at line 1195 of file vm_page.c.

References VPB_BIT_WAITERS, and VPB_FREED.

Referenced by vm_page_free_prep(), and vm_page_putfake().

Here is the caller graph for this function:

◆ vm_page_busy_release()

static void vm_page_busy_release ( vm_page_t  m)
static

◆ vm_page_busy_sleep()

bool vm_page_busy_sleep ( vm_page_t  m,
const char *  wmesg,
int  allocflags 
)

Definition at line 1014 of file vm_page.c.

References _vm_page_busy_sleep(), and VM_OBJECT_ASSERT_LOCKED.

Referenced by vm_fault_busy_sleep(), vm_object_collapse_scan_wait(), vm_object_madvise(), vm_object_page_remove(), vm_object_split(), and vm_object_unwire().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_busy_sleep_unlocked()

void vm_page_busy_sleep_unlocked ( vm_object_t  obj,
vm_page_t  m,
vm_pindex_t  pindex,
const char *  wmesg,
int  allocflags 
)

Definition at line 1038 of file vm_page.c.

References _vm_page_busy_sleep(), vm_page::pindex, and VM_OBJECT_ASSERT_UNLOCKED.

Here is the call graph for this function:

◆ vm_page_busy_tryupgrade()

int vm_page_busy_tryupgrade ( vm_page_t  m)

◆ vm_page_clear_dirty()

void vm_page_clear_dirty ( vm_page_t  m,
int  base,
int  size 
)

Definition at line 5264 of file vm_page.c.

References vm_page_bits(), and vm_page_clear_dirty_mask().

Referenced by vnode_pager_generic_putpages(), vnode_pager_subpage_purge(), and vnode_pager_undirty_pages().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_clear_dirty_mask()

static __inline void vm_page_clear_dirty_mask ( vm_page_t  m,
vm_page_bits_t  pagebits 
)
static

Definition at line 5154 of file vm_page.c.

References vm_page_assert_busied, vm_page_bits_clear(), and vm_page_xbusied.

Referenced by vm_page_clear_dirty(), and vm_page_set_validclean().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_deactivate()

void vm_page_deactivate ( vm_page_t  m)

Definition at line 4170 of file vm_page.c.

References PGA_REQUEUE, PQ_INACTIVE, and vm_page_mvqueue().

Referenced by fault_page_release(), vm_fault_dontneed(), vm_fault_populate_cleanup(), vm_page_readahead_finish(), vm_page_reclaim_run(), and vm_swapout_object_deactivate_page().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_deactivate_noreuse()

void vm_page_deactivate_noreuse ( vm_page_t  m)

Definition at line 4177 of file vm_page.c.

References PGA_REQUEUE_HEAD, PQ_INACTIVE, and vm_page_mvqueue().

Referenced by swp_pager_async_iodone(), vm_object_page_noreuse(), vm_page_advise(), and vm_pageout_flush().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_dequeue()

void vm_page_dequeue ( vm_page_t  m)

◆ vm_page_dequeue_deferred()

void vm_page_dequeue_deferred ( vm_page_t  m)

Definition at line 3731 of file vm_page.c.

References vm_page_astate::flags, PGA_DEQUEUE, PGA_QUEUE_STATE_MASK, PQ_NONE, vm_page_astate::queue, vm_page_astate_load(), and vm_page_pqstate_commit_request().

Referenced by vm_page_free_prep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_dirty_KBI()

void vm_page_dirty_KBI ( vm_page_t  m)

Definition at line 1413 of file vm_page.c.

References vm_page_all_valid().

Referenced by vm_page_dirty().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_domain_init()

◆ vm_page_enqueue()

static void vm_page_enqueue ( vm_page_t  m,
uint8_t  queue 
)
static

Definition at line 3779 of file vm_page.c.

References PGA_QUEUE_STATE_MASK, PGA_REQUEUE, PQ_NONE, vm_page_aflag_set(), and vm_page_pqbatch_submit().

Referenced by vm_page_unswappable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_find_contig_domain()

static vm_page_t vm_page_find_contig_domain ( int  domain,
int  req,
u_long  npages,
vm_paddr_t  low,
vm_paddr_t  high,
u_long  alignment,
vm_paddr_t  boundary 
)
static

Definition at line 2182 of file vm_page.c.

References VM_ALLOC_NORECLAIM, VM_DOMAIN, vm_domain_allocate(), vm_domain_free_lock, vm_domain_free_unlock, vm_domain_freecnt_inc(), and vm_phys_alloc_contig().

Referenced by vm_page_alloc_contig_domain(), and vm_page_alloc_noobj_contig_domain().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_find_least()

vm_page_t vm_page_find_least ( vm_object_t  object,
vm_pindex_t  pindex 
)

◆ vm_page_free()

◆ vm_page_free_invalid()

void vm_page_free_invalid ( vm_page_t  m)

Definition at line 1375 of file vm_page.c.

References VM_OBJECT_ASSERT_WLOCKED, vm_page_free(), vm_page_none_valid(), vm_page_remove(), and vm_page_xbusy_claim.

Referenced by vnode_pager_generic_getpages_done().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_free_pages_toq()

void vm_page_free_pages_toq ( struct spglist *  free,
bool  update_wire_count 
)

Definition at line 3941 of file vm_page.c.

References vm_page_free_toq().

Here is the call graph for this function:

◆ vm_page_free_prep()

static bool vm_page_free_prep ( vm_page_t  m)
static

◆ vm_page_free_toq()

static void vm_page_free_toq ( vm_page_t  m)
static

◆ vm_page_free_zero()

void vm_page_free_zero ( vm_page_t  m)

Definition at line 1339 of file vm_page.c.

References PG_ZERO, and vm_page_free_toq().

Here is the call graph for this function:

◆ vm_page_getfake()

vm_page_t vm_page_getfake ( vm_paddr_t  paddr,
vm_memattr_t  memattr 
)

Definition at line 1252 of file vm_page.c.

References uma_zalloc(), and vm_page_initfake().

Referenced by old_dev_pager_fault(), and sg_pager_getpages().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_grab()

vm_page_t vm_page_grab ( vm_object_t  object,
vm_pindex_t  pindex,
int  allocflags 
)

◆ vm_page_grab_check()

static void vm_page_grab_check ( int  allocflags)
inlinestatic

Definition at line 4466 of file vm_page.c.

References VM_ALLOC_IGN_SBUSY, VM_ALLOC_NOBUSY, VM_ALLOC_SBUSY, and VM_ALLOC_WIRED.

Referenced by vm_page_acquire_unlocked(), vm_page_grab(), vm_page_grab_pages(), vm_page_grab_pages_unlocked(), and vm_page_grab_unlocked().

Here is the caller graph for this function:

◆ vm_page_grab_pages()

int vm_page_grab_pages ( vm_object_t  object,
vm_pindex_t  pindex,
int  allocflags,
vm_page_t *  ma,
int  count 
)

◆ vm_page_grab_pages_unlocked()

int vm_page_grab_pages_unlocked ( vm_object_t  object,
vm_pindex_t  pindex,
int  allocflags,
vm_page_t *  ma,
int  count 
)

◆ vm_page_grab_pflags()

static int vm_page_grab_pflags ( int  allocflags)
inlinestatic

Definition at line 4482 of file vm_page.c.

References VM_ALLOC_IGN_SBUSY, VM_ALLOC_NOBUSY, VM_ALLOC_NOWAIT, VM_ALLOC_SBUSY, VM_ALLOC_WAITFAIL, and VM_ALLOC_WAITOK.

Referenced by vm_page_grab(), and vm_page_grab_pages().

Here is the caller graph for this function:

◆ vm_page_grab_release()

static void vm_page_grab_release ( vm_page_t  m,
int  allocflags 
)
inlinestatic

Definition at line 4417 of file vm_page.c.

References VM_ALLOC_IGN_SBUSY, VM_ALLOC_NOBUSY, vm_page_sunbusy(), and vm_page_xunbusy.

Referenced by vm_page_acquire_unlocked(), vm_page_grab(), vm_page_grab_pages(), vm_page_grab_pages_unlocked(), and vm_page_grab_valid_unlocked().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_grab_sleep()

static bool vm_page_grab_sleep ( vm_object_t  object,
vm_page_t  m,
vm_pindex_t  pindex,
const char *  wmesg,
int  allocflags,
bool  locked 
)
static

Definition at line 4439 of file vm_page.c.

References _vm_page_busy_sleep(), VM_ALLOC_NOCREAT, VM_ALLOC_NOWAIT, VM_ALLOC_WAITFAIL, VM_OBJECT_WLOCK, and vm_page_reference().

Referenced by vm_page_acquire_unlocked(), vm_page_grab(), vm_page_grab_pages(), and vm_page_grab_valid().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_grab_unlocked()

vm_page_t vm_page_grab_unlocked ( vm_object_t  object,
vm_pindex_t  pindex,
int  allocflags 
)

Definition at line 4612 of file vm_page.c.

References VM_ALLOC_NOCREAT, VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_acquire_unlocked(), vm_page_grab(), and vm_page_grab_check().

Here is the call graph for this function:

◆ vm_page_grab_valid()

◆ vm_page_grab_valid_unlocked()

int vm_page_grab_valid_unlocked ( vm_page_t *  mp,
vm_object_t  object,
vm_pindex_t  pindex,
int  allocflags 
)

◆ vm_page_init_cache_zones()

static void vm_page_init_cache_zones ( void *dummy  __unused)
static

◆ vm_page_init_marker()

void vm_page_init_marker ( vm_page_t  marker,
int  queue,
uint16_t  aflags 
)

Definition at line 428 of file vm_page.c.

References PG_MARKER, and VPB_CURTHREAD_EXCLUSIVE.

Referenced by vm_page_domain_init(), and vm_pageout_scan_inactive().

Here is the caller graph for this function:

◆ vm_page_init_page()

void vm_page_init_page ( vm_page_t  m,
vm_paddr_t  pa,
int  segind 
)

Definition at line 500 of file vm_page.c.

References pmap_page_init(), PQ_NONE, and VPB_FREED.

Referenced by vm_page_startup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_initfake()

void vm_page_initfake ( vm_page_t  m,
vm_paddr_t  paddr,
vm_memattr_t  memattr 
)

Definition at line 1262 of file vm_page.c.

References PG_FICTITIOUS, pmap_page_init(), PQ_NONE, VPB_CURTHREAD_EXCLUSIVE, and VPO_UNMANAGED.

Referenced by vm_page_getfake(), and vm_phys_fictitious_init_range().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_insert()

int vm_page_insert ( vm_page_t  m,
vm_object_t  object,
vm_pindex_t  pindex 
)

Definition at line 1429 of file vm_page.c.

References vm_page::object, vm_page::pindex, vm_object::rtree, VM_OBJECT_ASSERT_WLOCKED, vm_page_insert_after(), and vm_radix_lookup_le().

Here is the call graph for this function:

◆ vm_page_insert_after()

static int vm_page_insert_after ( vm_page_t  m,
vm_object_t  object,
vm_pindex_t  pindex,
vm_page_t  mpred 
)
static

Definition at line 1449 of file vm_page.c.

References vm_object::memq, vm_page::object, vm_page::pindex, vm_object::rtree, VM_OBJECT_ASSERT_WLOCKED, vm_page_insert_radixdone(), vm_radix_insert(), and VPRC_OBJREF.

Referenced by vm_page_alloc_contig_domain(), vm_page_alloc_domain_after(), and vm_page_insert().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_insert_radixdone()

static void vm_page_insert_radixdone ( vm_page_t  m,
vm_object_t  object,
vm_page_t  mpred 
)
static

Definition at line 1501 of file vm_page.c.

References vm_object::handle, vm_object::memq, vm_page::object, OBJT_VNODE, vm_object::resident_page_count, vm_object::type, VM_OBJECT_ASSERT_WLOCKED, vm_object_set_writeable_dirty(), and VPRC_OBJREF.

Referenced by vm_page_insert_after(), and vm_page_rename().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_invalid()

void vm_page_invalid ( vm_page_t  m)

Definition at line 5318 of file vm_page.c.

References VM_OBJECT_ASSERT_WLOCKED, vm_page_assert_busied, vm_page_bits_clear(), and vm_page_xbusied.

Referenced by swp_pager_async_iodone(), and vm_object_page_remove().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_is_valid()

int vm_page_is_valid ( vm_page_t  m,
int  base,
int  size 
)

Definition at line 5386 of file vm_page.c.

References vm_page_bits().

Here is the call graph for this function:

◆ vm_page_launder()

void vm_page_launder ( vm_page_t  m)

Definition at line 4187 of file vm_page.c.

References PGA_REQUEUE, PQ_LAUNDRY, and vm_page_mvqueue().

Referenced by swp_pager_force_dirty(), vm_page_advise(), vm_pageout_launder(), and vm_pageout_scan_inactive().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_lock_KBI()

void vm_page_lock_KBI ( vm_page_t  m,
const char *  file,
int  line 
)

Definition at line 5464 of file vm_page.c.

References vm_page_lockptr.

◆ vm_page_lookup()

◆ vm_page_lookup_unlocked()

vm_page_t vm_page_lookup_unlocked ( vm_object_t  object,
vm_pindex_t  pindex 
)

Definition at line 1643 of file vm_page.c.

References vm_page::object, vm_page::pindex, vm_object::rtree, and vm_radix_lookup_unlocked().

Here is the call graph for this function:

◆ vm_page_mvqueue()

static __always_inline void vm_page_mvqueue ( vm_page_t  m,
const uint8_t  nqueue,
const uint16_t  nflag 
)
static

◆ vm_page_next()

vm_page_t vm_page_next ( vm_page_t  m)

◆ vm_page_object_remove()

static void vm_page_object_remove ( vm_page_t  m)
static

◆ vm_page_pqbatch_drain()

void vm_page_pqbatch_drain ( void  )

Definition at line 3692 of file vm_page.c.

References PQ_COUNT, VM_DOMAIN, vm_ndomains, vm_pagequeue_lock, vm_pagequeue_unlock, vm_pqbatch_process(), and vm_domain::vmd_pagequeues.

Referenced by vm_daemon().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_pqbatch_submit()

void vm_page_pqbatch_submit ( vm_page_t  m,
uint8_t  queue 
)

Definition at line 3657 of file vm_page.c.

References PQ_COUNT, vm_batchqueue_insert(), VM_DOMAIN, vm_page_domain(), vm_pagequeue_lock, vm_pagequeue_unlock, vm_pqbatch_process(), and vm_pqbatch_process_page().

Referenced by vm_page_enqueue(), vm_page_pqstate_commit(), vm_page_pqstate_commit_request(), and vm_pageout_defer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_pqstate_commit()

bool vm_page_pqstate_commit ( vm_page_t  m,
vm_page_astate_t old,
vm_page_astate_t  new 
)

◆ vm_page_pqstate_commit_dequeue()

static bool vm_page_pqstate_commit_dequeue ( vm_page_t  m,
vm_page_astate_t old,
vm_page_astate_t  new 
)
static

Definition at line 3484 of file vm_page.c.

References vm_page_astate::_bits, _vm_page_pagequeue(), _vm_page_pqstate_commit_dequeue(), vm_page_astate::queue, vm_page_astate_load(), vm_pagequeue_lock, and vm_pagequeue_unlock.

Referenced by vm_page_dequeue(), and vm_page_pqstate_commit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_pqstate_commit_request()

static bool vm_page_pqstate_commit_request ( vm_page_t  m,
vm_page_astate_t old,
vm_page_astate_t  new 
)
static

Definition at line 3553 of file vm_page.c.

References vm_page_astate::_bits, PQ_NONE, vm_page_astate::queue, vm_page_pqbatch_submit(), and vm_page_pqstate_fcmpset().

Referenced by vm_page_dequeue_deferred().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_pqstate_fcmpset()

static __always_inline bool vm_page_pqstate_fcmpset ( vm_page_t  m,
vm_page_astate_t old,
vm_page_astate_t  new 
)
static

Definition at line 3424 of file vm_page.c.

References vm_page_astate::_bits, and vm_page_astate_fcmpset().

Referenced by _vm_page_pqstate_commit_dequeue(), _vm_page_pqstate_commit_requeue(), vm_page_pqstate_commit(), and vm_page_pqstate_commit_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_prev()

vm_page_t vm_page_prev ( vm_page_t  m)

Definition at line 1745 of file vm_page.c.

References VM_OBJECT_ASSERT_LOCKED.

Referenced by vm_object_page_collect_flush(), and vm_pageout_cluster().

Here is the caller graph for this function:

◆ vm_page_ps_test()

bool vm_page_ps_test ( vm_page_t  m,
int  flags,
vm_page_t  skip_m 
)

Definition at line 5399 of file vm_page.c.

References PS_ALL_DIRTY, PS_ALL_VALID, PS_NONE_BUSY, VM_OBJECT_ASSERT_LOCKED, and vm_page_busied.

Referenced by vm_fault_soft_fast(), and vm_map_pmap_enter().

Here is the caller graph for this function:

◆ vm_page_putfake()

void vm_page_putfake ( vm_page_t  m)

Definition at line 1293 of file vm_page.c.

References PG_FICTITIOUS, uma_zfree(), vm_page_assert_xbusied, vm_page_busy_free(), and VPO_UNMANAGED.

Referenced by dev_pager_free_page(), and sg_pager_dealloc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_readahead_finish()

void vm_page_readahead_finish ( vm_page_t  m)

Definition at line 1351 of file vm_page.c.

References vm_page_activate(), vm_page_busy_fetch, vm_page_deactivate(), vm_page_none_valid(), vm_page_xunbusy_unchecked, and VPB_BIT_WAITERS.

Referenced by swp_pager_async_iodone(), vm_page_grab_valid(), and vnode_pager_generic_getpages_done().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_reclaim_contig()

bool vm_page_reclaim_contig ( int  req,
u_long  npages,
vm_paddr_t  low,
vm_paddr_t  high,
u_long  alignment,
vm_paddr_t  boundary 
)

Definition at line 3122 of file vm_page.c.

References vm_domainset_iter_page(), vm_domainset_iter_page_init(), and vm_page_reclaim_contig_domain().

Here is the call graph for this function:

◆ vm_page_reclaim_contig_domain()

bool vm_page_reclaim_contig_domain ( int  domain,
int  req,
u_long  npages,
vm_paddr_t  low,
vm_paddr_t  high,
u_long  alignment,
vm_paddr_t  boundary 
)

◆ vm_page_reclaim_run()

◆ vm_page_reference()

void vm_page_reference ( vm_page_t  m)

Definition at line 821 of file vm_page.c.

References PGA_REFERENCED, and vm_page_aflag_set().

Referenced by vm_page_grab_sleep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_release()

void vm_page_release ( vm_page_t  m,
int  flags 
)

Definition at line 4256 of file vm_page.c.

References PQ_INACTIVE, VM_OBJECT_TRYWLOCK, VM_OBJECT_WUNLOCK, vm_page_busied, vm_page_release_locked(), vm_page_unwire_managed(), VPO_UNMANAGED, and VPR_TRYFREE.

Here is the call graph for this function:

◆ vm_page_release_locked()

void vm_page_release_locked ( vm_page_t  m,
int  flags 
)

Definition at line 4284 of file vm_page.c.

References PQ_INACTIVE, VM_OBJECT_ASSERT_WLOCKED, vm_page_free(), vm_page_release_toq(), vm_page_tryxbusy(), vm_page_unwire_noq(), vm_page_wired(), vm_page_xunbusy, VPO_UNMANAGED, and VPR_TRYFREE.

Referenced by vm_page_release().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_release_toq()

static void vm_page_release_toq ( vm_page_t  m,
uint8_t  nqueue,
const bool  noreuse 
)
static

Definition at line 4211 of file vm_page.c.

References vm_page_astate::flags, PGA_REFERENCED, PGA_REQUEUE, PGA_REQUEUE_HEAD, PQ_ACTIVE, PQ_INACTIVE, vm_page_astate::queue, vm_page_astate_load(), and vm_page_pqstate_commit().

Referenced by vm_page_release_locked(), and vm_page_unwire_managed().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_relookup()

vm_page_t vm_page_relookup ( vm_object_t  object,
vm_pindex_t  pindex 
)

Definition at line 1656 of file vm_page.c.

References vm_page::object, vm_page::pindex, vm_object::rtree, vm_page_busied, vm_page_wired(), and vm_radix_lookup_unlocked().

Referenced by vm_pager_get_pages().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_remove()

bool vm_page_remove ( vm_page_t  m)

Definition at line 1594 of file vm_page.c.

References vm_page_remove_xbusy(), and vm_page_xunbusy.

Referenced by cdev_pager_free_page(), vm_object_collapse_scan(), vm_object_split(), and vm_page_free_invalid().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_remove_xbusy()

bool vm_page_remove_xbusy ( vm_page_t  m)

Definition at line 1611 of file vm_page.c.

References vm_page_drop(), vm_page_object_remove(), and VPRC_OBJREF.

Referenced by vm_fault_cow(), and vm_page_remove().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_rename()

int vm_page_rename ( vm_page_t  m,
vm_object_t  new_object,
vm_pindex_t  new_pindex 
)

Definition at line 1845 of file vm_page.c.

References vm_object::rtree, VM_OBJECT_ASSERT_WLOCKED, vm_page_dirty(), vm_page_insert_radixdone(), vm_page_object_remove(), vm_radix_insert(), and vm_radix_lookup_le().

Referenced by vm_object_collapse_scan(), and vm_object_split().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_replace()

void vm_page_replace ( vm_page_t  mnew,
vm_object_t  object,
vm_pindex_t  pindex,
vm_page_t  mold 
)

Definition at line 1816 of file vm_page.c.

References vm_page::pindex, vm_page_assert_xbusied, vm_page_free(), and vm_page_replace_hold().

Referenced by old_dev_pager_fault(), sg_pager_getpages(), and vm_fault_cow().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_replace_hold()

static bool vm_page_replace_hold ( vm_page_t  mnew,
vm_object_t  object,
vm_pindex_t  pindex,
vm_page_t  mold 
)
static

Definition at line 1770 of file vm_page.c.

References vm_object::memq, vm_page::object, vm_page::pindex, vm_object::rtree, VM_OBJECT_ASSERT_WLOCKED, vm_object_set_writeable_dirty(), vm_page_assert_xbusied, vm_page_drop(), vm_page_xunbusy, vm_radix_replace(), VPO_UNMANAGED, and VPRC_OBJREF.

Referenced by vm_page_reclaim_run(), and vm_page_replace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_sbusied()

int vm_page_sbusied ( vm_page_t  m)

Definition at line 958 of file vm_page.c.

References vm_page_busy_fetch, VPB_BIT_SHARED, and VPB_UNBUSIED.

◆ vm_page_scan_contig()

vm_page_t vm_page_scan_contig ( u_long  npages,
vm_page_t  m_start,
vm_page_t  m_end,
u_long  alignment,
vm_paddr_t  boundary,
int  options 
)

◆ vm_page_set_dirty()

vm_page_bits_t vm_page_set_dirty ( vm_page_t  m)

Definition at line 5133 of file vm_page.c.

References PGA_SWAP_SPACE, vm_page_bits_swap(), VM_PAGE_OBJECT_BUSY_ASSERT, vm_page_xbusied, and vm_pager_page_unswapped().

Referenced by vm_fault_dirty().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_set_invalid()

void vm_page_set_invalid ( vm_page_t  m,
int  base,
int  size 
)

◆ vm_page_set_valid_range()

void vm_page_set_valid_range ( vm_page_t  m,
int  base,
int  size 
)

Definition at line 5082 of file vm_page.c.

References pmap_zero_page_area(), vm_page_assert_busied, vm_page_bits(), vm_page_bits_set(), and vm_page_xbusied.

Referenced by vnode_pager_generic_getpages_done(), and vnode_pager_subpage_purge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_set_validclean()

void vm_page_set_validclean ( vm_page_t  m,
int  base,
int  size 
)

◆ vm_page_startup()

◆ vm_page_sunbusy()

void vm_page_sunbusy ( vm_page_t  m)

◆ vm_page_test_dirty()

void vm_page_test_dirty ( vm_page_t  m)

Definition at line 5444 of file vm_page.c.

References pmap_is_modified(), vm_page_assert_busied, and vm_page_dirty().

Referenced by vm_pageout_cluster(), vm_pageout_launder(), and vm_pageout_scan_inactive().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_try_blocked_op()

static bool vm_page_try_blocked_op ( vm_page_t  m,
void(*)(vm_page_t)  op 
)
static

Definition at line 4312 of file vm_page.c.

References VM_OBJECT_ASSERT_LOCKED, VM_OBJECT_WOWNED, vm_page_busied, vm_page_drop(), VPO_UNMANAGED, VPRC_BLOCKED, VPRC_OBJREF, and VPRC_WIRE_COUNT.

Referenced by vm_page_try_remove_all(), and vm_page_try_remove_write().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_try_remove_all()

bool vm_page_try_remove_all ( vm_page_t  m)

Definition at line 4348 of file vm_page.c.

References pmap_remove_all(), and vm_page_try_blocked_op().

Referenced by vm_object_page_remove(), vm_page_reclaim_run(), vm_pageout_launder(), vm_pageout_scan_inactive(), and vm_swapout_object_deactivate_page().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_try_remove_write()

bool vm_page_try_remove_write ( vm_page_t  m)

Definition at line 4358 of file vm_page.c.

References pmap_remove_write(), and vm_page_try_blocked_op().

Referenced by vm_object_page_remove(), vm_pageout_clean(), and vm_pageout_cluster().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_tryacquire()

static bool vm_page_tryacquire ( vm_page_t  m,
int  allocflags 
)
inlinestatic

Definition at line 852 of file vm_page.c.

References VM_ALLOC_WIRED, vm_page_trybusy(), and vm_page_wire().

Referenced by vm_page_busy_acquire(), vm_page_grab(), and vm_page_grab_pages().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_trybusy()

static bool vm_page_trybusy ( vm_page_t  m,
int  allocflags 
)
static

Definition at line 835 of file vm_page.c.

References VM_ALLOC_IGN_SBUSY, VM_ALLOC_SBUSY, vm_page_trysbusy(), and vm_page_tryxbusy().

Referenced by vm_page_acquire_unlocked(), vm_page_grab_valid(), and vm_page_tryacquire().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_trylock_KBI()

int vm_page_trylock_KBI ( vm_page_t  m,
const char *  file,
int  line 
)

Definition at line 5478 of file vm_page.c.

References vm_page_lockptr.

◆ vm_page_trysbusy()

int vm_page_trysbusy ( vm_page_t  m)

Definition at line 1113 of file vm_page.c.

References vm_object_busied(), vm_page_busy_fetch, vm_page_sunbusy(), VPB_BIT_SHARED, and VPB_ONE_SHARER.

Referenced by vm_object_unwire(), and vm_page_trybusy().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_tryxbusy()

◆ vm_page_unhold_pages()

void vm_page_unhold_pages ( vm_page_t *  ma,
int  count 
)

Definition at line 1211 of file vm_page.c.

References PQ_ACTIVE, and vm_page_unwire().

Here is the call graph for this function:

◆ vm_page_unlock_KBI()

void vm_page_unlock_KBI ( vm_page_t  m,
const char *  file,
int  line 
)

Definition at line 5471 of file vm_page.c.

References vm_page_lockptr.

◆ vm_page_unswappable()

void vm_page_unswappable ( vm_page_t  m)

Definition at line 4197 of file vm_page.c.

References PQ_UNSWAPPABLE, vm_page_dequeue(), vm_page_enqueue(), vm_page_wired(), and VPO_UNMANAGED.

Referenced by vm_pageout_flush().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_unwire()

void vm_page_unwire ( vm_page_t  m,
uint8_t  nqueue 
)

Definition at line 4079 of file vm_page.c.

References PQ_COUNT, vm_page_free(), vm_page_unwire_managed(), vm_page_unwire_noq(), and VPO_UNMANAGED.

Referenced by vm_fault_copy_entry(), vm_fault_cow(), vm_fault_quick_hold_pages(), vm_imgact_unmap_page(), vm_object_unwire(), vm_page_unhold_pages(), and vm_thread_swapout().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_unwire_managed()

static void vm_page_unwire_managed ( vm_page_t  m,
uint8_t  nqueue,
bool  noreuse 
)
static

Definition at line 4022 of file vm_page.c.

References PGA_DEQUEUE, vm_page_aflag_clear(), vm_page_aflag_set(), vm_page_astate_load(), vm_page_free(), vm_page_release_toq(), VPO_UNMANAGED, VPRC_OBJREF, and VPRC_WIRE_COUNT.

Referenced by vm_page_release(), and vm_page_unwire().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_unwire_noq()

bool vm_page_unwire_noq ( vm_page_t  m)

Definition at line 4101 of file vm_page.c.

References PG_FICTITIOUS, PGA_DEQUEUE, vm_page_aflag_clear(), vm_page_drop(), VPO_UNMANAGED, and VPRC_WIRE_COUNT.

Referenced by _kmem_unback(), noobj_alloc(), pcpu_page_alloc(), pcpu_page_free(), startup_free(), vm_page_release_locked(), vm_page_unwire(), and vm_thread_stack_dispose().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_updatefake()

void vm_page_updatefake ( vm_page_t  m,
vm_paddr_t  paddr,
vm_memattr_t  memattr 
)

Definition at line 1311 of file vm_page.c.

References PG_FICTITIOUS.

Referenced by old_dev_pager_fault().

Here is the caller graph for this function:

◆ vm_page_valid()

◆ vm_page_wire()

◆ vm_page_wire_mapped()

bool vm_page_wire_mapped ( vm_page_t  m)

Definition at line 3996 of file vm_page.c.

References PGA_DEQUEUE, vm_page_aflag_set(), VPO_UNMANAGED, VPRC_BLOCKED, and VPRC_WIRE_COUNT.

Here is the call graph for this function:

◆ vm_page_xunbusy_hard()

void vm_page_xunbusy_hard ( vm_page_t  m)

Definition at line 1181 of file vm_page.c.

References vm_page_assert_xbusied, and vm_page_xunbusy_hard_tail().

Here is the call graph for this function:

◆ vm_page_xunbusy_hard_tail()

static void vm_page_xunbusy_hard_tail ( vm_page_t  m)
static

Definition at line 1168 of file vm_page.c.

References VPB_UNBUSIED.

Referenced by vm_page_xunbusy_hard(), and vm_page_xunbusy_hard_unchecked().

Here is the caller graph for this function:

◆ vm_page_xunbusy_hard_unchecked()

void vm_page_xunbusy_hard_unchecked ( vm_page_t  m)

Definition at line 1188 of file vm_page.c.

References vm_page_assert_xbusied_unchecked, and vm_page_xunbusy_hard_tail().

Here is the call graph for this function:

◆ vm_page_zero_invalid()

void vm_page_zero_invalid ( vm_page_t  m,
boolean_t  setvalid 
)

Definition at line 5343 of file vm_page.c.

References pmap_zero_page_area(), and vm_page_valid().

Referenced by default_phys_pager_populate(), vm_page_grab_valid(), and vm_pager_get_pages().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_zone_import()

static int vm_page_zone_import ( void *  arg,
void **  store,
int  cnt,
int  domain,
int  flags 
)
static

Definition at line 2556 of file vm_page.c.

References _vm_domain_allocate(), vm_pgcache::domain, pageproc, vm_pgcache::pool, VM_ALLOC_NORMAL, VM_DOMAIN, vm_domain_free_lock, vm_domain_free_unlock, vm_domain_freecnt_inc(), vm_phys_alloc_npages(), vm_domain::vmd_domain, and vm_domain::vmd_severeset.

Referenced by vm_page_init_cache_zones().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_page_zone_release()

static void vm_page_zone_release ( void *  arg,
void **  store,
int  cnt 
)
static

Definition at line 2584 of file vm_page.c.

References vm_pgcache::domain, VM_DOMAIN, vm_domain_free_lock, vm_domain_free_unlock, vm_domain_freecnt_inc(), and vm_phys_free_pages().

Referenced by vm_page_init_cache_zones().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_pqbatch_process()

static void vm_pqbatch_process ( struct vm_pagequeue pq,
struct vm_batchqueue bq,
uint8_t  queue 
)
static

Definition at line 3639 of file vm_page.c.

References vm_batchqueue::bq_cnt, vm_batchqueue::bq_pa, vm_batchqueue_init(), and vm_pqbatch_process_page().

Referenced by vm_page_pqbatch_drain(), and vm_page_pqbatch_submit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_pqbatch_process_page()

static void vm_pqbatch_process_page ( struct vm_pagequeue pq,
vm_page_t  m,
uint8_t  queue 
)
inlinestatic

◆ vm_set_page_size()

void vm_set_page_size ( void  )

Definition at line 255 of file vm_page.c.

References vm_cnt.

Referenced by vm_mem_init().

Here is the caller graph for this function:

◆ vm_wait()

void vm_wait ( vm_object_t  obj)

Definition at line 3337 of file vm_page.c.

References vm_wait_flags().

Referenced by vm_fault_copy_entry().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_wait_count()

u_int vm_wait_count ( void  )

Definition at line 3234 of file vm_page.c.

References vm_min_waiters, vm_pageproc_waiters, and vm_severe_waiters.

Referenced by vmtotal().

Here is the caller graph for this function:

◆ vm_wait_domain()

void vm_wait_domain ( int  domain)

Definition at line 3284 of file vm_page.c.

References pageproc, VM_DOMAIN, vm_domain_free_assert_unlocked, vm_domainset_lock, vm_wait_doms(), vm_domain::vmd_domain, vm_domain::vmd_pageout_free_min, and vm_domain::vmd_pageout_pages_needed.

Referenced by keg_fetch_slab(), kmem_alloc_contig_pages(), and vm_domain_alloc_fail().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_wait_doms()

int vm_wait_doms ( const domainset_t *  wdoms,
int  mflags 
)

Definition at line 3241 of file vm_page.c.

References pageproc, vm_domainset_lock, vm_min_domains, vm_min_waiters, and vm_pageproc_waiters.

Referenced by keg_fetch_slab(), uma_prealloc(), vm_forkproc(), vm_wait_domain(), and vm_wait_flags().

Here is the caller graph for this function:

◆ vm_wait_flags()

static int vm_wait_flags ( vm_object_t  obj,
int  mflags 
)
static

Definition at line 3310 of file vm_page.c.

References vm_object::domain, and vm_wait_doms().

Referenced by vm_wait(), and vm_wait_intr().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vm_wait_intr()

int vm_wait_intr ( vm_object_t  obj)

Definition at line 3343 of file vm_page.c.

References vm_wait_flags().

Here is the call graph for this function:

◆ vm_wait_min()

void vm_wait_min ( void  )

Definition at line 3206 of file vm_page.c.

References vm_domainset_lock, vm_min_domains, and vm_min_waiters.

◆ vm_wait_severe()

void vm_wait_severe ( void  )

Definition at line 3221 of file vm_page.c.

References vm_domainset_lock, vm_severe_domains, and vm_severe_waiters.

◆ vm_waitpfault()

void vm_waitpfault ( struct domainset *  dset,
int  timo 
)

Definition at line 3390 of file vm_page.c.

References vm_domainset_lock, vm_min_domains, and vm_min_waiters.

Referenced by vm_fault_allocate().

Here is the caller graph for this function:

Variable Documentation

◆ bogus_page

vm_page_t bogus_page

◆ first_page

long first_page

◆ pa_lock

struct mtx_padalign __exclusive_cache_line pa_lock[PA_LOCK_COUNT]

Definition at line 121 of file vm_page.c.

Referenced by vm_page_startup().

◆ vm_dom

◆ vm_domainset_lock

struct mtx_padalign __exclusive_cache_line vm_domainset_lock

◆ vm_min_domains

domainset_t __exclusive_cache_line vm_min_domains

Definition at line 125 of file vm_page.c.

Referenced by vm_domain_clear(), vm_domain_set(), vm_wait_doms(), vm_wait_min(), and vm_waitpfault().

◆ vm_min_waiters

int vm_min_waiters
static

Definition at line 127 of file vm_page.c.

Referenced by vm_domain_clear(), vm_wait_count(), vm_wait_doms(), vm_wait_min(), and vm_waitpfault().

◆ vm_page_array

vm_page_t vm_page_array

◆ vm_page_array_size

◆ vm_page_dump

struct bitset* vm_page_dump

Definition at line 159 of file vm_page.c.

Referenced by vm_page_startup().

◆ vm_page_dump_pages

long vm_page_dump_pages

Definition at line 160 of file vm_page.c.

Referenced by vm_page_dump_add(), vm_page_dump_drop(), and vm_page_startup().

◆ vm_pageproc_waiters

int vm_pageproc_waiters
static

Definition at line 129 of file vm_page.c.

Referenced by vm_domain_clear(), vm_wait_count(), and vm_wait_doms().

◆ vm_severe_domains

domainset_t __exclusive_cache_line vm_severe_domains

Definition at line 126 of file vm_page.c.

Referenced by vm_domain_clear(), vm_domain_set(), and vm_wait_severe().

◆ vm_severe_waiters

int vm_severe_waiters
static

Definition at line 128 of file vm_page.c.

Referenced by vm_domain_clear(), vm_wait_count(), and vm_wait_severe().