Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/vm_object.h
Show First 20 Lines • Show All 105 Lines • ▼ Show 20 Lines | struct vm_object { | ||||
struct domainset_ref domain; /* NUMA policy. */ | struct domainset_ref domain; /* NUMA policy. */ | ||||
int generation; /* generation ID */ | int generation; /* generation ID */ | ||||
int ref_count; /* How many refs?? */ | int ref_count; /* How many refs?? */ | ||||
int shadow_count; /* how many objects that this is a shadow for */ | int shadow_count; /* how many objects that this is a shadow for */ | ||||
vm_memattr_t memattr; /* default memory attribute for pages */ | vm_memattr_t memattr; /* default memory attribute for pages */ | ||||
objtype_t type; /* type of pager */ | objtype_t type; /* type of pager */ | ||||
u_short flags; /* see below */ | u_short flags; /* see below */ | ||||
u_short pg_color; /* (c) color of first page in obj */ | u_short pg_color; /* (c) color of first page in obj */ | ||||
u_int paging_in_progress; /* Paging (in or out) so don't collapse or destroy */ | volatile u_int paging_in_progress; /* Paging (in or out) so don't collapse or destroy */ | ||||
int resident_page_count; /* number of resident pages */ | int resident_page_count; /* number of resident pages */ | ||||
struct vm_object *backing_object; /* object that I'm a shadow of */ | struct vm_object *backing_object; /* object that I'm a shadow of */ | ||||
vm_ooffset_t backing_object_offset;/* Offset in backing object */ | vm_ooffset_t backing_object_offset;/* Offset in backing object */ | ||||
TAILQ_ENTRY(vm_object) pager_object_list; /* list of all objects of this pager type */ | TAILQ_ENTRY(vm_object) pager_object_list; /* list of all objects of this pager type */ | ||||
LIST_HEAD(, vm_reserv) rvq; /* list of reservations */ | LIST_HEAD(, vm_reserv) rvq; /* list of reservations */ | ||||
void *handle; | void *handle; | ||||
union { | union { | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | |||||
* Flags | * Flags | ||||
*/ | */ | ||||
#define OBJ_FICTITIOUS 0x0001 /* (c) contains fictitious pages */ | #define OBJ_FICTITIOUS 0x0001 /* (c) contains fictitious pages */ | ||||
#define OBJ_UNMANAGED 0x0002 /* (c) contains unmanaged pages */ | #define OBJ_UNMANAGED 0x0002 /* (c) contains unmanaged pages */ | ||||
#define OBJ_POPULATE 0x0004 /* pager implements populate() */ | #define OBJ_POPULATE 0x0004 /* pager implements populate() */ | ||||
#define OBJ_DEAD 0x0008 /* dead objects (during rundown) */ | #define OBJ_DEAD 0x0008 /* dead objects (during rundown) */ | ||||
#define OBJ_NOSPLIT 0x0010 /* dont split this object */ | #define OBJ_NOSPLIT 0x0010 /* dont split this object */ | ||||
#define OBJ_UMTXDEAD 0x0020 /* umtx pshared was terminated */ | #define OBJ_UMTXDEAD 0x0020 /* umtx pshared was terminated */ | ||||
#define OBJ_PIPWNT 0x0040 /* paging in progress wanted */ | |||||
#define OBJ_PG_DTOR 0x0080 /* dont reset object, leave that for dtor */ | #define OBJ_PG_DTOR 0x0080 /* dont reset object, leave that for dtor */ | ||||
#define OBJ_MIGHTBEDIRTY 0x0100 /* object might be dirty, only for vnode */ | #define OBJ_MIGHTBEDIRTY 0x0100 /* object might be dirty, only for vnode */ | ||||
#define OBJ_TMPFS_NODE 0x0200 /* object belongs to tmpfs VREG node */ | #define OBJ_TMPFS_NODE 0x0200 /* object belongs to tmpfs VREG node */ | ||||
#define OBJ_TMPFS_DIRTY 0x0400 /* dirty tmpfs obj */ | #define OBJ_TMPFS_DIRTY 0x0400 /* dirty tmpfs obj */ | ||||
#define OBJ_COLORED 0x1000 /* pg_color is defined */ | #define OBJ_COLORED 0x1000 /* pg_color is defined */ | ||||
#define OBJ_ONEMAPPING 0x2000 /* One USE (a single, non-forked) mapping flag */ | #define OBJ_ONEMAPPING 0x2000 /* One USE (a single, non-forked) mapping flag */ | ||||
#define OBJ_DISCONNECTWNT 0x4000 /* disconnect from vnode wanted */ | #define OBJ_DISCONNECTWNT 0x4000 /* disconnect from vnode wanted */ | ||||
#define OBJ_TMPFS 0x8000 /* has tmpfs vnode allocated */ | #define OBJ_TMPFS 0x8000 /* has tmpfs vnode allocated */ | ||||
▲ Show 20 Lines • Show All 109 Lines • ▼ Show 20 Lines | if (object != NULL && | ||||
(object->flags & (OBJ_COLORED | OBJ_FICTITIOUS)) == OBJ_COLORED) { | (object->flags & (OBJ_COLORED | OBJ_FICTITIOUS)) == OBJ_COLORED) { | ||||
return (true); | return (true); | ||||
} | } | ||||
return (false); | return (false); | ||||
} | } | ||||
void vm_object_clear_flag(vm_object_t object, u_short bits); | 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_add(vm_object_t object, short i); | ||||
void vm_object_pip_subtract(vm_object_t object, short i); | |||||
void vm_object_pip_wakeup(vm_object_t object); | void vm_object_pip_wakeup(vm_object_t object); | ||||
void vm_object_pip_wakeupn(vm_object_t object, short i); | void vm_object_pip_wakeupn(vm_object_t object, short i); | ||||
void vm_object_pip_wait(vm_object_t object, char *waitid); | void vm_object_pip_wait(vm_object_t object, char *waitid); | ||||
void vm_object_pip_wait_unlocked(vm_object_t object, char *waitid); | |||||
void umtx_shm_object_init(vm_object_t object); | void umtx_shm_object_init(vm_object_t object); | ||||
void umtx_shm_object_terminated(vm_object_t object); | void umtx_shm_object_terminated(vm_object_t object); | ||||
extern int umtx_shm_vnobj_persistent; | extern int umtx_shm_vnobj_persistent; | ||||
vm_object_t vm_object_allocate (objtype_t, vm_pindex_t); | vm_object_t vm_object_allocate (objtype_t, vm_pindex_t); | ||||
boolean_t vm_object_coalesce(vm_object_t, vm_ooffset_t, vm_size_t, vm_size_t, | boolean_t vm_object_coalesce(vm_object_t, vm_ooffset_t, vm_size_t, vm_size_t, | ||||
boolean_t); | boolean_t); | ||||
Show All 29 Lines |