FreeBSD virtual memory subsystem code
|
#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"
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 |
#define VPA_FLAGS |
#define VPAC_FLAGS (VPA_FLAGS | VM_ALLOC_NORECLAIM) |
#define VPAN_FLAGS |
#define VPANC_FLAGS (VPAN_FLAGS | VM_ALLOC_NORECLAIM) |
#define VPSC_NORESERV 1 /* Skip reservations; implies VPSC_NOSUPER. */ |
__FBSDID | ( | "$FreeBSD$" | ) |
|
static |
Definition at line 1954 of file vm_page.c.
References pagedaemon_wakeup(), VM_ALLOC_INTERRUPT, VM_ALLOC_SYSTEM, vm_domain_set(), vm_paging_needed(), vm_domain::vmd_domain, vmd_free_min, vm_domain::vmd_free_min, vm_domain::vmd_free_reserved, vmd_free_severe, vm_domain::vmd_free_severe, and vm_domain::vmd_interrupt_free_min.
Referenced by vm_domain_allocate(), and vm_page_zone_import().
|
static |
Definition at line 2329 of file vm_page.c.
References PG_NODUMP, PG_PCPU_CACHE, PG_ZERO, pmap_zero_page(), uma_zalloc(), VM_ALLOC_NODUMP, VM_ALLOC_WIRED, VM_ALLOC_ZERO, VM_DOMAIN, vm_domain_alloc_fail(), vm_domain_allocate(), vm_domain_free_lock, vm_domain_free_unlock, vm_domain_freecnt_inc(), vm_page_alloc_check(), vm_page_dequeue(), vm_phys_alloc_freelist_pages(), vm_phys_alloc_pages(), vm_domain::vmd_pgcache, VPAN_FLAGS, VPB_UNBUSIED, VPO_UNMANAGED, and vm_domain::vm_pgcache::zone.
Referenced by vm_page_alloc_freelist_domain(), and vm_page_alloc_noobj_domain().
|
static |
Definition at line 1059 of file vm_page.c.
References vm_page::pindex, VM_ALLOC_IGN_SBUSY, VM_ALLOC_SBUSY, vm_object_busied(), vm_object_busy_wait(), VM_OBJECT_DROP, vm_page_busied, vm_page_busy_fetch, VPB_BIT_SHARED, VPB_BIT_WAITERS, and VPB_UNBUSIED.
Referenced by vm_page_busy_acquire(), vm_page_busy_sleep(), vm_page_busy_sleep_unlocked(), and vm_page_grab_sleep().
|
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().
|
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().
|
static |
Definition at line 3513 of file vm_page.c.
References vm_page_astate::flags, PGA_ENQUEUED, PGA_REQUEUE_HEAD, PQ_INACTIVE, PQ_NONE, vm_pagequeue::pq_pl, vm_page_astate::queue, vm_page_pqstate_fcmpset(), vm_pagequeue_assert_locked, vm_pagequeue_cnt_inc, vm_pagequeue_domain(), vm_domain::vmd_inacthead, and vm_domain::vmd_pagequeues.
Referenced by vm_pqbatch_process_page().
|
static |
|
static |
|
static |
CTASSERT | ( | powerof2(NRUNS) | ) |
DPCPU_DEFINE_STATIC | ( | struct vm_batchqueue | , |
pqbatch | [MAXMEMDOM][PQ_COUNT] | ||
) |
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().
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 | ( | _vm_stats_page | , |
OID_AUTO | , | ||
queue_nops | , | ||
CTLFLAG_RD | , | ||
& | queue_nops, | ||
"Number of batched queue operations with no effects" | |||
) |
SYSCTL_COUNTER_U64 | ( | _vm_stats_page | , |
OID_AUTO | , | ||
queue_ops | , | ||
CTLFLAG_RD | , | ||
& | queue_ops, | ||
"Number of batched queue operations" | |||
) |
|
static |
|
static |
SYSINIT | ( | vm_page2 | , |
SI_SUB_VM_CONF | , | ||
SI_ORDER_ANY | , | ||
vm_page_init_cache_zones | , | ||
NULL | |||
) |
|
static |
Definition at line 3359 of file vm_page.c.
References VM_ALLOC_COUNT_SHIFT, VM_ALLOC_WAITFAIL, VM_ALLOC_WAITOK, vm_domain_free_assert_unlocked, VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_wait_domain(), vm_domain::vmd_domain, and vm_domain::vmd_pageout_deficit.
Referenced by _vm_page_alloc_noobj_domain(), vm_page_alloc_contig_domain(), vm_page_alloc_domain_after(), and vm_page_alloc_noobj_contig_domain().
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().
void vm_domain_clear | ( | struct vm_domain * | vmd | ) |
Definition at line 3163 of file vm_page.c.
References vm_domainset_lock, vm_min_domains, vm_min_waiters, vm_pageproc_waiters, vm_paging_min(), vm_paging_severe(), vm_severe_domains, vm_severe_waiters, vm_domain::vmd_domain, vm_domain::vmd_minset, vm_domain::vmd_pageout_free_min, vm_domain::vmd_pageout_pages_needed, and vm_domain::vmd_severeset.
Referenced by vm_domain_freecnt_inc().
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().
|
static |
Definition at line 4561 of file vm_page.c.
References vm_object::rtree, VM_ALLOC_WIRED, vm_page_busied, vm_page_busy_release(), vm_page_grab_check(), vm_page_grab_release(), vm_page_grab_sleep(), vm_page_trybusy(), vm_page_wire(), vm_page_wired(), and vm_radix_lookup_unlocked().
Referenced by vm_page_grab_pages_unlocked(), vm_page_grab_unlocked(), and vm_page_grab_valid_unlocked().
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().
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().
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().
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().
|
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().
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().
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 | ||
) |
Definition at line 2220 of file vm_page.c.
References vm_object::flags, vm_object::memattr, OBJ_FICTITIOUS, OBJ_UNMANAGED, PG_NODUMP, PG_ZERO, vm_object::rtree, VM_ALLOC_NOBUSY, VM_ALLOC_NODUMP, VM_ALLOC_NORECLAIM, VM_ALLOC_SBUSY, VM_ALLOC_WAITFAIL, VM_ALLOC_WAITOK, VM_ALLOC_WIRED, VM_DOMAIN, vm_domain_alloc_fail(), VM_OBJECT_ASSERT_WLOCKED, vm_object_reserv(), VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_alloc_check(), vm_page_dequeue(), vm_page_find_contig_domain(), vm_page_free_toq(), vm_page_insert_after(), vm_radix_lookup_le(), vm_radix_wait(), VPAC_FLAGS, VPB_CURTHREAD_EXCLUSIVE, VPB_SHARERS_WORD, VPB_UNBUSIED, and VPO_UNMANAGED.
Referenced by kmem_alloc_contig_pages(), and vm_page_alloc_contig().
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().
vm_page_t vm_page_alloc_domain_after | ( | vm_object_t | object, |
vm_pindex_t | pindex, | ||
int | domain, | ||
int | req, | ||
vm_page_t | mpred | ||
) |
Definition at line 2003 of file vm_page.c.
References vm_object::flags, vm_object::memattr, OBJ_FICTITIOUS, OBJ_UNMANAGED, PG_NODUMP, PG_PCPU_CACHE, PG_ZERO, uma_zalloc(), VM_ALLOC_NOBUSY, VM_ALLOC_NODUMP, VM_ALLOC_SBUSY, VM_ALLOC_WAITFAIL, VM_ALLOC_WIRED, VM_DOMAIN, vm_domain_alloc_fail(), vm_domain_allocate(), vm_domain_free_lock, vm_domain_free_unlock, vm_domain_freecnt_inc(), VM_OBJECT_ASSERT_WLOCKED, vm_object_reserv(), VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_alloc_check(), vm_page_dequeue(), vm_page_free_toq(), vm_page_insert_after(), vm_phys_alloc_pages(), vm_radix_wait(), vm_domain::vmd_pgcache, VPA_FLAGS, VPB_CURTHREAD_EXCLUSIVE, VPB_SHARERS_WORD, VPB_UNBUSIED, VPO_UNMANAGED, and vm_domain::vm_pgcache::zone.
Referenced by kmem_back_domain(), vm_page_alloc_after(), and vm_page_alloc_domain().
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().
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().
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().
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().
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 | ||
) |
Definition at line 2471 of file vm_page.c.
References PG_NODUMP, PG_ZERO, pmap_zero_page(), VM_ALLOC_NOBUSY, VM_ALLOC_NODUMP, VM_ALLOC_NORECLAIM, VM_ALLOC_SBUSY, VM_ALLOC_WAITOK, VM_ALLOC_WIRED, VM_ALLOC_ZERO, VM_DOMAIN, vm_domain_alloc_fail(), vm_page_alloc_check(), vm_page_dequeue(), vm_page_find_contig_domain(), VPANC_FLAGS, VPB_UNBUSIED, and VPO_UNMANAGED.
Referenced by startup_alloc(), and vm_page_alloc_noobj_contig().
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().
|
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().
vm_page_bits_t vm_page_bits | ( | int | base, |
int | size | ||
) |
Definition at line 4929 of file vm_page.c.
Referenced by vm_page_clear_dirty(), vm_page_is_valid(), vm_page_set_invalid(), vm_page_set_valid_range(), vm_page_set_validclean(), vnode_pager_generic_getpages_done(), and vnode_pager_input_smlfs().
|
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().
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().
|
inlinestatic |
Definition at line 5016 of file vm_page.c.
Referenced by vm_page_set_dirty().
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().
|
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().
|
static |
Definition at line 378 of file vm_page.c.
Referenced by vm_page_startup().
|
static |
Definition at line 273 of file vm_page.c.
Referenced by vm_page_blacklist_check().
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().
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().
|
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().
|
static |
Definition at line 1674 of file vm_page.c.
References vm_page_busy_fetch, VPB_BIT_SHARED, VPB_BIT_WAITERS, VPB_CURTHREAD_EXCLUSIVE, VPB_FREED, VPB_ONE_SHARER, VPB_SHARERS, and VPB_UNBUSIED.
Referenced by vm_page_acquire_unlocked(), vm_page_grab_valid(), and vm_page_grab_valid_unlocked().
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().
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.
int vm_page_busy_tryupgrade | ( | vm_page_t | m | ) |
Definition at line 932 of file vm_page.c.
References vm_page_assert_sbusied, vm_page_busy_fetch, VPB_BIT_WAITERS, VPB_CURTHREAD_EXCLUSIVE, VPB_SHARERS, and VPB_SHARERS_WORD.
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().
|
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().
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().
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().
void vm_page_dequeue | ( | vm_page_t | m | ) |
Definition at line 3755 of file vm_page.c.
References vm_page_astate::flags, PGA_QUEUE_STATE_MASK, PQ_NONE, vm_page_astate::queue, vm_page_astate_load(), and vm_page_pqstate_commit_dequeue().
Referenced by _vm_page_alloc_noobj_domain(), vm_page_alloc_contig_domain(), vm_page_alloc_domain_after(), vm_page_alloc_noobj_contig_domain(), vm_page_reclaim_run(), and vm_page_unswappable().
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().
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().
|
static |
Definition at line 439 of file vm_page.c.
References PGA_ENQUEUED, PQ_ACTIVE, PQ_COUNT, PQ_INACTIVE, PQ_LAUNDRY, vm_pagequeue::pq_mutex, vm_pagequeue::pq_name, vm_pagequeue::pq_pdpages, vm_pagequeue::pq_pl, PQ_UNSWAPPABLE, VM_DOMAIN, vm_page_init_marker(), vm_domain::vmd_clock, vm_domain::vmd_domain, vm_domain::vmd_free_mtx, vm_domain::vmd_inacthead, vm_domain::vmd_markers, vm_domain::vmd_name, vm_domain::vmd_oom, vm_domain::vmd_page_count, vm_domain::vmd_pageout_mtx, vm_domain::vmd_pagequeues, and vm_domain::vmd_segs.
Referenced by vm_page_startup().
|
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().
|
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().
vm_page_t vm_page_find_least | ( | vm_object_t | object, |
vm_pindex_t | pindex | ||
) |
Definition at line 1708 of file vm_page.c.
References vm_object::memq, vm_page::object, vm_page::pindex, vm_object::rtree, VM_OBJECT_ASSERT_LOCKED, and vm_radix_lookup_ge().
Referenced by vm_fault_dontneed(), vm_map_pmap_enter(), vm_object_madvise(), vm_object_page_clean(), vm_object_page_noreuse(), vm_object_page_remove(), vm_object_scan_all_shadowed(), vm_object_split(), and vm_object_unwire().
void vm_page_free | ( | vm_page_t | m | ) |
Definition at line 1326 of file vm_page.c.
References vm_page_free_toq().
Referenced by _kmem_unback(), fault_page_free(), noobj_alloc(), pcpu_page_alloc(), pcpu_page_free(), startup_free(), vm_object_collapse_scan(), vm_object_page_remove(), vm_object_split(), vm_object_terminate_pages(), vm_page_free_invalid(), vm_page_grab_valid(), vm_page_reclaim_run(), vm_page_release_locked(), vm_page_replace(), vm_page_unwire(), vm_page_unwire_managed(), vm_pageout_launder(), vm_pageout_scan_inactive(), and vm_thread_stack_dispose().
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().
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().
|
static |
Definition at line 3806 of file vm_page.c.
References OBJ_UNMANAGED, PG_FICTITIOUS, PG_PCPU_CACHE, PG_ZERO, PGA_EXECUTABLE, PGA_WRITEABLE, PQ_NONE, vm_page_assert_unbusied, vm_page_assert_xbusied, vm_page_busy_free(), vm_page_dequeue_deferred(), vm_page_object_remove(), VM_PAGE_TO_PHYS, vm_page_undirty(), VPO_UNMANAGED, and VPRC_OBJREF.
Referenced by vm_page_free_toq(), and vm_page_reclaim_run().
|
static |
Definition at line 3913 of file vm_page.c.
References PG_PCPU_CACHE, uma_zfree(), vm_domain_free_lock, vm_domain_free_unlock, vm_domain_freecnt_inc(), vm_page_free_prep(), vm_pagequeue_domain(), vm_phys_free_pages(), vm_domain::vmd_pgcache, and vm_domain::vm_pgcache::zone.
Referenced by vm_page_alloc_contig_domain(), vm_page_alloc_domain_after(), vm_page_free(), vm_page_free_pages_toq(), and 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().
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().
vm_page_t vm_page_grab | ( | vm_object_t | object, |
vm_pindex_t | pindex, | ||
int | allocflags | ||
) |
Definition at line 4509 of file vm_page.c.
References PG_ZERO, pmap_zero_page(), VM_ALLOC_NOCREAT, VM_ALLOC_NOWAIT, VM_ALLOC_WAITFAIL, VM_ALLOC_ZERO, VM_OBJECT_ASSERT_WLOCKED, vm_page_alloc(), vm_page_grab_check(), vm_page_grab_pflags(), vm_page_grab_release(), vm_page_grab_sleep(), vm_page_lookup(), and vm_page_tryacquire().
Referenced by default_phys_pager_populate(), vm_page_grab_unlocked(), vnode_pager_purge_range(), and vnode_pager_setsize().
|
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().
int vm_page_grab_pages | ( | vm_object_t | object, |
vm_pindex_t | pindex, | ||
int | allocflags, | ||
vm_page_t * | ma, | ||
int | count | ||
) |
Definition at line 4821 of file vm_page.c.
References PG_ZERO, pmap_zero_page(), vm_object::rtree, VM_ALLOC_COUNT, VM_ALLOC_COUNT_SHIFT, VM_ALLOC_NOCREAT, VM_ALLOC_NOWAIT, VM_ALLOC_WAITFAIL, VM_ALLOC_ZERO, VM_OBJECT_ASSERT_WLOCKED, vm_page_alloc_after(), vm_page_grab_check(), vm_page_grab_pflags(), vm_page_grab_release(), vm_page_grab_sleep(), vm_page_next(), vm_page_none_valid(), vm_page_tryacquire(), vm_page_valid(), and vm_radix_lookup_le().
Referenced by vm_page_grab_pages_unlocked(), and vm_thread_stack_back().
int vm_page_grab_pages_unlocked | ( | vm_object_t | object, |
vm_pindex_t | pindex, | ||
int | allocflags, | ||
vm_page_t * | ma, | ||
int | count | ||
) |
Definition at line 4882 of file vm_page.c.
References PG_ZERO, pmap_zero_page(), VM_ALLOC_NOCREAT, VM_ALLOC_ZERO, VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_acquire_unlocked(), vm_page_grab_check(), vm_page_grab_pages(), vm_page_grab_release(), vm_page_none_valid(), and vm_page_valid().
|
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().
|
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().
|
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().
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().
int vm_page_grab_valid | ( | vm_page_t * | mp, |
vm_object_t | object, | ||
vm_pindex_t | pindex, | ||
int | allocflags | ||
) |
Definition at line 4647 of file vm_page.c.
References VM_ALLOC_COUNT_SHIFT, VM_ALLOC_IGN_SBUSY, VM_ALLOC_NOBUSY, VM_ALLOC_NOCREAT, VM_ALLOC_NORMAL, VM_ALLOC_NOWAIT, VM_ALLOC_SBUSY, VM_ALLOC_WAITFAIL, VM_ALLOC_WIRED, VM_ALLOC_ZERO, VM_OBJECT_ASSERT_WLOCKED, vm_object_pip_add(), vm_object_pip_wakeupn(), VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_all_valid(), vm_page_alloc(), vm_page_assert_xbusied, vm_page_busy_downgrade(), vm_page_busy_release(), vm_page_free(), vm_page_grab_sleep(), vm_page_lookup(), vm_page_next(), vm_page_readahead_finish(), vm_page_trybusy(), vm_page_tryxbusy(), vm_page_wire(), vm_page_wired(), vm_page_xbusied, vm_page_xunbusy, vm_page_zero_invalid(), VM_PAGER_FAIL, vm_pager_get_pages(), vm_pager_has_page(), and VM_PAGER_OK.
Referenced by vm_object_populate(), and 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 | ||
) |
Definition at line 4752 of file vm_page.c.
References VM_ALLOC_IGN_SBUSY, VM_ALLOC_NOBUSY, VM_ALLOC_NOCREAT, VM_ALLOC_NOWAIT, VM_ALLOC_SBUSY, VM_ALLOC_WAITFAIL, VM_ALLOC_WIRED, VM_ALLOC_ZERO, VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_acquire_unlocked(), vm_page_all_valid(), vm_page_busy_release(), vm_page_grab_release(), vm_page_grab_valid(), vm_page_wire(), VM_PAGER_FAIL, and VM_PAGER_OK.
Referenced by vm_imgact_hold_page().
|
static |
Definition at line 208 of file vm_page.c.
References vm_pgcache::domain, vm_pgcache::pool, uma_zcache_create(), uma_zone_set_maxcache(), UMA_ZONE_VM, VM_DOMAIN, vm_ndomains, vm_page_zone_import(), vm_page_zone_release(), vm_domain::vmd_page_count, vm_domain::vmd_pgcache, and vm_pgcache::zone.
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().
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().
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().
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().
|
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().
|
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().
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().
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().
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().
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_t vm_page_lookup | ( | vm_object_t | object, |
vm_pindex_t | pindex | ||
) |
Definition at line 1627 of file vm_page.c.
References vm_page::object, vm_page::pindex, vm_object::rtree, VM_OBJECT_ASSERT_LOCKED, and vm_radix_lookup().
Referenced by _kmem_unback(), kern_mincore(), swap_pager_swapoff_object(), vm_fault_busy_sleep(), vm_fault_copy_entry(), vm_fault_object(), vm_fault_populate(), vm_fault_populate_cleanup(), vm_fault_prefault(), vm_fault_soft_fast(), vm_object_collapse_scan(), vm_object_madvise(), vm_object_populate(), vm_object_scan_all_shadowed(), vm_object_unwire(), vm_page_grab(), vm_page_grab_valid(), vm_thread_stack_dispose(), and vm_thread_swapout().
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().
|
static |
Definition at line 4125 of file vm_page.c.
References vm_page_astate::act_count, ACT_INIT, vm_page_astate::flags, PGA_DEQUEUE, PGA_REQUEUE, PGA_REQUEUE_HEAD, PQ_ACTIVE, vm_page_astate::queue, vm_page_astate_load(), vm_page_pqstate_commit(), vm_page_wired(), and VPO_UNMANAGED.
Referenced by vm_page_activate(), vm_page_deactivate(), vm_page_deactivate_noreuse(), and vm_page_launder().
vm_page_t vm_page_next | ( | vm_page_t | m | ) |
Definition at line 1725 of file vm_page.c.
References VM_OBJECT_ASSERT_LOCKED.
Referenced by _kmem_unback(), swap_pager_swapoff_object(), vm_fault_populate(), vm_fault_populate_cleanup(), vm_object_page_collect_flush(), vm_page_grab_pages(), vm_page_grab_valid(), and vm_pageout_cluster().
|
static |
Definition at line 1545 of file vm_page.c.
References vm_object::handle, vm_object::memq, vm_page::object, OBJT_VNODE, PGA_SWAP_FREE, vm_object::resident_page_count, vm_object::rtree, vm_object::type, VM_OBJECT_ASSERT_WLOCKED, vm_page_assert_xbusied, vm_pager_page_unswapped(), vm_radix_remove(), and VPRC_OBJREF.
Referenced by vm_page_free_prep(), vm_page_remove_xbusy(), and vm_page_rename().
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().
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().
bool vm_page_pqstate_commit | ( | vm_page_t | m, |
vm_page_astate_t * | old, | ||
vm_page_astate_t | new | ||
) |
Definition at line 3573 of file vm_page.c.
References vm_page_astate::_bits, vm_page_astate::flags, PGA_QUEUE_OP_MASK, PQ_NONE, vm_page_astate::queue, vm_page_pqbatch_submit(), vm_page_pqstate_commit_dequeue(), and vm_page_pqstate_fcmpset().
Referenced by vm_page_mvqueue(), vm_page_release_toq(), vm_pageout_launder(), vm_pageout_scan_active(), and vm_pageout_scan_inactive().
|
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().
|
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().
|
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().
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().
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().
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().
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().
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().
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 | ||
) |
Definition at line 3024 of file vm_page.c.
References MIN_RECLAIM, NRUNS, pageproc, RUN_INDEX, VM_ALLOC_CLASS_MASK, VM_ALLOC_INTERRUPT, VM_ALLOC_SYSTEM, VM_DOMAIN, vm_page_reclaim_run(), VM_PAGE_TO_PHYS, vm_phys_scan_contig(), vmd_free_reserved, vm_domain::vmd_interrupt_free_min, VPSC_ANY, VPSC_NORESERV, and VPSC_NOSUPER.
Referenced by kmem_alloc_contig_pages(), and vm_page_reclaim_contig().
|
static |
Definition at line 2800 of file vm_page.c.
References OBJ_SWAP, OBJT_DEFAULT, OBJT_VNODE, PG_FICTITIOUS, PG_MARKER, PG_NODUMP, pmap_copy_page(), PQ_NONE, VM_ALLOC_CLASS_MASK, VM_ALLOC_NODUMP, VM_DOMAIN, vm_domain_free_lock, vm_domain_free_unlock, vm_domain_freecnt_inc(), VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_alloc_noobj_contig(), vm_page_deactivate(), vm_page_dequeue(), vm_page_domain(), vm_page_free(), vm_page_free_prep(), vm_page_none_valid(), vm_page_queue(), vm_page_replace_hold(), VM_PAGE_TO_PHYS, vm_page_try_remove_all(), vm_page_tryxbusy(), vm_page_wired(), vm_page_xunbusy, vm_phys_free_pages(), and VPO_UNMANAGED.
Referenced by vm_page_reclaim_contig_domain().
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().
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.
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().
|
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().
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().
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().
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().
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().
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().
|
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().
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_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 | ||
) |
Definition at line 2625 of file vm_page.c.
References vm_object::flags, vm_object::memattr, OBJ_SWAP, OBJT_DEFAULT, OBJT_VNODE, PG_FICTITIOUS, PG_MARKER, PQ_NONE, vm_object::type, vm_addr_align_ok(), vm_addr_bound_ok(), VM_OBJECT_RLOCK, VM_OBJECT_RUNLOCK, vm_page_busied, vm_page_queue(), VM_PAGE_TO_PHYS, vm_page_wired(), VPO_SWAPINPROG, VPO_SWAPSLEEP, VPO_UNMANAGED, VPSC_NORESERV, and VPSC_NOSUPER.
Referenced by vm_phys_scan_contig().
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().
void vm_page_set_invalid | ( | vm_page_t | m, |
int | base, | ||
int | size | ||
) |
Definition at line 5277 of file vm_page.c.
References IDX_TO_OFF, OBJT_VNODE, pmap_remove_all(), vm_object::ref_count, vm_object::type, vm_object::un_pager, VM_OBJECT_ASSERT_WLOCKED, vm_page_all_valid(), vm_page_assert_busied, vm_page_bits(), vm_page_bits_clear(), vm_page_xbusied, vm_object::vnp, and vm_object::vnp_size.
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().
void vm_page_set_validclean | ( | vm_page_t | m, |
int | base, | ||
int | size | ||
) |
Definition at line 5183 of file vm_page.c.
References PGA_NOSYNC, pmap_clear_modify(), pmap_zero_page_area(), vm_page_aflag_clear(), vm_page_assert_busied, vm_page_bits(), vm_page_bits_set(), vm_page_clear_dirty_mask(), and vm_page_xbusied.
vm_offset_t vm_page_startup | ( | vm_offset_t | vaddr | ) |
Definition at line 551 of file vm_page.c.
References vm_phys_seg::domain, dump_add_page, dump_avail, vm_phys_seg::end, vm_phys_seg::first_page, first_page, pa_lock, PA_LOCK_COUNT, PG_FICTITIOUS, phys_avail, pmap_map(), vm_page::segind, vm_phys_seg::start, vm_cnt, VM_DOMAIN, vm_domain_free_lock, vm_domain_free_unlock, vm_domain_freecnt_inc(), vm_domainset_lock, vm_ndomains, vm_page_array, vm_page_array_alloc(), vm_page_array_size, vm_page_blacklist_check(), vm_page_blacklist_load(), vm_page_domain_init(), vm_page_dump, vm_page_dump_pages, vm_page_init_page(), vm_phys_add_seg(), vm_phys_avail_largest(), vm_phys_avail_size(), vm_phys_early_startup(), vm_phys_enqueue_contig(), vm_phys_init(), vm_phys_nsegs, vm_phys_segs, VM_PROT_READ, VM_PROT_WRITE, vm_domain::vmd_page_count, and vm_domain::vmd_segs.
Referenced by vm_mem_init().
void vm_page_sunbusy | ( | vm_page_t | m | ) |
Definition at line 972 of file vm_page.c.
References vm_page_assert_sbusied, vm_page_busy_fetch, VPB_BIT_WAITERS, VPB_FREED, VPB_ONE_SHARER, VPB_SHARERS, VPB_SHARERS_WORD, and VPB_UNBUSIED.
Referenced by swp_pager_async_iodone(), vm_object_unwire(), vm_page_grab_release(), vm_page_trysbusy(), and vm_pageout_flush().
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().
|
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().
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().
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().
|
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().
|
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().
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.
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().
int vm_page_tryxbusy | ( | vm_page_t | m | ) |
Definition at line 1151 of file vm_page.c.
References vm_object_busied(), vm_page_xunbusy, VPB_CURTHREAD_EXCLUSIVE, and VPB_UNBUSIED.
Referenced by vm_fault_object(), vm_object_collapse_scan(), vm_object_madvise(), vm_object_page_collect_flush(), vm_object_page_remove(), vm_object_scan_all_shadowed(), vm_object_split(), vm_page_grab_valid(), vm_page_reclaim_run(), vm_page_release_locked(), vm_page_trybusy(), vm_pageout_clean(), vm_pageout_cluster(), vm_pageout_launder(), vm_pageout_scan_inactive(), and vm_swapout_object_deactivate_page().
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().
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.
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().
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().
|
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().
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().
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().
void vm_page_valid | ( | vm_page_t | m | ) |
Definition at line 5453 of file vm_page.c.
References vm_page_assert_busied, vm_page_bits_set(), and vm_page_xbusied.
Referenced by default_phys_pager_getpages(), kmem_alloc_attr_domain(), kmem_alloc_contig_domain(), kmem_back_domain(), old_dev_pager_fault(), sg_pager_getpages(), swp_pager_async_iodone(), vm_fault_cow(), vm_fault_zerofill(), vm_page_grab_pages(), vm_page_grab_pages_unlocked(), vm_page_zero_invalid(), vm_thread_stack_create(), vnode_pager_generic_getpages(), vnode_pager_generic_getpages_done(), and vnode_pager_input_old().
void vm_page_wire | ( | vm_page_t | m | ) |
Definition at line 3965 of file vm_page.c.
References PG_FICTITIOUS, PGA_DEQUEUE, VM_OBJECT_ASSERT_LOCKED, vm_object_busied(), vm_page_aflag_set(), vm_page_busied, VPO_UNMANAGED, VPRC_WIRE_COUNT, and VPRC_WIRE_COUNT_MAX.
Referenced by vm_fault(), vm_fault_copy_entry(), vm_fault_cow(), vm_fault_populate(), vm_fault_soft_fast(), vm_page_acquire_unlocked(), vm_page_grab_valid(), vm_page_grab_valid_unlocked(), and vm_page_tryacquire().
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.
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().
|
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().
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().
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().
|
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().
|
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().
|
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().
|
inlinestatic |
Definition at line 3598 of file vm_page.c.
References _vm_page_pagequeue(), _vm_page_pqstate_commit_dequeue(), _vm_page_pqstate_commit_requeue(), vm_page_astate::flags, PGA_DEQUEUE, PGA_QUEUE_OP_MASK, PGA_REQUEUE, PGA_REQUEUE_HEAD, PQ_COUNT, PQ_NONE, vm_page_astate::queue, vm_page_astate_load(), vm_pagequeue_assert_locked, and VPO_UNMANAGED.
Referenced by vm_page_pqbatch_submit(), and vm_pqbatch_process().
void vm_set_page_size | ( | void | ) |
Definition at line 255 of file vm_page.c.
References vm_cnt.
Referenced by vm_mem_init().
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().
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().
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().
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().
|
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().
int vm_wait_intr | ( | vm_object_t | obj | ) |
Definition at line 3343 of file vm_page.c.
References vm_wait_flags().
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.
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.
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().
vm_page_t bogus_page |
Definition at line 153 of file vm_page.c.
Referenced by vm_pager_assert_in(), vnode_pager_generic_getpages(), and vnode_pager_generic_getpages_done().
long first_page |
Definition at line 157 of file vm_page.c.
Referenced by PHYS_TO_VM_PAGE(), vm_page_startup(), vm_phys_fictitious_reg_range(), and vm_phys_fictitious_unreg_range().
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().
struct vm_domain vm_dom[MAXMEMDOM] |
Definition at line 117 of file vm_page.c.
Referenced by _kmem_unback(), kmem_alloc_attr_domain(), kmem_alloc_contig_domain(), kmem_init(), kmem_malloc_domain(), vm_free_count(), and vm_pagequeue_count().
struct mtx_padalign __exclusive_cache_line vm_domainset_lock |
Definition at line 123 of file vm_page.c.
Referenced by vm_domain_clear(), vm_domain_set(), vm_page_startup(), vm_wait_domain(), vm_wait_doms(), vm_wait_min(), vm_wait_severe(), and vm_waitpfault().
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().
|
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_t vm_page_array |
Definition at line 155 of file vm_page.c.
Referenced by kmem_init(), PHYS_TO_VM_PAGE(), vm_page_array_alloc(), vm_page_startup(), vm_phys_fictitious_reg_range(), and vm_phys_init().
long vm_page_array_size |
Definition at line 156 of file vm_page.c.
Referenced by kmem_init(), PHYS_TO_VM_PAGE(), vm_page_array_alloc(), vm_page_startup(), vm_phys_fictitious_reg_range(), and vm_phys_fictitious_unreg_range().
struct bitset* vm_page_dump |
Definition at line 159 of file vm_page.c.
Referenced by vm_page_startup().
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().
|
static |
Definition at line 129 of file vm_page.c.
Referenced by vm_domain_clear(), vm_wait_count(), and vm_wait_doms().
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().
|
static |
Definition at line 128 of file vm_page.c.
Referenced by vm_domain_clear(), vm_wait_count(), and vm_wait_severe().