sys/unix: add sysctlbyname for darwin

This commit is contained in:
Laytan Laats
2024-04-29 23:36:13 +02:00
parent c58da76562
commit cebe6bd982
2 changed files with 23 additions and 25 deletions
+18 -9
View File
@@ -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
}