]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/mach/vm_purgable.h
xnu-2782.10.72.tar.gz
[apple/xnu.git] / osfmk / mach / vm_purgable.h
index 32463755bb98b4cfc2a07829245424746531a158..2fefb86e6a2eb37f2201b80e5e546f448c533c0d 100644 (file)
@@ -57,6 +57,16 @@ 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_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 +75,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 +126,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_ */