aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-03-14 19:45:25 +0000
committerGitHub <noreply@github.com>2024-03-14 19:45:25 +0000
commit04f0fbf23a22dde3b750e27d844df84273dafa87 (patch)
tree95e21c89315a99d037f8bca9fc28b9ea6e03a0a1
parent51d6a254cf08c4c874585078924476de5c3d3f4a (diff)
parent835effdef1bbe2ce0b653194357fa76fa64b12d0 (diff)
Merge pull request #3272 from iansimonson/add_getrusage_darwin
Add getrusage syscall for mac/darwin
-rw-r--r--core/sys/darwin/darwin.odin22
-rw-r--r--core/sys/darwin/xnu_system_call_wrappers.odin6
2 files changed, 27 insertions, 1 deletions
diff --git a/core/sys/darwin/darwin.odin b/core/sys/darwin/darwin.odin
index 0b3efb1f5..a3e07277c 100644
--- a/core/sys/darwin/darwin.odin
+++ b/core/sys/darwin/darwin.odin
@@ -1,4 +1,26 @@
//+build darwin
package darwin
+import "core:c"
+
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,
+}
+
diff --git a/core/sys/darwin/xnu_system_call_wrappers.odin b/core/sys/darwin/xnu_system_call_wrappers.odin
index 371d714a9..b69877cc9 100644
--- a/core/sys/darwin/xnu_system_call_wrappers.odin
+++ b/core/sys/darwin/xnu_system_call_wrappers.odin
@@ -125,7 +125,7 @@ DARWIN_MAXCOMLEN :: 16
/*--==========================================================================--*/
__darwin_ino64_t :: u64
-__darwin_time_t :: u32
+__darwin_time_t :: c.long
__darwin_dev_t :: i32
__darwin_mode_t :: u16
__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 {
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))
+}