sysctl_freebsd.odin 959 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //+build freebsd
  2. package unix
  3. import "base:intrinsics"
  4. sysctl :: proc(mib: []i32, val: ^$T) -> (ok: bool) {
  5. mib := mib
  6. result_size := u64(size_of(T))
  7. res: uintptr
  8. res, ok = intrinsics.syscall_bsd(SYS_sysctl,
  9. uintptr(raw_data(mib)), uintptr(len(mib)),
  10. uintptr(val), uintptr(&result_size),
  11. uintptr(0), uintptr(0),
  12. )
  13. return
  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. KERN_PROC :: 14
  23. KERN_PROC_PATHNAME :: 12
  24. CTL_VM :: 2
  25. CTL_VFS :: 3
  26. CTL_NET :: 4
  27. CTL_DEBUG :: 5
  28. CTL_HW :: 6
  29. HW_MACHINE :: 1
  30. HW_MODEL :: 2
  31. HW_NCPU :: 3
  32. HW_BYTEORDER :: 4
  33. HW_PHYSMEM :: 5
  34. HW_USERMEM :: 6
  35. HW_PAGESIZE :: 7
  36. HW_DISKNAMES :: 8
  37. HW_DISKSTATS :: 9
  38. HW_FLOATINGPT :: 10
  39. HW_MACHINE_ARCH :: 11
  40. HW_REALMEM :: 12
  41. CTL_MACHDEP :: 7
  42. CTL_USER :: 8
  43. CTL_P1003_1B :: 9