Browse Source

Merge branch 'master' of https://github.com/odin-lang/Odin

gingerBill 4 months ago
parent
commit
4d7876bdb0
3 changed files with 25 additions and 2 deletions
  1. 4 2
      core/sys/linux/bits.odin
  2. 19 0
      core/sys/linux/constants.odin
  3. 2 0
      core/sys/linux/types.odin

+ 4 - 2
core/sys/linux/bits.odin

@@ -579,7 +579,7 @@ Inotify_Event_Bits :: enum u32 {
 /*
 /*
 	Bits for Mem_Protection bitfield
 	Bits for Mem_Protection bitfield
 */
 */
-Mem_Protection_Bits :: enum{
+Mem_Protection_Bits :: enum {
 	READ      = 0,
 	READ      = 0,
 	WRITE     = 1,
 	WRITE     = 1,
 	EXEC      = 2,
 	EXEC      = 2,
@@ -594,11 +594,13 @@ Mem_Protection_Bits :: enum{
 
 
 /*
 /*
 	Bits for Map_Flags
 	Bits for Map_Flags
+
+	See `constants.odin` for `MAP_SHARED_VALIDATE` and `MAP_HUGE_16KB`, et al.
 */
 */
 Map_Flags_Bits :: enum {
 Map_Flags_Bits :: enum {
 	SHARED          = 0,
 	SHARED          = 0,
 	PRIVATE         = 1,
 	PRIVATE         = 1,
-	SHARED_VALIDATE = 2,
+	DROPPABLE       = 3,
 	FIXED           = 4,
 	FIXED           = 4,
 	ANONYMOUS       = 5,
 	ANONYMOUS       = 5,
 	// platform-dependent section start
 	// platform-dependent section start

+ 19 - 0
core/sys/linux/constants.odin

@@ -373,3 +373,22 @@ PTRACE_SECCOMP_GET_FILTER     :: PTrace_Seccomp_Get_Filter_Type(.SECCOMP_GET_FIL
 PTRACE_SECCOMP_GET_METADATA   :: PTrace_Seccomp_Get_Metadata_Type(.SECCOMP_GET_METADATA)
 PTRACE_SECCOMP_GET_METADATA   :: PTrace_Seccomp_Get_Metadata_Type(.SECCOMP_GET_METADATA)
 PTRACE_GET_SYSCALL_INFO       :: PTrace_Get_Syscall_Info_Type(.GET_SYSCALL_INFO)
 PTRACE_GET_SYSCALL_INFO       :: PTrace_Get_Syscall_Info_Type(.GET_SYSCALL_INFO)
 PTRACE_GET_RSEQ_CONFIGURATION :: PTrace_Get_RSeq_Configuration_Type(.GET_RSEQ_CONFIGURATION)
 PTRACE_GET_RSEQ_CONFIGURATION :: PTrace_Get_RSeq_Configuration_Type(.GET_RSEQ_CONFIGURATION)
+
+MAP_SHARED_VALIDATE :: Map_Flags{.SHARED, .PRIVATE}
+
+MAP_HUGE_SHIFT :: 26
+MAP_HUGE_MASK  :: 63
+
+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)

+ 2 - 0
core/sys/linux/types.odin

@@ -368,6 +368,8 @@ Mem_Protection :: bit_set[Mem_Protection_Bits; i32]
 
 
 /*
 /*
 	Flags for mmap.
 	Flags for mmap.
+
+	See `constants.odin` for `MAP_SHARED_VALIDATE` and `MAP_HUGE_16KB`, et al.
 */
 */
 Map_Flags :: bit_set[Map_Flags_Bits; i32]
 Map_Flags :: bit_set[Map_Flags_Bits; i32]