aboutsummaryrefslogtreecommitdiff
path: root/core/sys/unix
diff options
context:
space:
mode:
authorAndreas T Jonsson <mail@andreasjonsson.se>2024-04-26 11:04:27 +0200
committerAndreas T Jonsson <mail@andreasjonsson.se>2024-04-26 11:04:27 +0200
commit6bbdbb4447b0a2b5b485ae4351016b05ae79758f (patch)
treef57453978d8a63dff648c87ef9decb5bb0d84652 /core/sys/unix
parent22fa420c4f655ab9380b5384350be2e2281b39a6 (diff)
Added missing core:sys/info package for NetBSD
Diffstat (limited to 'core/sys/unix')
-rw-r--r--core/sys/unix/sysctl_netbsd.odin44
1 files changed, 44 insertions, 0 deletions
diff --git a/core/sys/unix/sysctl_netbsd.odin b/core/sys/unix/sysctl_netbsd.odin
new file mode 100644
index 000000000..ad89b9ad4
--- /dev/null
+++ b/core/sys/unix/sysctl_netbsd.odin
@@ -0,0 +1,44 @@
+package unix
+
+import "core:c"
+foreign import libc "system:c"
+
+@(default_calling_convention="c")
+foreign libc {
+ @(link_name="sysctl") _unix_sysctl :: proc(name: [^]i32, namelen: u32, oldp: rawptr, oldlenp: ^c.size_t, newp: rawptr, newlen: c.size_t) -> i32 ---
+}
+
+sysctl :: proc(mib: []i32, val: ^$T) -> (ok: bool) {
+ mib := mib
+ result_size := c.size_t(size_of(T))
+ res := _unix_sysctl(raw_data(mib), u32(len(mib)), val, &result_size, nil, 0)
+ return res == 0
+}
+
+// See /usr/include/sys/sysctl.h for details
+CTL_KERN :: 1
+ KERN_OSTYPE :: 1
+ KERN_OSRELEASE :: 2
+ KERN_OSREV :: 3
+ KERN_VERSION :: 4
+CTL_VM :: 2
+CTL_FS :: 3
+CTL_NET :: 4
+CTL_DEBUG :: 5
+CTL_HW :: 6
+ HW_MACHINE :: 1
+ HW_MODEL :: 2
+ HW_NCPU :: 3
+ HW_BYTEORDER :: 4
+ HW_PHYSMEM :: 5
+ HW_USERMEM :: 6
+ HW_PAGESIZE :: 7
+ HW_DISKNAMES :: 8
+ HW_IOSTATS :: 9
+ HW_MACHINE_ARCH :: 10
+ HW_ALIGNBYTES :: 11
+ HW_CNMAGIC :: 12
+ HW_PHYSMEM64 :: 13
+ HW_USERMEM64 :: 14
+ HW_IOSTATNAMES :: 15
+ HW_NCPUONLINE :: 16