Browse Source

mem/virtual: use `sysconf` for retrieving page size and actually use these init procs

Laytan Laats 11 months ago
parent
commit
fd2ad20cd4
2 changed files with 9 additions and 2 deletions
  1. 5 0
      core/mem/virtual/virtual.odin
  2. 4 2
      core/mem/virtual/virtual_posix.odin

+ 5 - 0
core/mem/virtual/virtual.odin

@@ -7,6 +7,11 @@ _ :: runtime
 
 DEFAULT_PAGE_SIZE := uint(4096)
 
+@(init, private)
+platform_memory_init :: proc() {
+	_platform_memory_init()
+}
+
 Allocator_Error :: mem.Allocator_Error
 
 @(require_results)

+ 4 - 2
core/mem/virtual/virtual_posix.odin

@@ -51,8 +51,10 @@ _protect :: proc "contextless" (data: rawptr, size: uint, flags: Protect_Flags)
 }
 
 _platform_memory_init :: proc() {
-	DEFAULT_PAGE_SIZE = posix.PAGE_SIZE
-	
+	// NOTE: `posix.PAGESIZE` due to legacy reasons could be wrong so we use `sysconf`.
+	size := posix.sysconf(._PAGESIZE)
+	DEFAULT_PAGE_SIZE = uint(max(size, posix.PAGESIZE))
+
 	// is power of two
 	assert(DEFAULT_PAGE_SIZE != 0 && (DEFAULT_PAGE_SIZE & (DEFAULT_PAGE_SIZE-1)) == 0)
 }