sysctl_openbsd.odin 1.1 KB

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