From 04ddcc5e64fbd126744813b98421c423306de91a Mon Sep 17 00:00:00 2001 From: Beau McCartney Date: Sat, 5 Oct 2024 11:17:37 -0600 Subject: [PATCH] add VM_FLAGS constants --- core/sys/darwin/mach_darwin.odin | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/core/sys/darwin/mach_darwin.odin b/core/sys/darwin/mach_darwin.odin index 80dbb13c3..61a3164a5 100644 --- a/core/sys/darwin/mach_darwin.odin +++ b/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 */