Browse Source

add VM_FLAGS constants

Beau McCartney 11 months ago
parent
commit
04ddcc5e64
1 changed files with 49 additions and 0 deletions
  1. 49 0
      core/sys/darwin/mach_darwin.odin

+ 49 - 0
core/sys/darwin/mach_darwin.odin

@@ -316,3 +316,52 @@ KERN_NOT_FOUND                : kern_return_t : 56
  */
 
 KERN_RETURN_MAX               : kern_return_t : 0x100
+
+// NOTE(beau): VM_FLAGS constants - ported directly
+/* Maximum return value allowable
+ */
+/*
+ * VM allocation flags:
+ *
+ * VM_FLAGS_FIXED
+ *      (really the absence of VM_FLAGS_ANYWHERE)
+ *	Allocate new VM region at the specified virtual address, if possible.
+ *
+ * VM_FLAGS_ANYWHERE
+ *	Allocate new VM region anywhere it would fit in the address space.
+ *
+ * VM_FLAGS_PURGABLE
+ *	Create a purgable VM object for that new VM region.
+ *
+ * VM_FLAGS_4GB_CHUNK
+ *	The new VM region will be chunked up into 4GB sized pieces.
+ *
+ * VM_FLAGS_NO_PMAP_CHECK
+ *	(for DEBUG kernel config only, ignored for other configs)
+ *	Do not check that there is no stale pmap mapping for the new VM region.
+ *	This is useful for kernel memory allocations at bootstrap when building
+ *	the initial kernel address space while some memory is already in use.
+ *
+ * VM_FLAGS_OVERWRITE
+ *	The new VM region can replace existing VM regions if necessary
+ *	(to be used in combination with VM_FLAGS_FIXED).
+ *
+ * VM_FLAGS_NO_CACHE
+ *	Pages brought in to this VM region are placed on the speculative
+ *	queue instead of the active queue.  In other words, they are not
+ *	cached so that they will be stolen first if memory runs low.
+ */
+
+vm_flags_t :: distinct c.int // NOTE(beau): not in the apple sdk
+
+VM_FLAGS_FIXED              : vm_flags_t : 0x00000000
+VM_FLAGS_ANYWHERE           : vm_flags_t : 0x00000001
+VM_FLAGS_PURGABLE           : vm_flags_t : 0x00000002
+VM_FLAGS_4GB_CHUNK          : vm_flags_t : 0x00000004
+VM_FLAGS_RANDOM_ADDR        : vm_flags_t : 0x00000008
+VM_FLAGS_NO_CACHE           : vm_flags_t : 0x00000010
+VM_FLAGS_RESILIENT_CODESIGN : vm_flags_t : 0x00000020
+VM_FLAGS_RESILIENT_MEDIA    : vm_flags_t : 0x00000040
+VM_FLAGS_PERMANENT          : vm_flags_t : 0x00000080
+VM_FLAGS_TPRO               : vm_flags_t : 0x00001000
+VM_FLAGS_OVERWRITE          : vm_flags_t : 0x00004000  /* delete any existing mappings first */