<def f='src/src/sys/uvm/uvm_object.h' l='56' ll='64'/>
<size>80</size>
<doc f='src/src/sys/uvm/uvm_object.h' l='37'>/*
 * The UVM memory object interface.  Notes:
 *
 * A UVM memory object represents a list of pages, which are managed by
 * the object&apos;s pager operations (uvm_object::pgops).  All pages belonging
 * to an object are owned by it and thus protected by the object lock.
 *
 * The lock (uvm_object::vmobjlock) may be shared amongst the UVM objects.
 * By default, the lock is allocated dynamically using mutex_obj(9) cache.
 * Lock sharing is normally used when there is an underlying object.  For
 * example, vnode representing a file may have an underlying node, which
 * is the case for tmpfs and layered file systems.  In such case, vnode&apos;s
 * UVM object and the underlying UVM object shares the lock (note that the
 * vnode_t::v_interlock points to uvm_object::vmobjlock).
 *
 * The reference count is managed atomically for the anonymous UVM objects.
 * For other objects, it is arbitrary (may use the lock or atomics).
 */</doc>
<mbr r='uvm_object::vmobjlock' o='0' t='kmutex_t *'/>
<mbr r='uvm_object::pgops' o='64' t='const struct uvm_pagerops *'/>
<mbr r='uvm_object::memq' o='128' t='struct pglist'/>
<mbr r='uvm_object::uo_npages' o='256' t='int'/>
<mbr r='uvm_object::uo_refs' o='288' t='unsigned int'/>
<mbr r='uvm_object::rb_tree' o='320' t='struct rb_tree'/>
<mbr r='uvm_object::uo_ubc' o='576' t='struct (anonymous struct at /home/joerg/work/NetBSD/clean/src/sys/uvm/uvm_object.h:63:2)'/>
