tsc_darwin.odin 510 B

123456789101112131415161718192021
  1. //+private
  2. //+build darwin
  3. package time
  4. import "core:c"
  5. foreign import libc "System.framework"
  6. foreign libc {
  7. @(link_name="sysctlbyname") _sysctlbyname :: proc(path: cstring, oldp: rawptr, oldlenp: rawptr, newp: rawptr, newlen: int) -> c.int ---
  8. }
  9. _get_tsc_frequency :: proc "contextless" () -> (u64, bool) {
  10. tmp_freq : u64 = 0
  11. tmp_size : i64 = size_of(tmp_freq)
  12. ret := _sysctlbyname("machdep.tsc.frequency", &tmp_freq, &tmp_size, nil, 0)
  13. if ret < 0 {
  14. return 0, false
  15. }
  16. return tmp_freq, true
  17. }