Browse Source

Merge pull request #3272 from iansimonson/add_getrusage_darwin

Add getrusage syscall for mac/darwin
gingerBill 1 year ago
parent
commit
04f0fbf23a
2 changed files with 27 additions and 1 deletions
  1. 22 0
      core/sys/darwin/darwin.odin
  2. 5 1
      core/sys/darwin/xnu_system_call_wrappers.odin

+ 22 - 0
core/sys/darwin/darwin.odin

@@ -1,4 +1,26 @@
 //+build darwin
 //+build darwin
 package darwin
 package darwin
 
 
+import "core:c"
+
 Bool :: b8
 Bool :: b8
+
+RUsage :: struct {
+	ru_utime:    timeval,
+	ru_stime:    timeval,
+	ru_maxrss:   c.long,
+	ru_ixrss:    c.long,
+	ru_idrss:    c.long,
+	ru_isrss:    c.long,
+	ru_minflt:   c.long,
+	ru_majflt:   c.long,
+	ru_nswap:    c.long,
+	ru_inblock:  c.long,
+	ru_oublock:  c.long,
+	ru_msgsnd:   c.long,
+	ru_msgrcv:   c.long,
+	ru_nsignals: c.long,
+	ru_nvcsw:    c.long,
+	ru_nivcsw:   c.long,
+}
+

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

@@ -125,7 +125,7 @@ DARWIN_MAXCOMLEN :: 16
 /*--==========================================================================--*/
 /*--==========================================================================--*/
 
 
 __darwin_ino64_t :: u64
 __darwin_ino64_t :: u64
-__darwin_time_t :: u32
+__darwin_time_t :: c.long
 __darwin_dev_t :: i32
 __darwin_dev_t :: i32
 __darwin_mode_t :: u16
 __darwin_mode_t :: u16
 __darwin_off_t :: i64
 __darwin_off_t :: i64
@@ -417,3 +417,7 @@ syscall_chdir :: #force_inline proc "contextless" (path: cstring) -> c.int {
 syscall_fchdir :: #force_inline proc "contextless" (fd: c.int, path: cstring) -> c.int {
 syscall_fchdir :: #force_inline proc "contextless" (fd: c.int, path: cstring) -> c.int {
 	return cast(c.int)intrinsics.syscall(unix_offset_syscall(.getentropy), uintptr(fd), transmute(uintptr)path)
 	return cast(c.int)intrinsics.syscall(unix_offset_syscall(.getentropy), uintptr(fd), transmute(uintptr)path)
 }
 }
+
+syscall_getrusage :: #force_inline proc "contextless" (who: c.int, rusage: ^RUsage) -> c.int {
+	return cast(c.int) intrinsics.syscall(unix_offset_syscall(.getrusage), uintptr(who), uintptr(rusage))
+}