diff options
| author | Laytan Laats <laytanlaats@hotmail.com> | 2024-04-29 23:36:13 +0200 |
|---|---|---|
| committer | Laytan Laats <laytanlaats@hotmail.com> | 2024-04-30 00:24:09 +0200 |
| commit | cebe6bd982597f49cae5b4cd745e99aff1454ff7 (patch) | |
| tree | 9cbf6f8e51c3013d754751477bec59c2aba61d93 /core/sys | |
| parent | c58da765625786ac9caa49a7f1335d9251766c02 (diff) | |
sys/unix: add sysctlbyname for darwin
Diffstat (limited to 'core/sys')
| -rw-r--r-- | core/sys/unix/sysctl_darwin.odin | 27 |
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 } |