X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/2d21ac55c334faf3a56e5634905ed6987fc787d4..9d749ea394c01276fa19e397e70f46858e849c76:/osfmk/mach/vm_purgable.h diff --git a/osfmk/mach/vm_purgable.h b/osfmk/mach/vm_purgable.h index 32463755b..4ae0892b8 100644 --- a/osfmk/mach/vm_purgable.h +++ b/osfmk/mach/vm_purgable.h @@ -57,6 +57,39 @@ typedef int vm_purgable_t; */ #define VM_PURGABLE_SET_STATE ((vm_purgable_t) 0) /* set state of purgeable object */ #define VM_PURGABLE_GET_STATE ((vm_purgable_t) 1) /* get state of purgeable object */ +#define VM_PURGABLE_PURGE_ALL ((vm_purgable_t) 2) /* purge all volatile objects now */ +#define VM_PURGABLE_SET_STATE_FROM_KERNEL ((vm_purgable_t) 3) /* set state from kernel */ + +/* + * Purgeable state: + * + * 31 15 14 13 12 11 10 8 7 6 5 4 3 2 1 0 + * +-----+--+-----+--+----+-+-+---+---+---+ + * | |NA|DEBUG| | GRP| |B|ORD| |STA| + * +-----+--+-----+--+----+-+-+---+---+---+ + * " ": unused (i.e. reserved) + * STA: purgeable state + * see: VM_PURGABLE_NONVOLATILE=0 to VM_PURGABLE_DENY=3 + * ORD: order + * see:VM_VOLATILE_ORDER_* + * B: behavior + * see: VM_PURGABLE_BEHAVIOR_* + * GRP: group + * see: VM_VOLATILE_GROUP_* + * DEBUG: debug + * see: VM_PURGABLE_DEBUG_* + * NA: no aging + * see: VM_PURGABLE_NO_AGING* + */ + +#define VM_PURGABLE_NO_AGING_SHIFT 16 +#define VM_PURGABLE_NO_AGING_MASK (0x1 << VM_PURGABLE_NO_AGING_SHIFT) +#define VM_PURGABLE_NO_AGING (0x1 << VM_PURGABLE_NO_AGING_SHIFT) + +#define VM_PURGABLE_DEBUG_SHIFT 12 +#define VM_PURGABLE_DEBUG_MASK (0x3 << VM_PURGABLE_DEBUG_SHIFT) +#define VM_PURGABLE_DEBUG_EMPTY (0x1 << VM_PURGABLE_DEBUG_SHIFT) +#define VM_PURGABLE_DEBUG_FAULT (0x2 << VM_PURGABLE_DEBUG_SHIFT) /* * Volatile memory ordering groups (group zero objects are purged before group 1, etc... @@ -65,7 +98,7 @@ typedef int vm_purgable_t; */ #define VM_VOLATILE_GROUP_SHIFT 8 #define VM_VOLATILE_GROUP_MASK (7 << VM_VOLATILE_GROUP_SHIFT) -#define VM_VOLATILE_GROUP_DEFAULT VM_VOLATILE_GROUP_7 +#define VM_VOLATILE_GROUP_DEFAULT VM_VOLATILE_GROUP_0 #define VM_VOLATILE_GROUP_0 (0 << VM_VOLATILE_GROUP_SHIFT) #define VM_VOLATILE_GROUP_1 (1 << VM_VOLATILE_GROUP_SHIFT) @@ -116,7 +149,14 @@ typedef int vm_purgable_t; #define VM_PURGABLE_NONVOLATILE 0 /* purgeable object is non-volatile */ #define VM_PURGABLE_VOLATILE 1 /* purgeable object is volatile */ -#define VM_PURGABLE_EMPTY 2 /* purgeable object is volatile and empty */ -#define VM_PURGABLE_DENY 3 /* (mark) object not purgeable */ +#define VM_PURGABLE_EMPTY 2 /* purgeable object is volatile and empty */ +#define VM_PURGABLE_DENY 3 /* (mark) object not purgeable */ +#define VM_PURGABLE_ALL_MASKS (VM_PURGABLE_STATE_MASK | \ + VM_VOLATILE_ORDER_MASK | \ + VM_PURGABLE_ORDERING_MASK | \ + VM_PURGABLE_BEHAVIOR_MASK | \ + VM_VOLATILE_GROUP_MASK | \ + VM_PURGABLE_DEBUG_MASK | \ + VM_PURGABLE_NO_AGING_MASK) #endif /* _MACH_VM_PURGABLE_H_ */