aboutsummaryrefslogtreecommitdiff
path: root/core/sys/linux
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2025-05-12 16:45:51 +0200
committerJeroen van Rijn <Kelimion@users.noreply.github.com>2025-05-12 16:45:51 +0200
commitdec3d6959df1a7a876782f3e233d0320d41a0fad (patch)
treed53e54f577ecb56c3a7f0b72458e28ae4c309b77 /core/sys/linux
parentd2d4ac8120409abbfd5be9ac9890fa2b2536f3ed (diff)
Update `linux.Map_Flags_Bits`
Fixes #5151 - Removes `SHARED_VALIDATE` from the enum and turns it into `Map_Shared_Validate :: Map_Flags{.SHARED, .PRIVATE}` so it has the proper value of 0x03. - Adds `DROPPABLE`. - Adds constants `MAP_HUGE_SHIFT` and `MAP_HUGE_MASK`. - Adds the huge page precomputed constants from `mman.h`, defined as the log2 of the size shifted left by `MAP_HUGE_SHIFT`: Map_Huge_16KB Map_Huge_64KB Map_Huge_512KB Map_Huge_1MB Map_Huge_2MB Map_Huge_8MB Map_Huge_16MB Map_Huge_32MB Map_Huge_256MB Map_Huge_512MB Map_Huge_1GB Map_Huge_2GB Map_Huge_16GB
Diffstat (limited to 'core/sys/linux')
-rw-r--r--core/sys/linux/bits.odin8
-rw-r--r--core/sys/linux/types.odin15
2 files changed, 21 insertions, 2 deletions
diff --git a/core/sys/linux/bits.odin b/core/sys/linux/bits.odin
index 53660dc8f..88f211427 100644
--- a/core/sys/linux/bits.odin
+++ b/core/sys/linux/bits.odin
@@ -579,7 +579,7 @@ Inotify_Event_Bits :: enum u32 {
/*
Bits for Mem_Protection bitfield
*/
-Mem_Protection_Bits :: enum{
+Mem_Protection_Bits :: enum {
READ = 0,
WRITE = 1,
EXEC = 2,
@@ -598,7 +598,7 @@ Mem_Protection_Bits :: enum{
Map_Flags_Bits :: enum {
SHARED = 0,
PRIVATE = 1,
- SHARED_VALIDATE = 2,
+ DROPPABLE = 3,
FIXED = 4,
ANONYMOUS = 5,
// platform-dependent section start
@@ -619,6 +619,10 @@ Map_Flags_Bits :: enum {
UNINITIALIZED = 26,
}
+// Not actually flags, but a shift and mask for when HUGETLB is defined
+MAP_HUGE_SHIFT :: 26
+MAP_HUGE_MASK :: 63
+
/*
Bits for MLock_Flags
*/
diff --git a/core/sys/linux/types.odin b/core/sys/linux/types.odin
index 8f2284f56..66af3395e 100644
--- a/core/sys/linux/types.odin
+++ b/core/sys/linux/types.odin
@@ -371,6 +371,21 @@ Mem_Protection :: bit_set[Mem_Protection_Bits; i32]
*/
Map_Flags :: bit_set[Map_Flags_Bits; i32]
+Map_Shared_Validate :: Map_Flags{.SHARED, .PRIVATE}
+Map_Huge_16KB :: transmute(Map_Flags)(u32(14) << MAP_HUGE_SHIFT)
+Map_Huge_64KB :: transmute(Map_Flags)(u32(16) << MAP_HUGE_SHIFT)
+Map_Huge_512KB :: transmute(Map_Flags)(u32(19) << MAP_HUGE_SHIFT)
+Map_Huge_1MB :: transmute(Map_Flags)(u32(20) << MAP_HUGE_SHIFT)
+Map_Huge_2MB :: transmute(Map_Flags)(u32(21) << MAP_HUGE_SHIFT)
+Map_Huge_8MB :: transmute(Map_Flags)(u32(23) << MAP_HUGE_SHIFT)
+Map_Huge_16MB :: transmute(Map_Flags)(u32(24) << MAP_HUGE_SHIFT)
+Map_Huge_32MB :: transmute(Map_Flags)(u32(25) << MAP_HUGE_SHIFT)
+Map_Huge_256MB :: transmute(Map_Flags)(u32(28) << MAP_HUGE_SHIFT)
+Map_Huge_512MB :: transmute(Map_Flags)(u32(29) << MAP_HUGE_SHIFT)
+Map_Huge_1GB :: transmute(Map_Flags)(u32(30) << MAP_HUGE_SHIFT)
+Map_Huge_2GB :: transmute(Map_Flags)(u32(31) << MAP_HUGE_SHIFT)
+Map_Huge_16GB :: transmute(Map_Flags)(u32(34) << MAP_HUGE_SHIFT)
+
/*
Flags for mlock(2).
*/