FreeBSD virtual memory subsystem code
vm_object.h File Reference
#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>
Include dependency graph for vm_object.h:
This graph shows which files directly or indirectly include this file:

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)))
 

Functions

 TAILQ_HEAD (pglist, vm_page)
 
 TAILQ_HEAD (object_q, vm_object)
 
static __inline void vm_object_set_flag (vm_object_t object, u_short bits)
 
static __inline void vm_object_color (vm_object_t object, u_short color)
 
static __inline bool vm_object_reserv (vm_object_t object)
 
void vm_object_clear_flag (vm_object_t object, u_short bits)
 
void vm_object_pip_add (vm_object_t object, short i)
 
void vm_object_pip_wakeup (vm_object_t object)
 
void vm_object_pip_wakeupn (vm_object_t object, short i)
 
void vm_object_pip_wait (vm_object_t object, const char *waitid)
 
void vm_object_pip_wait_unlocked (vm_object_t object, const char *waitid)
 
void vm_object_busy (vm_object_t object)
 
void vm_object_unbusy (vm_object_t object)
 
void vm_object_busy_wait (vm_object_t object, const char *wmesg)
 
static bool vm_object_busied (vm_object_t object)
 
void umtx_shm_object_init (vm_object_t object)
 
void umtx_shm_object_terminated (vm_object_t object)
 
vm_object_t vm_object_allocate (objtype_t, vm_pindex_t)
 
vm_object_t vm_object_allocate_anon (vm_pindex_t, vm_object_t, struct ucred *, vm_size_t)
 
vm_object_t vm_object_allocate_dyn (objtype_t, vm_pindex_t, u_short)
 
boolean_t vm_object_coalesce (vm_object_t, vm_ooffset_t, vm_size_t, vm_size_t, boolean_t)
 
void vm_object_collapse (vm_object_t)
 
void vm_object_deallocate (vm_object_t)
 
void vm_object_destroy (vm_object_t)
 
void vm_object_terminate (vm_object_t)
 
void vm_object_set_writeable_dirty (vm_object_t)
 
void vm_object_set_writeable_dirty_ (vm_object_t object)
 
bool vm_object_mightbedirty (vm_object_t object)
 
bool vm_object_mightbedirty_ (vm_object_t object)
 
void vm_object_init (void)
 
int vm_object_kvme_type (vm_object_t object, struct vnode **vpp)
 
void vm_object_madvise (vm_object_t, vm_pindex_t, vm_pindex_t, int)
 
boolean_t vm_object_page_clean (vm_object_t object, vm_ooffset_t start, vm_ooffset_t end, int flags)
 
void vm_object_page_noreuse (vm_object_t object, vm_pindex_t start, vm_pindex_t end)
 
void vm_object_page_remove (vm_object_t object, vm_pindex_t start, vm_pindex_t end, int options)
 
boolean_t vm_object_populate (vm_object_t, vm_pindex_t, vm_pindex_t)
 
void vm_object_print (long addr, boolean_t have_addr, long count, char *modif)
 
void vm_object_reference (vm_object_t)
 
void vm_object_reference_locked (vm_object_t)
 
int vm_object_set_memattr (vm_object_t object, vm_memattr_t memattr)
 
void vm_object_shadow (vm_object_t *, vm_ooffset_t *, vm_size_t, struct ucred *, bool)
 
void vm_object_split (vm_map_entry_t)
 
boolean_t vm_object_sync (vm_object_t, vm_ooffset_t, vm_size_t, boolean_t, boolean_t)
 
void vm_object_unwire (vm_object_t object, vm_ooffset_t offset, vm_size_t length, uint8_t queue)
 
struct vnode * vm_object_vnode (vm_object_t object)
 
bool vm_object_is_active (vm_object_t obj)
 

Variables

struct object_q vm_object_list
 
struct mtx vm_object_list_mtx
 
struct vm_object kernel_object_store
 
int umtx_shm_vnobj_persistent
 

Macro Definition Documentation

◆ IDX_TO_OFF

#define IDX_TO_OFF (   idx)    (((vm_ooffset_t)(idx)) << PAGE_SHIFT)

Definition at line 220 of file vm_object.h.

◆ kernel_object

#define kernel_object   (&kernel_object_store)

Definition at line 245 of file vm_object.h.

◆ kmem_object

#define kmem_object   (&kernel_object_store)

Definition at line 246 of file vm_object.h.

◆ OBJ_ANON

#define OBJ_ANON   0x0010 /* (c) contains anonymous memory */

Definition at line 200 of file vm_object.h.

◆ OBJ_COLLAPSING

#define OBJ_COLLAPSING   0x0800 /* Parent of collapse. */

Definition at line 207 of file vm_object.h.

◆ OBJ_COLORED

#define OBJ_COLORED   0x1000 /* pg_color is defined */

Definition at line 208 of file vm_object.h.

◆ OBJ_DEAD

#define OBJ_DEAD   0x0008 /* dead objects (during rundown) */

Definition at line 199 of file vm_object.h.

◆ OBJ_FICTITIOUS

#define OBJ_FICTITIOUS   0x0001 /* (c) contains fictitious pages */

Definition at line 196 of file vm_object.h.

◆ OBJ_MAX_SIZE

#define OBJ_MAX_SIZE   (OFF_TO_IDX(UINT64_MAX) + 1)

Definition at line 222 of file vm_object.h.

◆ OBJ_ONEMAPPING

#define OBJ_ONEMAPPING   0x2000 /* One USE (a single, non-forked) mapping flag */

Definition at line 209 of file vm_object.h.

◆ OBJ_PAGERPRIV1

#define OBJ_PAGERPRIV1   0x4000 /* Pager private */

Definition at line 210 of file vm_object.h.

◆ OBJ_PAGERPRIV2

#define OBJ_PAGERPRIV2   0x8000 /* Pager private */

Definition at line 211 of file vm_object.h.

◆ OBJ_PG_DTOR

#define OBJ_PG_DTOR   0x0080 /* dont reset object, leave that for dtor */

Definition at line 203 of file vm_object.h.

◆ OBJ_POPULATE

#define OBJ_POPULATE   0x0004 /* pager implements populate() */

Definition at line 198 of file vm_object.h.

◆ OBJ_SHADOWLIST

#define OBJ_SHADOWLIST   0x0100 /* Object is on the shadow list. */

Definition at line 204 of file vm_object.h.

◆ OBJ_SIZEVNLOCK

#define OBJ_SIZEVNLOCK   0x0040 /* lock vnode to check obj size */

Definition at line 202 of file vm_object.h.

◆ OBJ_SPLIT

#define OBJ_SPLIT   0x0400 /* object is being split */

Definition at line 206 of file vm_object.h.

◆ OBJ_SWAP

#define OBJ_SWAP   0x0200 /* object swaps */

Definition at line 205 of file vm_object.h.

◆ OBJ_UMTXDEAD

#define OBJ_UMTXDEAD   0x0020 /* umtx pshared was terminated */

Definition at line 201 of file vm_object.h.

◆ OBJ_UNMANAGED

#define OBJ_UNMANAGED   0x0002 /* (c) contains unmanaged pages */

Definition at line 197 of file vm_object.h.

◆ OBJPC_INVAL

#define OBJPC_INVAL   0x2 /* invalidate */

Definition at line 227 of file vm_object.h.

◆ OBJPC_NOSYNC

#define OBJPC_NOSYNC   0x4 /* skip if PGA_NOSYNC */

Definition at line 228 of file vm_object.h.

◆ OBJPC_SYNC

#define OBJPC_SYNC   0x1 /* sync I/O */

Definition at line 226 of file vm_object.h.

◆ OBJPR_CLEANONLY

#define OBJPR_CLEANONLY   0x1 /* Don't remove dirty pages. */

Definition at line 233 of file vm_object.h.

◆ OBJPR_NOTMAPPED

#define OBJPR_NOTMAPPED   0x2 /* Don't unmap pages. */

Definition at line 234 of file vm_object.h.

◆ OBJPR_VALIDONLY

#define OBJPR_VALIDONLY   0x4 /* Ignore invalid pages. */

Definition at line 235 of file vm_object.h.

◆ OFF_TO_IDX

#define OFF_TO_IDX (   off)    ((vm_pindex_t)(((vm_ooffset_t)(off)) >> PAGE_SHIFT))

Definition at line 221 of file vm_object.h.

◆ VM_OBJECT_ASSERT_BUSY

#define VM_OBJECT_ASSERT_BUSY (   object)    MPASS(vm_object_busied((object)))

Definition at line 352 of file vm_object.h.

◆ VM_OBJECT_ASSERT_LOCKED

#define VM_OBJECT_ASSERT_LOCKED (   object)     rw_assert(&(object)->lock, RA_LOCKED)

Definition at line 248 of file vm_object.h.

◆ VM_OBJECT_ASSERT_PAGING

#define VM_OBJECT_ASSERT_PAGING (   object)
Value:
KASSERT(blockcount_read(&(object)->paging_in_progress) != 0, \
("vm_object %p is not paging", object))

Definition at line 281 of file vm_object.h.

◆ VM_OBJECT_ASSERT_REFERENCE

#define VM_OBJECT_ASSERT_REFERENCE (   object)
Value:
KASSERT((object)->reference_count != 0, \
("vm_object %p is not referenced", object))

Definition at line 284 of file vm_object.h.

◆ VM_OBJECT_ASSERT_RLOCKED

#define VM_OBJECT_ASSERT_RLOCKED (   object)     rw_assert(&(object)->lock, RA_RLOCKED)

Definition at line 250 of file vm_object.h.

◆ VM_OBJECT_ASSERT_UNLOCKED

#define VM_OBJECT_ASSERT_UNLOCKED (   object)     rw_assert(&(object)->lock, RA_UNLOCKED)

Definition at line 254 of file vm_object.h.

◆ VM_OBJECT_ASSERT_WLOCKED

#define VM_OBJECT_ASSERT_WLOCKED (   object)     rw_assert(&(object)->lock, RA_WLOCKED)

Definition at line 252 of file vm_object.h.

◆ VM_OBJECT_DROP

#define VM_OBJECT_DROP (   object)     lock_class_rw.lc_unlock(&(object)->lock.lock_object)

Definition at line 276 of file vm_object.h.

◆ VM_OBJECT_LOCK_DOWNGRADE

#define VM_OBJECT_LOCK_DOWNGRADE (   object)     rw_downgrade(&(object)->lock)

Definition at line 256 of file vm_object.h.

◆ VM_OBJECT_PICKUP

#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.

◆ VM_OBJECT_RLOCK

#define VM_OBJECT_RLOCK (   object)     rw_rlock(&(object)->lock)

Definition at line 258 of file vm_object.h.

◆ VM_OBJECT_RUNLOCK

#define VM_OBJECT_RUNLOCK (   object)     rw_runlock(&(object)->lock)

Definition at line 260 of file vm_object.h.

◆ VM_OBJECT_SLEEP

#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.

◆ VM_OBJECT_TRYRLOCK

#define VM_OBJECT_TRYRLOCK (   object)     rw_try_rlock(&(object)->lock)

Definition at line 264 of file vm_object.h.

◆ VM_OBJECT_TRYUPGRADE

#define VM_OBJECT_TRYUPGRADE (   object)     rw_try_upgrade(&(object)->lock)

Definition at line 268 of file vm_object.h.

◆ VM_OBJECT_TRYWLOCK

#define VM_OBJECT_TRYWLOCK (   object)     rw_try_wlock(&(object)->lock)

Definition at line 266 of file vm_object.h.

◆ VM_OBJECT_WLOCK

#define VM_OBJECT_WLOCK (   object)     rw_wlock(&(object)->lock)

Definition at line 270 of file vm_object.h.

◆ VM_OBJECT_WOWNED

#define VM_OBJECT_WOWNED (   object)     rw_wowned(&(object)->lock)

Definition at line 272 of file vm_object.h.

◆ VM_OBJECT_WUNLOCK

#define VM_OBJECT_WUNLOCK (   object)     rw_wunlock(&(object)->lock)

Definition at line 274 of file vm_object.h.

◆ VM_PAGE_HAVE_PGLIST

#define VM_PAGE_HAVE_PGLIST

Definition at line 97 of file vm_object.h.

Function Documentation

◆ TAILQ_HEAD() [1/2]

TAILQ_HEAD ( object_q  ,
vm_object   
)

◆ TAILQ_HEAD() [2/2]

TAILQ_HEAD ( pglist  ,
vm_page   
)

◆ umtx_shm_object_init()

void umtx_shm_object_init ( vm_object_t  object)

Referenced by _vm_object_allocate().

Here is the caller graph for this function:

◆ umtx_shm_object_terminated()

void umtx_shm_object_terminated ( vm_object_t  object)

Referenced by vm_object_deallocate(), vm_object_deallocate_vnode(), and vnode_destroy_vobject().

Here is the caller graph for this function:

◆ vm_object_allocate()

◆ vm_object_allocate_anon()

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().

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

◆ vm_object_allocate_dyn()

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().

Here is the call graph for this function:

◆ vm_object_busied()

static bool vm_object_busied ( vm_object_t  object)
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().

Here is the caller graph for this function:

◆ vm_object_busy()

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().

Here is the caller graph for this function:

◆ vm_object_busy_wait()

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().

Here is the caller graph for this function:

◆ vm_object_clear_flag()

void vm_object_clear_flag ( vm_object_t  object,
u_short  bits 
)

◆ vm_object_coalesce()

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 
)

◆ vm_object_collapse()

◆ vm_object_color()

static __inline void vm_object_color ( vm_object_t  object,
u_short  color 
)
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().

Here is the caller graph for this function:

◆ vm_object_deallocate()

◆ vm_object_destroy()

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().

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

◆ vm_object_init()

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().

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

◆ vm_object_is_active()

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().

Here is the caller graph for this function:

◆ vm_object_kvme_type()

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().

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

◆ vm_object_madvise()

void vm_object_madvise ( vm_object_t  object,
vm_pindex_t  pindex,
vm_pindex_t  end,
int  advice 
)

◆ vm_object_mightbedirty()

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().

Here is the caller graph for this function:

◆ vm_object_mightbedirty_()

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.

◆ vm_object_page_clean()

boolean_t vm_object_page_clean ( vm_object_t  object,
vm_ooffset_t  start,
vm_ooffset_t  end,
int  flags 
)

◆ vm_object_page_noreuse()

void vm_object_page_noreuse ( vm_object_t  object,
vm_pindex_t  start,
vm_pindex_t  end 
)

◆ vm_object_page_remove()

◆ vm_object_pip_add()

void vm_object_pip_add ( vm_object_t  object,
short  i 
)

◆ vm_object_pip_wait()

void vm_object_pip_wait ( vm_object_t  object,
const char *  waitid 
)

◆ vm_object_pip_wait_unlocked()

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.

◆ vm_object_pip_wakeup()

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().

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

◆ vm_object_pip_wakeupn()

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().

Here is the caller graph for this function:

◆ vm_object_populate()

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.

Here is the call graph for this function:

◆ vm_object_print()

void vm_object_print ( long  addr,
boolean_t  have_addr,
long  count,
char *  modif 
)

◆ vm_object_reference()

void vm_object_reference ( vm_object_t  object)

◆ vm_object_reference_locked()

void vm_object_reference_locked ( vm_object_t  object)

◆ vm_object_reserv()

static __inline bool vm_object_reserv ( vm_object_t  object)
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().

Here is the caller graph for this function:

◆ vm_object_set_flag()

static __inline void vm_object_set_flag ( vm_object_t  object,
u_short  bits 
)
static

◆ vm_object_set_memattr()

int vm_object_set_memattr ( vm_object_t  object,
vm_memattr_t  memattr 
)

◆ vm_object_set_writeable_dirty()

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().

Here is the caller graph for this function:

◆ vm_object_set_writeable_dirty_()

void vm_object_set_writeable_dirty_ ( vm_object_t  object)

Definition at line 2378 of file vm_object.c.

References vm_object::generation.

◆ vm_object_shadow()

void vm_object_shadow ( vm_object_t object,
vm_ooffset_t *  offset,
vm_size_t  length,
struct ucred *  cred,
bool  shared 
)

◆ vm_object_split()

◆ vm_object_sync()

boolean_t vm_object_sync ( vm_object_t  object,
vm_ooffset_t  offset,
vm_size_t  size,
boolean_t  syncio,
boolean_t  invalidate 
)

◆ vm_object_terminate()

◆ vm_object_unbusy()

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().

Here is the caller graph for this function:

◆ vm_object_unwire()

void vm_object_unwire ( vm_object_t  object,
vm_ooffset_t  offset,
vm_size_t  length,
uint8_t  queue 
)

◆ vm_object_vnode()

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().

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

Variable Documentation

◆ kernel_object_store

struct vm_object kernel_object_store
extern

Definition at line 152 of file vm_object.c.

◆ umtx_shm_vnobj_persistent

int umtx_shm_vnobj_persistent
extern

◆ vm_object_list

struct object_q vm_object_list
extern

◆ vm_object_list_mtx

struct mtx vm_object_list_mtx
extern