aboutsummaryrefslogtreecommitdiff
path: root/core/sys
diff options
context:
space:
mode:
authorLaytan Laats <laytanlaats@hotmail.com>2024-04-29 23:36:13 +0200
committerLaytan Laats <laytanlaats@hotmail.com>2024-04-30 00:24:09 +0200
commitcebe6bd982597f49cae5b4cd745e99aff1454ff7 (patch)
tree9cbf6f8e51c3013d754751477bec59c2aba61d93 /core/sys
parentc58da765625786ac9caa49a7f1335d9251766c02 (diff)
sys/unix: add sysctlbyname for darwin
Diffstat (limited to 'core/sys')
-rw-r--r--core/sys/unix/sysctl_darwin.odin27
1 files changed, 18 insertions, 9 deletions
diff --git a/core/sys/unix/sysctl_darwin.odin b/core/sys/unix/sysctl_darwin.odin
index 76c72f478..6417961e5 100644
--- a/core/sys/unix/sysctl_darwin.odin
+++ b/core/sys/unix/sysctl_darwin.odin
@@ -1,20 +1,29 @@
//+build darwin
package unix
-import "core:sys/darwin"
import "base:intrinsics"
+import "core:c"
+import "core:sys/darwin"
+
_ :: darwin
-sysctl :: proc(mib: []i32, val: ^$T) -> (ok: bool) {
- mib := mib
- result_size := i64(size_of(T))
+sysctl :: proc "contextless" (mib: []i32, val: ^$T) -> (ok: bool) {
+ result_size := c.size_t(size_of(T))
+ res := darwin.syscall_sysctl(
+ raw_data(mib), len(mib),
+ val, &result_size,
+ nil, 0,
+ )
+ return res == 0
+}
- res := intrinsics.syscall(
- darwin.unix_offset_syscall(.sysctl),
- uintptr(raw_data(mib)), uintptr(len(mib)),
- uintptr(val), uintptr(&result_size),
- uintptr(0), uintptr(0),
+sysctlbyname :: proc "contextless" (name: string, val: ^$T) -> (ok: bool) {
+ result_size := c.size_t(size_of(T))
+ res := darwin.syscall_sysctlbyname(
+ name,
+ val, &result_size,
+ nil, 0,
)
return res == 0
}