Bladeren bron

[sys/info] Move macOS sysctl to sys/unix.

Jeroen van Rijn 2 jaren geleden
bovenliggende
commit
4eafb0ce7f
2 gewijzigde bestanden met toevoegingen van 50 en 48 verwijderingen
  1. 7 48
      core/sys/info/platform_darwin.odin
  2. 43 0
      core/sys/unix/sysctl_darwin.odin

+ 7 - 48
core/sys/info/platform_darwin.odin

@@ -1,11 +1,9 @@
 // +build darwin
 package sysinfo
 
-import sys "core:sys/darwin"
-import "core:intrinsics"
+import sys "core:sys/unix"
 import "core:strconv"
 import "core:strings"
-import "core:fmt"
 
 @(private)
 version_string_buf: [1024]u8
@@ -17,10 +15,10 @@ init_os_version :: proc () {
 	// Start building display version
 	b := strings.builder_from_bytes(version_string_buf[:])
 
-	mib := []i32{CTL_KERN, KERN_OSVERSION}
+	mib := []i32{sys.CTL_KERN, sys.KERN_OSVERSION}
 	build_buf: [12]u8
 
-	ok := sysctl(mib, &build_buf)
+	ok := sys.sysctl(mib, &build_buf)
 	if !ok {
 		strings.write_string(&b, "macOS Unknown")
 		os_version.as_string = strings.to_string(b)
@@ -37,9 +35,9 @@ init_os_version :: proc () {
 		match = .Exact
 	} else {
 		// Match on XNU kernel version
-		mib = []i32{CTL_KERN, KERN_OSRELEASE}
+		mib = []i32{sys.CTL_KERN, sys.KERN_OSRELEASE}
 		version_bits: [12]u8 // enough for 999.999.999\x00
-		have_kernel_version := sysctl(mib, &version_bits)
+		have_kernel_version := sys.sysctl(mib, &version_bits)
 
 		major_ok, minor_ok, patch_ok: bool
 
@@ -114,52 +112,13 @@ init_os_version :: proc () {
 init_ram :: proc() {
 	// Retrieve RAM info using `sysctl`
 
-	mib := []i32{CTL_HW, HW_MEMSIZE}
+	mib := []i32{sys.CTL_HW, sys.HW_MEMSIZE}
 	mem_size: u64
-	if sysctl(mib, &mem_size) {
+	if sys.sysctl(mib, &mem_size) {
 		ram.total_ram = int(mem_size)
 	}
 }
 
-@(private)
-sysctl :: proc(mib: []i32, val: ^$T) -> (ok: bool) {
-	mib := mib
-	result_size := i64(size_of(T))
-
-	res := intrinsics.syscall(
-		sys.unix_offset_syscall(.sysctl),
-		uintptr(raw_data(mib)), uintptr(len(mib)),
-		uintptr(val), uintptr(&result_size),
-		uintptr(0), uintptr(0),
-	)
-	return res == 0
-}
-
-// See sysctl.h for darwin for details
-CTL_KERN    :: 1
-	KERN_OSTYPE    :: 1  // Darwin
-	KERN_OSRELEASE :: 2  // 21.5.0 for 12.4 Monterey
-	KERN_OSREV     :: 3  // i32: system revision
-	KERN_VERSION   :: 4  // Darwin Kernel Version 21.5.0: Tue Apr 26 21:08:22 PDT 2022; root:darwin-8020.121.3~4/RELEASE_X86_64
-	KERN_OSRELDATE :: 26 // i32: OS release date
-	KERN_OSVERSION :: 65 // Build number, e.g. 21F79
-CTL_VM      :: 2
-CTL_VFS     :: 3
-CTL_NET     :: 4
-CTL_DEBUG   :: 5
-CTL_HW      :: 6
-	HW_MACHINE      :: 1  // x86_64
-	HW_MODEL        :: 2  // MacbookPro14,1
-	HW_NCPU         :: 3  /* int: number of cpus */
-	HW_BYTEORDER    :: 4  /* int: machine byte order */
-	HW_MACHINE_ARCH :: 12 /* string: machine architecture */
-	HW_VECTORUNIT   :: 13 /* int: has HW vector unit? */
-	HW_MEMSIZE      :: 24 // u64
-	HW_AVAILCPU     :: 25 /* int: number of available CPUs */
-
-CTL_MACHDEP :: 7
-CTL_USER    :: 8
-
 @(private)
 Darwin_To_Release :: struct {
 	darwin:      [3]int, // Darwin kernel triplet

+ 43 - 0
core/sys/unix/sysctl_darwin.odin

@@ -0,0 +1,43 @@
+//+build darwin
+package unix
+
+import "core:sys/darwin"
+import "core:intrinsics"
+
+sysctl :: proc(mib: []i32, val: ^$T) -> (ok: bool) {
+	mib := mib
+	result_size := i64(size_of(T))
+
+	res := intrinsics.syscall(
+		darwin.unix_offset_syscall(.sysctl),
+		uintptr(raw_data(mib)), uintptr(len(mib)),
+		uintptr(val), uintptr(&result_size),
+		uintptr(0), uintptr(0),
+	)
+	return res == 0
+}
+
+// See sysctl.h for darwin for details
+CTL_KERN    :: 1
+	KERN_OSTYPE    :: 1  // Darwin
+	KERN_OSRELEASE :: 2  // 21.5.0 for 12.4 Monterey
+	KERN_OSREV     :: 3  // i32: system revision
+	KERN_VERSION   :: 4  // Darwin Kernel Version 21.5.0: Tue Apr 26 21:08:22 PDT 2022; root:darwin-8020.121.3~4/RELEASE_X86_64
+	KERN_OSRELDATE :: 26 // i32: OS release date
+	KERN_OSVERSION :: 65 // Build number, e.g. 21F79
+CTL_VM      :: 2
+CTL_VFS     :: 3
+CTL_NET     :: 4
+CTL_DEBUG   :: 5
+CTL_HW      :: 6
+	HW_MACHINE      :: 1  // x86_64
+	HW_MODEL        :: 2  // MacbookPro14,1
+	HW_NCPU         :: 3  /* int: number of cpus */
+	HW_BYTEORDER    :: 4  /* int: machine byte order */
+	HW_MACHINE_ARCH :: 12 /* string: machine architecture */
+	HW_VECTORUNIT   :: 13 /* int: has HW vector unit? */
+	HW_MEMSIZE      :: 24 // u64
+	HW_AVAILCPU     :: 25 /* int: number of available CPUs */
+
+CTL_MACHDEP :: 7
+CTL_USER    :: 8