sysctl_netbsd.odin 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package unix
  2. import "core:c"
  3. foreign import libc "system:c"
  4. @(default_calling_convention="c")
  5. foreign libc {
  6. @(link_name="sysctl") _unix_sysctl :: proc(name: [^]i32, namelen: u32, oldp: rawptr, oldlenp: ^c.size_t, newp: rawptr, newlen: c.size_t) -> i32 ---
  7. }
  8. sysctl :: proc(mib: []i32, val: ^$T) -> (ok: bool) {
  9. mib := mib
  10. result_size := c.size_t(size_of(T))
  11. res := _unix_sysctl(raw_data(mib), u32(len(mib)), val, &result_size, nil, 0)
  12. return res == 0
  13. }
  14. // See /usr/include/sys/sysctl.h for details
  15. CTL_KERN :: 1
  16. KERN_OSTYPE :: 1
  17. KERN_OSRELEASE :: 2
  18. KERN_OSREV :: 3
  19. KERN_VERSION :: 4
  20. CTL_VM :: 2
  21. CTL_FS :: 3
  22. CTL_NET :: 4
  23. CTL_DEBUG :: 5
  24. CTL_HW :: 6
  25. HW_MACHINE :: 1
  26. HW_MODEL :: 2
  27. HW_NCPU :: 3
  28. HW_BYTEORDER :: 4
  29. HW_PHYSMEM :: 5
  30. HW_USERMEM :: 6
  31. HW_PAGESIZE :: 7
  32. HW_DISKNAMES :: 8
  33. HW_IOSTATS :: 9
  34. HW_MACHINE_ARCH :: 10
  35. HW_ALIGNBYTES :: 11
  36. HW_CNMAGIC :: 12
  37. HW_PHYSMEM64 :: 13
  38. HW_USERMEM64 :: 14
  39. HW_IOSTATNAMES :: 15
  40. HW_NCPUONLINE :: 16