FreeBSD virtual memory subsystem code
|
#include <sys/queue.h>
#include <sys/_blockcount.h>
#include <sys/_lock.h>
#include <sys/_mutex.h>
#include <sys/_pctrie.h>
#include <sys/_rwlock.h>
#include <sys/_domainset.h>
#include <vm/_vm_radix.h>
Go to the source code of this file.
Data Structures | |
struct | vm_object |
Macros | |
#define | VM_PAGE_HAVE_PGLIST |
#define | OBJ_FICTITIOUS 0x0001 /* (c) contains fictitious pages */ |
#define | OBJ_UNMANAGED 0x0002 /* (c) contains unmanaged pages */ |
#define | OBJ_POPULATE 0x0004 /* pager implements populate() */ |
#define | OBJ_DEAD 0x0008 /* dead objects (during rundown) */ |
#define | OBJ_ANON 0x0010 /* (c) contains anonymous memory */ |
#define | OBJ_UMTXDEAD 0x0020 /* umtx pshared was terminated */ |
#define | OBJ_SIZEVNLOCK 0x0040 /* lock vnode to check obj size */ |
#define | OBJ_PG_DTOR 0x0080 /* dont reset object, leave that for dtor */ |
#define | OBJ_SHADOWLIST 0x0100 /* Object is on the shadow list. */ |
#define | OBJ_SWAP 0x0200 /* object swaps */ |
#define | OBJ_SPLIT 0x0400 /* object is being split */ |
#define | OBJ_COLLAPSING 0x0800 /* Parent of collapse. */ |
#define | OBJ_COLORED 0x1000 /* pg_color is defined */ |
#define | OBJ_ONEMAPPING 0x2000 /* One USE (a single, non-forked) mapping flag */ |
#define | OBJ_PAGERPRIV1 0x4000 /* Pager private */ |
#define | OBJ_PAGERPRIV2 0x8000 /* Pager private */ |
#define | IDX_TO_OFF(idx) (((vm_ooffset_t)(idx)) << PAGE_SHIFT) |
#define | OFF_TO_IDX(off) ((vm_pindex_t)(((vm_ooffset_t)(off)) >> PAGE_SHIFT)) |
#define | OBJ_MAX_SIZE (OFF_TO_IDX(UINT64_MAX) + 1) |
#define | OBJPC_SYNC 0x1 /* sync I/O */ |
#define | OBJPC_INVAL 0x2 /* invalidate */ |
#define | OBJPC_NOSYNC 0x4 /* skip if PGA_NOSYNC */ |
#define | OBJPR_CLEANONLY 0x1 /* Don't remove dirty pages. */ |
#define | OBJPR_NOTMAPPED 0x2 /* Don't unmap pages. */ |
#define | OBJPR_VALIDONLY 0x4 /* Ignore invalid pages. */ |
#define | kernel_object (&kernel_object_store) |
#define | kmem_object (&kernel_object_store) |
#define | VM_OBJECT_ASSERT_LOCKED(object) rw_assert(&(object)->lock, RA_LOCKED) |
#define | VM_OBJECT_ASSERT_RLOCKED(object) rw_assert(&(object)->lock, RA_RLOCKED) |
#define | VM_OBJECT_ASSERT_WLOCKED(object) rw_assert(&(object)->lock, RA_WLOCKED) |
#define | VM_OBJECT_ASSERT_UNLOCKED(object) rw_assert(&(object)->lock, RA_UNLOCKED) |
#define | VM_OBJECT_LOCK_DOWNGRADE(object) rw_downgrade(&(object)->lock) |
#define | VM_OBJECT_RLOCK(object) rw_rlock(&(object)->lock) |
#define | VM_OBJECT_RUNLOCK(object) rw_runlock(&(object)->lock) |
#define | VM_OBJECT_SLEEP(object, wchan, pri, wmesg, timo) rw_sleep((wchan), &(object)->lock, (pri), (wmesg), (timo)) |
#define | VM_OBJECT_TRYRLOCK(object) rw_try_rlock(&(object)->lock) |
#define | VM_OBJECT_TRYWLOCK(object) rw_try_wlock(&(object)->lock) |
#define | VM_OBJECT_TRYUPGRADE(object) rw_try_upgrade(&(object)->lock) |
#define | VM_OBJECT_WLOCK(object) rw_wlock(&(object)->lock) |
#define | VM_OBJECT_WOWNED(object) rw_wowned(&(object)->lock) |
#define | VM_OBJECT_WUNLOCK(object) rw_wunlock(&(object)->lock) |
#define | VM_OBJECT_DROP(object) lock_class_rw.lc_unlock(&(object)->lock.lock_object) |
#define | VM_OBJECT_PICKUP(object, state) lock_class_rw.lc_lock(&(object)->lock.lock_object, (state)) |
#define | VM_OBJECT_ASSERT_PAGING(object) |
#define | VM_OBJECT_ASSERT_REFERENCE(object) |
#define | VM_OBJECT_ASSERT_BUSY(object) MPASS(vm_object_busied((object))) |
Variables | |
struct object_q | vm_object_list |
struct mtx | vm_object_list_mtx |
struct vm_object | kernel_object_store |
int | umtx_shm_vnobj_persistent |
#define IDX_TO_OFF | ( | idx | ) | (((vm_ooffset_t)(idx)) << PAGE_SHIFT) |
Definition at line 220 of file vm_object.h.
#define kernel_object (&kernel_object_store) |
Definition at line 245 of file vm_object.h.
#define kmem_object (&kernel_object_store) |
Definition at line 246 of file vm_object.h.
#define OBJ_ANON 0x0010 /* (c) contains anonymous memory */ |
Definition at line 200 of file vm_object.h.
#define OBJ_COLLAPSING 0x0800 /* Parent of collapse. */ |
Definition at line 207 of file vm_object.h.
#define OBJ_COLORED 0x1000 /* pg_color is defined */ |
Definition at line 208 of file vm_object.h.
#define OBJ_DEAD 0x0008 /* dead objects (during rundown) */ |
Definition at line 199 of file vm_object.h.
#define OBJ_FICTITIOUS 0x0001 /* (c) contains fictitious pages */ |
Definition at line 196 of file vm_object.h.
#define OBJ_MAX_SIZE (OFF_TO_IDX(UINT64_MAX) + 1) |
Definition at line 222 of file vm_object.h.
#define OBJ_ONEMAPPING 0x2000 /* One USE (a single, non-forked) mapping flag */ |
Definition at line 209 of file vm_object.h.
#define OBJ_PAGERPRIV1 0x4000 /* Pager private */ |
Definition at line 210 of file vm_object.h.
#define OBJ_PAGERPRIV2 0x8000 /* Pager private */ |
Definition at line 211 of file vm_object.h.
#define OBJ_PG_DTOR 0x0080 /* dont reset object, leave that for dtor */ |
Definition at line 203 of file vm_object.h.
#define OBJ_POPULATE 0x0004 /* pager implements populate() */ |
Definition at line 198 of file vm_object.h.
#define OBJ_SHADOWLIST 0x0100 /* Object is on the shadow list. */ |
Definition at line 204 of file vm_object.h.
#define OBJ_SIZEVNLOCK 0x0040 /* lock vnode to check obj size */ |
Definition at line 202 of file vm_object.h.
#define OBJ_SPLIT 0x0400 /* object is being split */ |
Definition at line 206 of file vm_object.h.
#define OBJ_SWAP 0x0200 /* object swaps */ |
Definition at line 205 of file vm_object.h.
#define OBJ_UMTXDEAD 0x0020 /* umtx pshared was terminated */ |
Definition at line 201 of file vm_object.h.
#define OBJ_UNMANAGED 0x0002 /* (c) contains unmanaged pages */ |
Definition at line 197 of file vm_object.h.
#define OBJPC_INVAL 0x2 /* invalidate */ |
Definition at line 227 of file vm_object.h.
#define OBJPC_NOSYNC 0x4 /* skip if PGA_NOSYNC */ |
Definition at line 228 of file vm_object.h.
#define OBJPC_SYNC 0x1 /* sync I/O */ |
Definition at line 226 of file vm_object.h.
#define OBJPR_CLEANONLY 0x1 /* Don't remove dirty pages. */ |
Definition at line 233 of file vm_object.h.
#define OBJPR_NOTMAPPED 0x2 /* Don't unmap pages. */ |
Definition at line 234 of file vm_object.h.
#define OBJPR_VALIDONLY 0x4 /* Ignore invalid pages. */ |
Definition at line 235 of file vm_object.h.
#define OFF_TO_IDX | ( | off | ) | ((vm_pindex_t)(((vm_ooffset_t)(off)) >> PAGE_SHIFT)) |
Definition at line 221 of file vm_object.h.
#define VM_OBJECT_ASSERT_BUSY | ( | object | ) | MPASS(vm_object_busied((object))) |
Definition at line 352 of file vm_object.h.
#define VM_OBJECT_ASSERT_LOCKED | ( | object | ) | rw_assert(&(object)->lock, RA_LOCKED) |
Definition at line 248 of file vm_object.h.
#define VM_OBJECT_ASSERT_PAGING | ( | object | ) |
Definition at line 281 of file vm_object.h.
#define VM_OBJECT_ASSERT_REFERENCE | ( | object | ) |
Definition at line 284 of file vm_object.h.
#define VM_OBJECT_ASSERT_RLOCKED | ( | object | ) | rw_assert(&(object)->lock, RA_RLOCKED) |
Definition at line 250 of file vm_object.h.
#define VM_OBJECT_ASSERT_UNLOCKED | ( | object | ) | rw_assert(&(object)->lock, RA_UNLOCKED) |
Definition at line 254 of file vm_object.h.
#define VM_OBJECT_ASSERT_WLOCKED | ( | object | ) | rw_assert(&(object)->lock, RA_WLOCKED) |
Definition at line 252 of file vm_object.h.
#define VM_OBJECT_DROP | ( | object | ) | lock_class_rw.lc_unlock(&(object)->lock.lock_object) |
Definition at line 276 of file vm_object.h.
#define VM_OBJECT_LOCK_DOWNGRADE | ( | object | ) | rw_downgrade(&(object)->lock) |
Definition at line 256 of file vm_object.h.
#define VM_OBJECT_PICKUP | ( | object, | |
state | |||
) | lock_class_rw.lc_lock(&(object)->lock.lock_object, (state)) |
Definition at line 278 of file vm_object.h.
#define VM_OBJECT_RLOCK | ( | object | ) | rw_rlock(&(object)->lock) |
Definition at line 258 of file vm_object.h.
#define VM_OBJECT_RUNLOCK | ( | object | ) | rw_runlock(&(object)->lock) |
Definition at line 260 of file vm_object.h.
#define VM_OBJECT_SLEEP | ( | object, | |
wchan, | |||
pri, | |||
wmesg, | |||
timo | |||
) | rw_sleep((wchan), &(object)->lock, (pri), (wmesg), (timo)) |
Definition at line 262 of file vm_object.h.
#define VM_OBJECT_TRYRLOCK | ( | object | ) | rw_try_rlock(&(object)->lock) |
Definition at line 264 of file vm_object.h.
#define VM_OBJECT_TRYUPGRADE | ( | object | ) | rw_try_upgrade(&(object)->lock) |
Definition at line 268 of file vm_object.h.
#define VM_OBJECT_TRYWLOCK | ( | object | ) | rw_try_wlock(&(object)->lock) |
Definition at line 266 of file vm_object.h.
#define VM_OBJECT_WLOCK | ( | object | ) | rw_wlock(&(object)->lock) |
Definition at line 270 of file vm_object.h.
#define VM_OBJECT_WOWNED | ( | object | ) | rw_wowned(&(object)->lock) |
Definition at line 272 of file vm_object.h.
#define VM_OBJECT_WUNLOCK | ( | object | ) | rw_wunlock(&(object)->lock) |
Definition at line 274 of file vm_object.h.
#define VM_PAGE_HAVE_PGLIST |
Definition at line 97 of file vm_object.h.
TAILQ_HEAD | ( | object_q | , |
vm_object | |||
) |
TAILQ_HEAD | ( | pglist | , |
vm_page | |||
) |
void umtx_shm_object_init | ( | vm_object_t | object | ) |
void umtx_shm_object_terminated | ( | vm_object_t | object | ) |
Referenced by vm_object_deallocate(), vm_object_deallocate_vnode(), and vnode_destroy_vobject().
vm_object_t vm_object_allocate | ( | objtype_t | type, |
vm_pindex_t | size | ||
) |
Definition at line 404 of file vm_object.c.
References _vm_object_allocate(), vm_object::flags, OBJ_COLORED, OBJ_FICTITIOUS, OBJ_SWAP, OBJ_UNMANAGED, obj_zone, OBJT_DEAD, OBJT_DEFAULT, OBJT_DEVICE, OBJT_MGTDEVICE, OBJT_PHYS, OBJT_SG, OBJT_SWAP, OBJT_VNODE, vm_object::size, vm_object::type, and uma_zalloc().
Referenced by cdev_pager_allocate(), default_pager_alloc(), kstack_cache_init(), phys_pager_allocate(), sg_pager_alloc(), swap_pager_alloc_init(), and vnode_pager_alloc().
vm_object_t vm_object_allocate_anon | ( | vm_pindex_t | size, |
vm_object_t | backing_object, | ||
struct ucred * | cred, | ||
vm_size_t | charge | ||
) |
Definition at line 461 of file vm_object.c.
References _vm_object_allocate(), vm_object::backing_object, vm_object::charge, vm_object::cred, vm_object::flags, vm_object::handle, OBJ_ANON, OBJ_ONEMAPPING, obj_zone, OBJT_DEFAULT, vm_object::size, and uma_zalloc().
Referenced by vm_fault_copy_entry(), vm_map_lookup(), vm_object_shadow(), and vm_object_split().
vm_object_t vm_object_allocate_dyn | ( | objtype_t | dyntype, |
vm_pindex_t | size, | ||
u_short | flags | ||
) |
Definition at line 442 of file vm_object.c.
References _vm_object_allocate(), vm_object::flags, obj_zone, OBJT_FIRST_DYN, vm_object::size, and uma_zalloc().
|
inlinestatic |
Definition at line 347 of file vm_object.h.
References vm_object::busy.
Referenced by _vm_page_busy_sleep(), vm_page_trysbusy(), vm_page_tryxbusy(), and vm_page_wire().
void vm_object_busy | ( | vm_object_t | object | ) |
Definition at line 2496 of file vm_object.c.
References vm_object::busy, and VM_OBJECT_ASSERT_LOCKED.
Referenced by vm_fault_soft_fast().
void vm_object_busy_wait | ( | vm_object_t | object, |
const char * | wmesg | ||
) |
Definition at line 2514 of file vm_object.c.
References vm_object::busy, and VM_OBJECT_ASSERT_UNLOCKED.
Referenced by _vm_page_busy_sleep().
void vm_object_clear_flag | ( | vm_object_t | object, |
u_short | bits | ||
) |
Definition at line 312 of file vm_object.c.
References VM_OBJECT_ASSERT_WLOCKED.
Referenced by swap_pager_copy(), swap_pager_dealloc(), vm_map_copy_swap_object(), vm_map_insert(), vm_object_backing_insert_ref(), vm_object_collapse(), vm_object_shadow(), vm_object_split(), and vmspace_fork().
boolean_t vm_object_coalesce | ( | vm_object_t | prev_object, |
vm_ooffset_t | prev_offset, | ||
vm_size_t | prev_size, | ||
vm_size_t | next_size, | ||
boolean_t | reserved | ||
) |
Definition at line 2289 of file vm_object.c.
References vm_object::backing_object, vm_object::charge, vm_object::cred, vm_object::flags, OBJ_ANON, OBJ_ONEMAPPING, OFF_TO_IDX, vm_object::ref_count, vm_object::size, swap_reserve_by_cred(), vm_object_collapse(), vm_object_page_remove(), VM_OBJECT_WLOCK, and VM_OBJECT_WUNLOCK.
Referenced by vm_map_insert().
void vm_object_collapse | ( | vm_object_t | object | ) |
Definition at line 1927 of file vm_object.c.
References vm_object::backing_object, vm_object::backing_object_offset, vm_object::flags, OBJ_ANON, OBJ_COLLAPSING, OBJ_DEAD, OBJ_SWAP, OFF_TO_IDX, vm_object::ref_count, vm_object::shadow_count, swap_pager_copy(), VM_OBJECT_ASSERT_WLOCKED, vm_object_backing_collapse_wait(), vm_object_backing_insert_ref(), vm_object_backing_remove_locked(), vm_object_backing_transfer(), vm_object_clear_flag(), vm_object_collapse_scan(), vm_object_pip_add(), vm_object_pip_wakeup(), vm_object_scan_all_shadowed(), vm_object_set_flag(), vm_object_terminate(), VM_OBJECT_WLOCK, and VM_OBJECT_WUNLOCK.
Referenced by vm_map_copy_swap_object(), vm_object_coalesce(), and vm_object_deallocate_anon().
|
static |
Definition at line 315 of file vm_object.h.
References vm_object::flags, and OBJ_COLORED.
Referenced by vm_fault_allocate(), vm_mmap_vnode(), and vnode_pager_alloc().
void vm_object_deallocate | ( | vm_object_t | object | ) |
Definition at line 625 of file vm_object.c.
References vm_object::backing_object, vm_object::flags, OBJ_ANON, OBJ_DEAD, OBJ_ONEMAPPING, OBJT_DEFAULT, OBJT_SWAP, OBJT_VNODE, vm_object::ref_count, vm_object::shadow_count, vm_object::type, umtx_shm_object_terminated(), vm_object_backing_remove(), vm_object_deallocate_anon(), vm_object_deallocate_vnode(), VM_OBJECT_RLOCK, VM_OBJECT_RUNLOCK, vm_object_set_flag(), vm_object_terminate(), VM_OBJECT_WLOCK, and VM_OBJECT_WUNLOCK.
Referenced by cdev_pager_allocate(), fault_deallocate(), phys_pager_allocate(), swap_pager_alloc_init(), vm_fault_busy_sleep(), vm_fault_copy_entry(), vm_map_sync(), vm_mmap(), vm_object_split(), vm_pageout_clean(), and vmspace_fork().
void vm_object_destroy | ( | vm_object_t | object | ) |
Definition at line 705 of file vm_object.c.
References vm_object::charge, vm_object::cred, obj_zone, swap_release_by_cred(), and uma_zfree().
Referenced by vm_object_terminate(), and vnode_pager_alloc().
void vm_object_init | ( | void | ) |
Definition at line 278 of file vm_object.c.
References _vm_object_allocate(), default_phys_pg_ops, kernel_object, OBJ_COLORED, OBJ_UNMANAGED, obj_zone, OBJT_PHYS, UMA_ALIGN_PTR, uma_zcreate(), UMA_ZONE_NOFREE, vm_object_list, vm_object_list_mtx, vm_object_zinit(), and vm_radix_zinit().
Referenced by vm_mem_init().
bool vm_object_is_active | ( | vm_object_t | obj | ) |
Definition at line 2531 of file vm_object.c.
References vm_object::ref_count, and vm_object::shadow_count.
Referenced by vmtotal().
int vm_object_kvme_type | ( | vm_object_t | object, |
struct vnode ** | vpp | ||
) |
Definition at line 611 of file vm_pager.c.
References vm_object::type, VM_OBJECT_ASSERT_LOCKED, and vm_object_vnode().
Referenced by vm_object_list_handler().
void vm_object_madvise | ( | vm_object_t | object, |
vm_pindex_t | pindex, | ||
vm_pindex_t | end, | ||
int | advice | ||
) |
Definition at line 1331 of file vm_object.c.
References vm_object::backing_object, vm_object::backing_object_offset, OFF_TO_IDX, PG_FICTITIOUS, PGA_REFERENCED, vm_object_advice_applies(), vm_object_madvise_freespace(), VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_advise(), vm_page_aflag_set(), vm_page_all_valid(), vm_page_busy_sleep(), vm_page_find_least(), vm_page_lookup(), vm_page_tryxbusy(), vm_page_wired(), vm_page_xunbusy, and VPO_UNMANAGED.
Referenced by vm_map_madvise().
bool vm_object_mightbedirty | ( | vm_object_t | object | ) |
Definition at line 594 of file vm_pager.c.
References vm_object::type.
Referenced by vm_object_page_clean(), and vm_object_sync().
bool vm_object_mightbedirty_ | ( | vm_object_t | object | ) |
Definition at line 2384 of file vm_object.c.
References vm_object::cleangeneration, and vm_object::generation.
boolean_t vm_object_page_clean | ( | vm_object_t | object, |
vm_ooffset_t | start, | ||
vm_ooffset_t | end, | ||
int | flags | ||
) |
Definition at line 1047 of file vm_object.c.
References vm_object::generation, OBJPC_INVAL, OBJPC_SYNC, OBJT_VNODE, OFF_TO_IDX, vm_object::resident_page_count, vm_object::size, vm_object::type, VM_ALLOC_WAITFAIL, VM_OBJECT_ASSERT_WLOCKED, vm_object_mightbedirty(), vm_object_page_collect_flush(), vm_object_page_remove_write(), vm_page_busy_acquire(), vm_page_find_least(), vm_page_none_valid(), vm_page_xunbusy, VM_PAGER_CLUSTER_OK, VM_PAGER_PUT_INVAL, and VM_PAGER_PUT_SYNC.
Referenced by vm_object_sync(), and vnode_destroy_vobject().
void vm_object_page_noreuse | ( | vm_object_t | object, |
vm_pindex_t | start, | ||
vm_pindex_t | end | ||
) |
Definition at line 2208 of file vm_object.c.
References vm_object::flags, OBJ_FICTITIOUS, OBJ_UNMANAGED, vm_object::resident_page_count, VM_OBJECT_ASSERT_LOCKED, vm_page_deactivate_noreuse(), and vm_page_find_least().
void vm_object_page_remove | ( | vm_object_t | object, |
vm_pindex_t | start, | ||
vm_pindex_t | end, | ||
int | options | ||
) |
Definition at line 2101 of file vm_object.c.
References vm_object::flags, OBJ_UNMANAGED, OBJPR_CLEANONLY, OBJPR_NOTMAPPED, OBJPR_VALIDONLY, PG_FICTITIOUS, pmap_remove_all(), vm_object::ref_count, vm_object::resident_page_count, vm_object::size, VM_OBJECT_ASSERT_WLOCKED, vm_object_pip_add(), vm_object_pip_wakeup(), VM_OBJECT_WLOCK, vm_page_busy_sleep(), vm_page_find_least(), vm_page_free(), vm_page_invalid(), vm_page_none_valid(), vm_page_try_remove_all(), vm_page_try_remove_write(), vm_page_tryxbusy(), vm_page_undirty(), vm_page_wired(), vm_page_xunbusy, and vm_pager_freespace().
Referenced by vm_object_coalesce(), vm_object_sync(), vnode_pager_purge_range(), and vnode_pager_setsize().
void vm_object_pip_add | ( | vm_object_t | object, |
short | i | ||
) |
Definition at line 344 of file vm_object.c.
References vm_object::paging_in_progress.
Referenced by swap_pager_getpages_locked(), swap_pager_swapoff_object(), vm_fault(), vm_fault_next(), vm_object_collapse(), vm_object_deallocate_anon(), vm_object_page_remove(), vm_page_grab_valid(), vm_pageout_flush(), and vm_thread_swapin().
void vm_object_pip_wait | ( | vm_object_t | object, |
const char * | waitid | ||
) |
Definition at line 380 of file vm_object.c.
References vm_object::lock, vm_object::paging_in_progress, and VM_OBJECT_ASSERT_WLOCKED.
Referenced by swap_pager_dealloc(), swap_pager_swapoff_object(), vm_object_collapse_wait(), vm_object_terminate(), and vnode_pager_dealloc().
void vm_object_pip_wait_unlocked | ( | vm_object_t | object, |
const char * | waitid | ||
) |
Definition at line 390 of file vm_object.c.
References vm_object::paging_in_progress, and VM_OBJECT_ASSERT_UNLOCKED.
void vm_object_pip_wakeup | ( | vm_object_t | object | ) |
Definition at line 352 of file vm_object.c.
References vm_object_pip_wakeupn().
Referenced by fault_deallocate(), vm_fault_busy_sleep(), vm_fault_cow(), vm_fault_next(), vm_fault_zerofill(), vm_object_collapse(), vm_object_deallocate_anon(), vm_object_page_remove(), vm_pageout_flush(), and vm_thread_swapin().
void vm_object_pip_wakeupn | ( | vm_object_t | object, |
short | i | ||
) |
Definition at line 359 of file vm_object.c.
References vm_object::paging_in_progress.
Referenced by swap_pager_swapoff_object(), swp_pager_async_iodone(), vm_object_pip_wakeup(), and vm_page_grab_valid().
boolean_t vm_object_populate | ( | vm_object_t | object, |
vm_pindex_t | start, | ||
vm_pindex_t | end | ||
) |
Definition at line 2240 of file vm_object.c.
References VM_ALLOC_NORMAL, VM_OBJECT_ASSERT_WLOCKED, vm_page_grab_valid(), vm_page_lookup(), vm_page_xunbusy, and VM_PAGER_OK.
void vm_object_print | ( | long | addr, |
boolean_t | have_addr, | ||
long | count, | ||
char * | modif | ||
) |
void vm_object_reference | ( | vm_object_t | object | ) |
Definition at line 504 of file vm_object.c.
References vm_object::flags, OBJ_DEAD, OBJT_VNODE, vm_object::ref_count, vm_object::type, and vm_object_reference_vnode().
Referenced by vm_fault_copy_entry(), vm_map_copy_entry(), vm_map_copy_swap_object(), vm_map_insert(), vm_map_sync(), vm_mmap_vnode(), vm_object_backing_insert_ref(), vmspace_fork(), and vnode_pager_alloc().
void vm_object_reference_locked | ( | vm_object_t | object | ) |
Definition at line 526 of file vm_object.c.
References vm_object::flags, vm_object::handle, OBJ_DEAD, OBJT_VNODE, vm_object::ref_count, vm_object::type, and VM_OBJECT_ASSERT_LOCKED.
Referenced by vm_fault(), vm_map_copy_swap_object(), vm_object_backing_insert_ref(), vm_object_shadow(), vm_pageout_clean(), and vm_pager_object_lookup().
|
static |
Definition at line 325 of file vm_object.h.
References vm_object::flags, OBJ_COLORED, and OBJ_FICTITIOUS.
Referenced by vm_page_alloc_contig_domain(), and vm_page_alloc_domain_after().
|
static |
Definition at line 294 of file vm_object.h.
Referenced by cdev_pager_allocate(), phys_pager_allocate(), swp_pager_meta_build(), vm_object_collapse(), vm_object_deallocate(), vm_object_split(), vnode_destroy_vobject(), and vnode_pager_alloc().
int vm_object_set_memattr | ( | vm_object_t | object, |
vm_memattr_t | memattr | ||
) |
Definition at line 329 of file vm_object.c.
References KERN_FAILURE, KERN_INVALID_ARGUMENT, KERN_SUCCESS, vm_object::memattr, vm_object::memq, OBJT_DEAD, vm_object::type, and VM_OBJECT_ASSERT_WLOCKED.
void vm_object_set_writeable_dirty | ( | vm_object_t | object | ) |
Definition at line 582 of file vm_pager.c.
References vm_object::type.
Referenced by vm_fault_dirty(), vm_page_insert_radixdone(), and vm_page_replace_hold().
void vm_object_set_writeable_dirty_ | ( | vm_object_t | object | ) |
Definition at line 2378 of file vm_object.c.
References vm_object::generation.
void vm_object_shadow | ( | vm_object_t * | object, |
vm_ooffset_t * | offset, | ||
vm_size_t | length, | ||
struct ucred * | cred, | ||
bool | shared | ||
) |
Definition at line 1445 of file vm_object.c.
References vm_object::backing_object_offset, vm_object::domain, vm_object::flags, OBJ_ANON, OBJ_COLORED, OBJ_ONEMAPPING, OFF_TO_IDX, vm_object::pg_color, vm_object::ref_count, vm_object_allocate_anon(), vm_object_backing_insert(), vm_object_clear_flag(), vm_object_reference_locked(), VM_OBJECT_WLOCK, and VM_OBJECT_WUNLOCK.
Referenced by vm_map_lookup(), and vmspace_fork().
void vm_object_split | ( | vm_map_entry_t | entry | ) |
Definition at line 1525 of file vm_object.c.
References vm_object::backing_object, vm_object::backing_object_offset, vm_object::charge, vm_object::cred, vm_object::domain, vm_map_entry::end, vm_object::flags, vm_object::memq, OBJ_ANON, OBJ_ONEMAPPING, OBJ_SPLIT, OBJ_SWAP, vm_map_entry::object, OBJT_SWAP, OFF_TO_IDX, vm_map_entry::offset, vm_object::ref_count, vm_map_entry::start, swap_pager_copy(), vm_object::type, vm_map_object::vm_object, vm_object_allocate_anon(), vm_object_backing_insert_ref(), vm_object_clear_flag(), vm_object_collapse_wait(), vm_object_deallocate(), vm_object_set_flag(), VM_OBJECT_WLOCK, VM_OBJECT_WUNLOCK, vm_page_busy_sleep(), vm_page_find_least(), vm_page_free(), vm_page_none_valid(), vm_page_remove(), vm_page_rename(), vm_page_tryxbusy(), vm_page_xunbusy, and vm_radix_wait().
Referenced by vm_map_copy_swap_object().
boolean_t vm_object_sync | ( | vm_object_t | object, |
vm_ooffset_t | offset, | ||
vm_size_t | size, | ||
boolean_t | syncio, | ||
boolean_t | invalidate | ||
) |
Definition at line 1195 of file vm_object.c.
References vm_object::backing_object, vm_object::handle, IDX_TO_OFF, OBJPC_INVAL, OBJPC_SYNC, OBJPR_CLEANONLY, OBJPR_NOTMAPPED, OBJT_DEVICE, OBJT_VNODE, OFF_TO_IDX, old_msync, vm_object::size, vm_object::type, vm_object_mightbedirty(), vm_object_page_clean(), vm_object_page_remove(), VM_OBJECT_WLOCK, and VM_OBJECT_WUNLOCK.
Referenced by vm_map_sync().
void vm_object_terminate | ( | vm_object_t | object | ) |
Definition at line 953 of file vm_object.c.
References vm_object::backing_object, vm_object::cred, vm_object::flags, OBJ_COLLAPSING, OBJ_DEAD, OBJ_PG_DTOR, OBJ_SWAP, OBJT_DEFAULT, vm_object::ref_count, vm_object::type, VM_OBJECT_ASSERT_WLOCKED, vm_object_destroy(), vm_object_pip_wait(), vm_object_terminate_pages(), VM_OBJECT_WUNLOCK, and vm_pager_deallocate().
Referenced by vm_object_collapse(), vm_object_deallocate(), and vnode_destroy_vobject().
void vm_object_unbusy | ( | vm_object_t | object | ) |
Definition at line 2507 of file vm_object.c.
References vm_object::busy.
Referenced by vm_fault_soft_fast().
void vm_object_unwire | ( | vm_object_t | object, |
vm_ooffset_t | offset, | ||
vm_size_t | length, | ||
uint8_t | queue | ||
) |
Definition at line 2398 of file vm_object.c.
References vm_object::backing_object, vm_object::backing_object_offset, vm_object::flags, OBJ_FICTITIOUS, OFF_TO_IDX, VM_ALLOC_IGN_SBUSY, VM_OBJECT_RLOCK, VM_OBJECT_RUNLOCK, vm_page_busy_sleep(), vm_page_find_least(), vm_page_lookup(), vm_page_sunbusy(), vm_page_trysbusy(), and vm_page_unwire().
Referenced by vm_map_wire_entry_failure().
struct vnode * vm_object_vnode | ( | vm_object_t | object | ) |
Definition at line 2481 of file vm_object.c.
References VM_OBJECT_ASSERT_LOCKED, and vm_pager_getvp().
Referenced by vm_object_kvme_type().
|
extern |
Definition at line 152 of file vm_object.c.
|
extern |
Referenced by vm_object_deallocate_vnode().
|
extern |
Definition at line 149 of file vm_object.c.
Referenced by swap_pager_swapoff(), vm_object_init(), vm_object_list_handler(), vm_object_zinit(), and vmtotal().
|
extern |
Definition at line 150 of file vm_object.c.
Referenced by swap_pager_swapoff(), vm_object_init(), vm_object_list_handler(), vm_object_zinit(), and vmtotal().