platform_openbsd.odin 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // +build openbsd
  2. package sysinfo
  3. import sys "core:sys/unix"
  4. import "core:strings"
  5. import "core:strconv"
  6. @(private)
  7. version_string_buf: [1024]u8
  8. @(init, private)
  9. init_os_version :: proc () {
  10. os_version.platform = .OpenBSD
  11. kernel_version_buf: [1024]u8
  12. b := strings.builder_from_bytes(version_string_buf[:])
  13. // Retrieve kernel info using `sysctl`, e.g. OpenBSD
  14. mib := []i32{sys.CTL_KERN, sys.KERN_OSTYPE}
  15. if !sys.sysctl(mib, &kernel_version_buf) {
  16. return
  17. }
  18. os_type := string(cstring(raw_data(kernel_version_buf[:])))
  19. strings.write_string(&b, os_type)
  20. mib = []i32{sys.CTL_KERN, sys.KERN_OSRELEASE}
  21. if !sys.sysctl(mib, &kernel_version_buf) {
  22. return
  23. }
  24. strings.write_rune(&b, ' ')
  25. version := string(cstring(raw_data(kernel_version_buf[:])))
  26. strings.write_string(&b, version)
  27. // // Parse kernel version
  28. triplet := strings.split(version, ".", context.temp_allocator)
  29. if len(triplet) == 2 {
  30. major, major_ok := strconv.parse_int(triplet[0])
  31. minor, minor_ok := strconv.parse_int(triplet[1])
  32. if major_ok && minor_ok {
  33. os_version.major = major
  34. os_version.minor = minor
  35. }
  36. }
  37. // Retrieve kernel revision using `sysctl`, e.g. 199506
  38. mib = []i32{sys.CTL_KERN, sys.KERN_OSREV}
  39. revision: int
  40. if !sys.sysctl(mib, &revision) {
  41. return
  42. }
  43. os_version.patch = revision
  44. strings.write_string(&b, ", build ")
  45. strings.write_int(&b, revision)
  46. // Finalize pretty name.
  47. os_version.as_string = strings.to_string(b)
  48. }
  49. @(init)
  50. init_ram :: proc() {
  51. // Retrieve RAM info using `sysctl`
  52. mib := []i32{sys.CTL_HW, sys.HW_PHYSMEM64}
  53. mem_size: u64
  54. if sys.sysctl(mib, &mem_size) {
  55. ram.total_ram = int(mem_size)
  56. }
  57. }