FreeBSD virtual memory subsystem code
|
#include <sys/cdefs.h>
#include "opt_ktrace.h"
#include "opt_vm.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/mman.h>
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/racct.h>
#include <sys/refcount.h>
#include <sys/resourcevar.h>
#include <sys/rwlock.h>
#include <sys/signalvar.h>
#include <sys/sysctl.h>
#include <sys/sysent.h>
#include <sys/vmmeter.h>
#include <sys/vnode.h>
#include <vm/vm.h>
#include <vm/vm_param.h>
#include <vm/pmap.h>
#include <vm/vm_map.h>
#include <vm/vm_object.h>
#include <vm/vm_page.h>
#include <vm/vm_pageout.h>
#include <vm/vm_kern.h>
#include <vm/vm_pager.h>
#include <vm/vm_extern.h>
#include <vm/vm_reserv.h>
Go to the source code of this file.
Data Structures | |
struct | faultstate |
Macros | |
#define | PFBAK 4 |
#define | PFFOR 4 |
#define | VM_FAULT_READ_DEFAULT (1 + VM_FAULT_READ_AHEAD_INIT) |
#define | VM_FAULT_DONTNEED_MIN 1048576 |
#define | UCODE_PAGEFLT 12 |
Enumerations | |
enum | fault_status { FAULT_SUCCESS = 1 , FAULT_FAILURE , FAULT_CONTINUE , FAULT_RESTART , FAULT_OUT_OF_BOUNDS , FAULT_HARD , FAULT_SOFT , FAULT_PROTECTION_FAILURE } |
Functions | |
__FBSDID ("$FreeBSD$") | |
static void | vm_fault_dontneed (const struct faultstate *fs, vm_offset_t vaddr, int ahead) |
static void | vm_fault_prefault (const struct faultstate *fs, vm_offset_t addra, int backward, int forward, bool obj_locked) |
SYSCTL_INT (_vm, OID_AUTO, pfault_oom_attempts, CTLFLAG_RWTUN, &vm_pfault_oom_attempts, 0, "Number of page allocation attempts in page fault handler before it " "triggers OOM handling") | |
SYSCTL_INT (_vm, OID_AUTO, pfault_oom_wait, CTLFLAG_RWTUN, &vm_pfault_oom_wait, 0, "Number of seconds to wait for free pages before retrying " "the page fault handler") | |
static void | fault_page_release (vm_page_t *mp) |
static void | fault_page_free (vm_page_t *mp) |
static void | unlock_map (struct faultstate *fs) |
static void | unlock_vp (struct faultstate *fs) |
static void | fault_deallocate (struct faultstate *fs) |
static void | unlock_and_deallocate (struct faultstate *fs) |
static void | vm_fault_dirty (struct faultstate *fs, vm_page_t m) |
static enum fault_status | vm_fault_soft_fast (struct faultstate *fs) |
static void | vm_fault_restore_map_lock (struct faultstate *fs) |
static void | vm_fault_populate_check_page (vm_page_t m) |
static void | vm_fault_populate_cleanup (vm_object_t object, vm_pindex_t first, vm_pindex_t last) |
static enum fault_status | vm_fault_populate (struct faultstate *fs) |
SYSCTL_INT (_machdep, OID_AUTO, prot_fault_translation, CTLFLAG_RWTUN, &prot_fault_translation, 0, "Control signal to deliver on protection fault") | |
int | vm_fault_trap (vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type, int fault_flags, int *signo, int *ucode) |
static enum fault_status | vm_fault_lock_vnode (struct faultstate *fs, bool objlocked) |
static int | vm_fault_readahead (struct faultstate *fs) |
static int | vm_fault_lookup (struct faultstate *fs) |
static int | vm_fault_relookup (struct faultstate *fs) |
static void | vm_fault_cow (struct faultstate *fs) |
static bool | vm_fault_next (struct faultstate *fs) |
static void | vm_fault_zerofill (struct faultstate *fs) |
static bool | vm_fault_allocate_oom (struct faultstate *fs) |
static enum fault_status | vm_fault_allocate (struct faultstate *fs) |
static enum fault_status | vm_fault_getpages (struct faultstate *fs, int *behindp, int *aheadp) |
static void | vm_fault_busy_sleep (struct faultstate *fs) |
static enum fault_status | vm_fault_object (struct faultstate *fs, int *behindp, int *aheadp) |
int | vm_fault (vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type, int fault_flags, vm_page_t *m_hold) |
int | vm_fault_quick_hold_pages (vm_map_t map, vm_offset_t addr, vm_size_t len, vm_prot_t prot, vm_page_t *ma, int max_count) |
void | vm_fault_copy_entry (vm_map_t dst_map, vm_map_t src_map, vm_map_entry_t dst_entry, vm_map_entry_t src_entry, vm_ooffset_t *fork_charge) |
int | vm_fault_disable_pagefaults (void) |
void | vm_fault_enable_pagefaults (int save) |
Variables | |
static int | vm_pfault_oom_attempts = 3 |
static int | vm_pfault_oom_wait = 10 |
static int | prot_fault_translation |
#define PFBAK 4 |
Definition at line 114 of file vm_fault.c.
#define PFFOR 4 |
Definition at line 115 of file vm_fault.c.
#define UCODE_PAGEFLT 12 |
Definition at line 634 of file vm_fault.c.
#define VM_FAULT_DONTNEED_MIN 1048576 |
Definition at line 119 of file vm_fault.c.
#define VM_FAULT_READ_DEFAULT (1 + VM_FAULT_READ_AHEAD_INIT) |
Definition at line 117 of file vm_fault.c.
enum fault_status |
Enumerator | |
---|---|
FAULT_SUCCESS | |
FAULT_FAILURE | |
FAULT_CONTINUE | |
FAULT_RESTART | |
FAULT_OUT_OF_BOUNDS | |
FAULT_HARD | |
FAULT_SOFT | |
FAULT_PROTECTION_FAILURE |
Definition at line 161 of file vm_fault.c.
__FBSDID | ( | "$FreeBSD$" | ) |
|
static |
Definition at line 244 of file vm_fault.c.
References fault_page_free(), fault_page_release(), faultstate::first_m, faultstate::first_object, faultstate::m, faultstate::m_cow, faultstate::object, unlock_map(), unlock_vp(), vm_object_deallocate(), vm_object_pip_wakeup(), VM_OBJECT_WLOCK, and VM_OBJECT_WUNLOCK.
Referenced by unlock_and_deallocate(), vm_fault(), and vm_fault_lock_vnode().
|
inlinestatic |
Definition at line 208 of file vm_fault.c.
References VM_OBJECT_ASSERT_WLOCKED, vm_page_free(), vm_page_wired(), and vm_page_xunbusy.
Referenced by fault_deallocate(), vm_fault(), vm_fault_getpages(), and vm_fault_next().
|
inlinestatic |
Definition at line 190 of file vm_fault.c.
References vm_page_deactivate(), and vm_page_xunbusy.
Referenced by fault_deallocate(), and vm_fault_busy_sleep().
SYSCTL_INT | ( | _machdep | , |
OID_AUTO | , | ||
prot_fault_translation | , | ||
CTLFLAG_RWTUN | , | ||
& | prot_fault_translation, | ||
0 | , | ||
"Control signal to deliver on protection fault" | |||
) |
SYSCTL_INT | ( | _vm | , |
OID_AUTO | , | ||
pfault_oom_attempts | , | ||
CTLFLAG_RWTUN | , | ||
& | vm_pfault_oom_attempts, | ||
0 | , | ||
"Number of page allocation attempts in page fault handler before it " "triggers OOM handling" | |||
) |
SYSCTL_INT | ( | _vm | , |
OID_AUTO | , | ||
pfault_oom_wait | , | ||
CTLFLAG_RWTUN | , | ||
& | vm_pfault_oom_wait, | ||
0 | , | ||
"Number of seconds to wait for free pages before retrying " "the page fault handler" | |||
) |
|
static |
Definition at line 262 of file vm_fault.c.
References fault_deallocate(), faultstate::object, and VM_OBJECT_WUNLOCK.
Referenced by vm_fault(), vm_fault_allocate(), vm_fault_allocate_oom(), vm_fault_getpages(), vm_fault_lock_vnode(), and vm_fault_object().
|
inlinestatic |
Definition at line 224 of file vm_fault.c.
References faultstate::entry, faultstate::lookup_still_valid, faultstate::map, and vm_map_lookup_done().
Referenced by fault_deallocate(), vm_fault_busy_sleep(), vm_fault_getpages(), and vm_fault_populate().
|
static |
Definition at line 234 of file vm_fault.c.
References faultstate::vp.
Referenced by fault_deallocate(), vm_fault_lock_vnode(), vm_fault_lookup(), and vm_fault_populate().
int vm_fault | ( | vm_map_t | map, |
vm_offset_t | vaddr, | ||
vm_prot_t | fault_type, | ||
int | fault_flags, | ||
vm_page_t * | m_hold | ||
) |
Definition at line 1447 of file vm_fault.c.
References vm_map_entry::eflags, faultstate::entry, FAULT_CONTINUE, fault_deallocate(), FAULT_FAILURE, faultstate::fault_flags, FAULT_HARD, FAULT_OUT_OF_BOUNDS, fault_page_free(), FAULT_PROTECTION_FAILURE, FAULT_RESTART, FAULT_SOFT, FAULT_SUCCESS, faultstate::fault_type, faultstate::first_m, faultstate::first_object, faultstate::first_pindex, KERN_FAILURE, KERN_OUT_OF_BOUNDS, KERN_PROTECTION_FAILURE, KERN_RESOURCE_SHORTAGE, KERN_RESTART, KERN_SUCCESS, faultstate::lookup_still_valid, faultstate::m, faultstate::m_cow, faultstate::m_hold, faultstate::map, MAP_ENTRY_SPLIT_BOUNDARY_MASK, faultstate::nera, vm_map_entry::next_read, faultstate::object, OBJT_VNODE, faultstate::oom_started, PFBAK, PFFOR, faultstate::pindex, vm_map::pmap, pmap_enter(), PMAP_ENTER_WIRED, faultstate::prot, vm_object::type, unlock_and_deallocate(), faultstate::vaddr, vm_fault_allocate(), vm_fault_cow(), vm_fault_dirty(), VM_FAULT_DIRTY, vm_fault_lookup(), vm_fault_next(), VM_FAULT_NOFILL, vm_fault_object(), vm_fault_prefault(), vm_fault_relookup(), vm_fault_soft_fast(), VM_FAULT_WIRE, vm_fault_zerofill(), VM_OBJECT_ASSERT_UNLOCKED, vm_object_pip_add(), vm_object_reference_locked(), VM_OBJECT_RLOCK, VM_OBJECT_RUNLOCK, VM_OBJECT_TRYUPGRADE, VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_activate(), vm_page_all_valid(), vm_page_assert_xbusied, vm_page_wire(), vm_page_xunbusy, VM_PROT_COPY, VM_PROT_WRITE, faultstate::vp, and faultstate::wired.
Referenced by vm_fault_quick_hold_pages(), vm_fault_trap(), and vm_map_wire_locked().
|
static |
Definition at line 1142 of file vm_fault.c.
References vm_object::domain, FAULT_CONTINUE, FAULT_FAILURE, FAULT_OUT_OF_BOUNDS, FAULT_RESTART, FAULT_SUCCESS, faultstate::first_object, vm_object::flags, faultstate::m, OBJ_POPULATE, OBJ_SIZEVNLOCK, faultstate::object, faultstate::oom_started, faultstate::pindex, vm_object::shadow_count, vm_object::size, unlock_and_deallocate(), faultstate::vaddr, VM_ALLOC_SYSTEM, vm_fault_allocate_oom(), vm_fault_lock_vnode(), vm_fault_populate(), vm_object_color(), vm_page_alloc(), vm_pfault_oom_wait, and vm_waitpfault().
Referenced by vm_fault(), and vm_fault_object().
|
static |
Definition at line 1111 of file vm_fault.c.
References faultstate::oom_start_time, faultstate::oom_started, unlock_and_deallocate(), VM_OOM_MEM_PF, vm_pageout_oom(), vm_pfault_oom_attempts, and vm_pfault_oom_wait.
Referenced by vm_fault_allocate().
|
static |
Definition at line 1335 of file vm_fault.c.
References fault_page_release(), faultstate::first_m, faultstate::first_object, faultstate::m, faultstate::object, PGA_REFERENCED, faultstate::pindex, unlock_map(), vm_object_deallocate(), vm_object_pip_wakeup(), VM_OBJECT_WUNLOCK, vm_page_aflag_set(), vm_page_busy_sleep(), and vm_page_lookup().
Referenced by vm_fault_object().
void vm_fault_copy_entry | ( | vm_map_t | dst_map, |
vm_map_t | src_map, | ||
vm_map_entry_t | dst_entry, | ||
vm_map_entry_t | src_entry, | ||
vm_ooffset_t * | fork_charge | ||
) |
Definition at line 1966 of file vm_fault.c.
References vm_object::backing_object, vm_object::backing_object_offset, vm_object::charge, vm_map_entry::cred, vm_object::cred, vm_object::domain, vm_map_entry::eflags, vm_map_entry::end, vm_object::flags, MAP_ENTRY_COW, MAP_ENTRY_NEEDS_COPY, OBJ_COLORED, OBJ_SWAP, faultstate::object, vm_map_entry::object, OBJT_DEFAULT, OFF_TO_IDX, vm_map_entry::offset, vm_object::pg_color, faultstate::pindex, vm_map::pmap, pmap_copy_page(), pmap_enter(), PMAP_ENTER_WIRED, PQ_INACTIVE, faultstate::prot, vm_map_entry::protection, vm_object::size, vm_map_entry::start, vm_object::type, faultstate::vaddr, VM_ALLOC_NORMAL, VM_ALLOC_WAITFAIL, vm_map_object::vm_object, vm_object_allocate_anon(), vm_object_deallocate(), vm_object_reference(), VM_OBJECT_RLOCK, VM_OBJECT_RUNLOCK, VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_activate(), vm_page_all_valid(), vm_page_alloc(), vm_page_busy_acquire(), vm_page_lookup(), vm_page_unwire(), vm_page_wire(), vm_page_wired(), vm_page_xunbusy, VM_PROT_WRITE, and vm_wait().
Referenced by vm_map_copy_entry(), and vm_map_protect().
|
static |
Definition at line 929 of file vm_fault.c.
References vm_object::backing_object, vm_object::backing_object_offset, faultstate::fault_flags, faultstate::first_m, faultstate::first_object, faultstate::first_pindex, vm_object::flags, vm_object::handle, faultstate::m, faultstate::m_cow, OBJ_ANON, OBJ_ONEMAPPING, faultstate::object, OFF_TO_IDX, faultstate::pindex, pmap_copy_page(), pmap_remove_all(), PQ_INACTIVE, vm_object::ref_count, vm_object::shadow_count, VM_FAULT_WIRE, vm_object_pip_wakeup(), VM_OBJECT_TRYWLOCK, VM_OBJECT_WUNLOCK, vm_page_assert_xbusied, vm_page_dirty(), vm_page_remove_xbusy(), vm_page_replace(), vm_page_unwire(), vm_page_valid(), vm_page_wire(), and faultstate::wired.
Referenced by vm_fault().
|
static |
Definition at line 270 of file vm_fault.c.
References vm_map_entry::eflags, faultstate::entry, faultstate::fault_flags, faultstate::fault_type, MAP_ENTRY_NOSYNC, PGA_NOSYNC, faultstate::prot, VM_FAULT_DIRTY, VM_FAULT_WIRE, vm_object_set_writeable_dirty(), vm_page_aflag_clear(), vm_page_aflag_set(), VM_PAGE_OBJECT_BUSY_ASSERT, vm_page_set_dirty(), VM_PROT_WRITE, and VPO_UNMANAGED.
Referenced by vm_fault(), vm_fault_populate(), and vm_fault_soft_fast().
int vm_fault_disable_pagefaults | ( | void | ) |
Definition at line 2170 of file vm_fault.c.
|
static |
Definition at line 1730 of file vm_fault.c.
References faultstate::entry, faultstate::first_object, vm_object::flags, faultstate::m, faultstate::map, OBJ_FICTITIOUS, OBJ_UNMANAGED, faultstate::object, OFF_TO_IDX, vm_map_entry::offset, vm_map::pmap, pmap_advise(), vm_map_entry::start, faultstate::vaddr, VM_FAULT_DONTNEED_MIN, VM_OBJECT_ASSERT_UNLOCKED, VM_OBJECT_RLOCK, VM_OBJECT_RUNLOCK, vm_page_all_valid(), vm_page_busied, vm_page_deactivate(), vm_page_find_least(), and vm_page_inactive().
Referenced by vm_fault_readahead().
void vm_fault_enable_pagefaults | ( | int | save | ) |
Definition at line 2177 of file vm_fault.c.
|
static |
Definition at line 1218 of file vm_fault.c.
References vm_map_entry::end, faultstate::entry, FAULT_CONTINUE, FAULT_HARD, FAULT_OUT_OF_BOUNDS, fault_page_free(), FAULT_RESTART, faultstate::m, faultstate::map, MAP_ENTRY_BEHAV_RANDOM, faultstate::nera, faultstate::object, faultstate::pindex, vm_map_entry::start, vm_map::system_map, unlock_and_deallocate(), unlock_map(), faultstate::vaddr, vm_fault_lock_vnode(), VM_FAULT_READ_DEFAULT, vm_fault_readahead(), vm_map_entry_behavior(), VM_OBJECT_WLOCK, VM_PAGER_BAD, VM_PAGER_ERROR, VM_PAGER_FAIL, vm_pager_get_pages(), VM_PAGER_OK, and faultstate::vp.
Referenced by vm_fault_object().
|
static |
Definition at line 729 of file vm_fault.c.
References FAULT_CONTINUE, fault_deallocate(), FAULT_RESTART, vm_object::handle, faultstate::object, OBJT_VNODE, vm_object::type, unlock_and_deallocate(), unlock_vp(), and faultstate::vp.
Referenced by vm_fault_allocate(), and vm_fault_getpages().
|
static |
Definition at line 830 of file vm_fault.c.
References vm_map_entry::eflags, faultstate::entry, faultstate::fault_flags, faultstate::fault_type, faultstate::first_object, faultstate::first_pindex, KERN_RESOURCE_SHORTAGE, KERN_SUCCESS, faultstate::lookup_still_valid, faultstate::map, MAP_ENTRY_GUARD, MAP_ENTRY_IN_TRANSITION, MAP_ENTRY_NEEDS_WAKEUP, MAP_ENTRY_NOFAULT, faultstate::map_generation, faultstate::prot, vm_map::timestamp, unlock_vp(), faultstate::vaddr, VM_FAULT_WIRE, vm_map_lock, vm_map_lookup(), vm_map_lookup_entry(), vm_map_unlock, vm_map_unlock_and_wait, vm_map_unlock_read, VM_PROT_COPY, VM_PROT_FAULT_LOOKUP, faultstate::wired, and vm_map_entry::wiring_thread.
Referenced by vm_fault().
|
static |
Definition at line 1035 of file vm_fault.c.
References vm_object::backing_object, vm_object::backing_object_offset, fault_page_free(), faultstate::first_m, faultstate::first_object, faultstate::m, faultstate::object, OFF_TO_IDX, faultstate::pindex, VM_OBJECT_ASSERT_WLOCKED, vm_object_pip_add(), vm_object_pip_wakeup(), VM_OBJECT_WLOCK, and VM_OBJECT_WUNLOCK.
Referenced by vm_fault().
|
static |
Definition at line 1365 of file vm_fault.c.
References FAULT_CONTINUE, FAULT_PROTECTION_FAILURE, FAULT_RESTART, FAULT_SOFT, faultstate::first_object, vm_object::flags, faultstate::m, OBJ_DEAD, faultstate::object, OBJT_DEAD, OBJT_DEFAULT, faultstate::pindex, vm_object::type, unlock_and_deallocate(), vm_fault_allocate(), vm_fault_busy_sleep(), vm_fault_getpages(), VM_OBJECT_ASSERT_WLOCKED, VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_all_valid(), vm_page_lookup(), and vm_page_tryxbusy().
Referenced by vm_fault().
|
static |
Definition at line 440 of file vm_fault.c.
References vm_object::backing_object, vm_map_entry::eflags, vm_map_entry::end, faultstate::entry, FAULT_CONTINUE, FAULT_FAILURE, faultstate::fault_flags, FAULT_RESTART, FAULT_SUCCESS, faultstate::fault_type, faultstate::first_object, faultstate::first_pindex, IDX_TO_OFF, KERN_PROTECTION_FAILURE, KERN_SUCCESS, faultstate::lookup_still_valid, faultstate::m, faultstate::m_hold, faultstate::map, MAP_ENTRY_SPLIT_BOUNDARY_MASK, MAP_ENTRY_SPLIT_BOUNDARY_SHIFT, faultstate::map_generation, vm_map_entry::max_protection, faultstate::object, OFF_TO_IDX, vm_map_entry::offset, vm_object::paging_in_progress, vm_map::pmap, pmap_enter(), PMAP_ENTER_LARGEPAGE, PMAP_ENTER_WIRED, faultstate::prot, vm_map_entry::start, vm_map::timestamp, unlock_map(), unlock_vp(), vm_fault_dirty(), vm_fault_populate_check_page(), vm_fault_populate_cleanup(), vm_fault_restore_map_lock(), VM_FAULT_WIRE, VM_OBJECT_ASSERT_WLOCKED, VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_activate(), vm_page_lookup(), vm_page_next(), VM_PAGE_TO_PHYS, vm_page_wire(), vm_page_xunbusy, VM_PAGER_BAD, VM_PAGER_OK, vm_pager_populate(), and faultstate::wired.
Referenced by vm_fault_allocate().
|
static |
Definition at line 409 of file vm_fault.c.
References vm_page_all_valid(), and vm_page_xbusied.
Referenced by vm_fault_populate(), and vm_fault_populate_cleanup().
|
static |
Definition at line 423 of file vm_fault.c.
References vm_fault_populate_check_page(), VM_OBJECT_ASSERT_WLOCKED, vm_page_deactivate(), vm_page_lookup(), vm_page_next(), and vm_page_xunbusy.
Referenced by vm_fault_populate().
|
static |
Definition at line 1795 of file vm_fault.c.
References vm_object::backing_object, vm_object::backing_object_offset, vm_map_entry::end, faultstate::entry, faultstate::m, faultstate::map, vm_map_entry::object, OBJT_DEFAULT, vm_map_entry::offset, PG_FICTITIOUS, faultstate::pindex, vm_map::pmap, pmap_enter_quick(), pmap_is_prefaultable(), vm_map_entry::protection, vm_map_entry::start, vm_object::type, vm_map_object::vm_object, VM_OBJECT_RLOCK, VM_OBJECT_RUNLOCK, vm_page_all_valid(), vm_page_lookup(), and vmspace_pmap().
Referenced by vm_fault(), and vm_fault_soft_fast().
int vm_fault_quick_hold_pages | ( | vm_map_t | map, |
vm_offset_t | addr, | ||
vm_size_t | len, | ||
vm_prot_t | prot, | ||
vm_page_t * | ma, | ||
int | max_count | ||
) |
Definition at line 1877 of file vm_fault.c.
References KERN_SUCCESS, faultstate::map, vm_map::pmap, pmap_extract_and_hold(), PQ_INACTIVE, faultstate::prot, vm_fault(), VM_FAULT_NORMAL, vm_map_range_valid(), vm_page_dirty(), vm_page_unwire(), VM_PROT_QUICK_NOFAULT, and VM_PROT_WRITE.
|
static |
Definition at line 782 of file vm_fault.c.
References faultstate::entry, faultstate::lookup_still_valid, MAP_ENTRY_BEHAV_RANDOM, MAP_ENTRY_BEHAV_SEQUENTIAL, vm_map_entry::next_read, vm_map_entry::read_ahead, faultstate::vaddr, vm_fault_dontneed(), VM_FAULT_READ_AHEAD_MAX, VM_FAULT_READ_AHEAD_MIN, and vm_map_entry_behavior().
Referenced by vm_fault_getpages().
|
static |
Definition at line 878 of file vm_fault.c.
References faultstate::entry, faultstate::fault_flags, faultstate::fault_type, faultstate::first_object, faultstate::first_pindex, KERN_FAILURE, KERN_RESTART, KERN_SUCCESS, faultstate::lookup_still_valid, faultstate::map, faultstate::map_generation, faultstate::prot, vm_map::timestamp, faultstate::vaddr, VM_FAULT_WIRE, vm_map_lookup_locked(), vm_map_trylock_read, and faultstate::wired.
Referenced by vm_fault().
|
static |
Definition at line 394 of file vm_fault.c.
References faultstate::first_object, faultstate::lookup_still_valid, faultstate::map, vm_object::paging_in_progress, vm_map_lock_read, vm_map_trylock_read, VM_OBJECT_ASSERT_WLOCKED, VM_OBJECT_WLOCK, and VM_OBJECT_WUNLOCK.
Referenced by vm_fault_populate().
|
static |
Definition at line 316 of file vm_fault.c.
References vm_map_entry::end, faultstate::entry, FAULT_FAILURE, FAULT_SUCCESS, faultstate::fault_type, faultstate::first_object, faultstate::first_pindex, vm_object::flags, KERN_SUCCESS, faultstate::m_hold, faultstate::map, OBJ_UNMANAGED, PFBAK, PFFOR, PG_FICTITIOUS, vm_map::pmap, pmap_enter(), PMAP_ENTER_NOSLEEP, PMAP_ENTER_WIRED, faultstate::prot, PS_ALL_DIRTY, PS_ALL_VALID, PS_NONE_BUSY, vm_map_entry::start, faultstate::vaddr, vm_fault_dirty(), vm_fault_prefault(), vm_map_lookup_done(), vm_object_busy(), VM_OBJECT_RUNLOCK, vm_object_unbusy(), vm_page_all_valid(), vm_page_busied, vm_page_lookup(), vm_page_ps_test(), VM_PAGE_TO_PHYS, vm_page_wire(), VM_PROT_WRITE, faultstate::vp, and faultstate::wired.
Referenced by vm_fault().
int vm_fault_trap | ( | vm_map_t | map, |
vm_offset_t | vaddr, | ||
vm_prot_t | fault_type, | ||
int | fault_flags, | ||
int * | signo, | ||
int * | ucode | ||
) |
Definition at line 657 of file vm_fault.c.
References KERN_FAILURE, KERN_INVALID_ADDRESS, KERN_OUT_OF_BOUNDS, KERN_PROTECTION_FAILURE, KERN_RESOURCE_SHORTAGE, KERN_SUCCESS, kernel_map, prot_fault_translation, UCODE_PAGEFLT, and vm_fault().
|
static |
Definition at line 1077 of file vm_fault.c.
References faultstate::first_m, faultstate::first_object, faultstate::first_pindex, faultstate::m, faultstate::object, PG_ZERO, faultstate::pindex, pmap_zero_page(), vm_object_pip_wakeup(), and vm_page_valid().
Referenced by vm_fault().
|
static |
Definition at line 628 of file vm_fault.c.
Referenced by vm_fault_trap().
|
static |
Definition at line 177 of file vm_fault.c.
Referenced by vm_fault_allocate_oom().
|
static |
Definition at line 183 of file vm_fault.c.
Referenced by vm_fault_allocate(), and vm_fault_allocate_oom().