瀏覽代碼

add osx support

Colin Davidson 2 年之前
父節點
當前提交
6a2ef1f4f3
共有 2 個文件被更改,包括 24 次插入1 次删除
  1. 1 1
      core/sys/darwin/xnu_system_call_wrappers.odin
  2. 23 0
      core/time/tsc_darwin.odin

+ 1 - 1
core/sys/darwin/xnu_system_call_wrappers.odin

@@ -416,4 +416,4 @@ syscall_chdir :: #force_inline proc(path: cstring) -> c.int {
 
 syscall_fchdir :: #force_inline proc(fd: c.int, path: cstring) -> c.int {
 	return cast(c.int)intrinsics.syscall(unix_offset_syscall(.getentropy), uintptr(fd), transmute(uintptr)path)
-}
+}

+ 23 - 0
core/time/tsc_darwin.odin

@@ -0,0 +1,23 @@
+//+private
+//+build darwin
+package time
+
+import "core:sys/darwin"
+
+_get_tsc_frequency :: proc "contextless" () -> u64 {
+	@(static) frequency : u64 = 0
+	if frequency > 0 {
+		return frequency
+	}
+
+	tmp_freq : u64 = 0
+	tmp_size : i64 = size_of(tmp_freq)
+	ret := darwin.syscall_sysctlbyname("machdep.tsc.frequency", &tmp_freq, &tmp_size, nil, 0)
+	if ret < 0 {
+		frequency = 1
+		return 0
+	}
+
+	frequency = tmp_freq
+	return frequency
+}