aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Simonson <ian.simonson@protonmail.com>2024-03-13 08:06:57 -0700
committerIan Simonson <ian.simonson@protonmail.com>2024-03-13 08:07:12 -0700
commit26d107ce64abae9a80755405e2539b40c65e09d2 (patch)
tree46f8a8ed01dbf205e8a7a5d0768153f1081aaf70
parentd62c92f5a9891267e6ee2c121085815ce6734cf6 (diff)
Add getrusage syscall for mac/darwin
The syscall number existed but the wrapper for calling it did not. Also adds the RUsage struct to receive the data. Naming is kept the same as in sys/linux
-rw-r--r--core/sys/darwin/darwin.odin24
-rw-r--r--core/sys/darwin/xnu_system_call_wrappers.odin4
2 files changed, 28 insertions, 0 deletions
diff --git a/core/sys/darwin/darwin.odin b/core/sys/darwin/darwin.odin
index 0b3efb1f5..8009b72bd 100644
--- a/core/sys/darwin/darwin.odin
+++ b/core/sys/darwin/darwin.odin
@@ -2,3 +2,27 @@
package darwin
Bool :: b8
+
+timespec :: struct {
+ seconds: int,
+ microseconds: int,
+}
+
+RUsage :: struct {
+ utime: timespec,
+ stime: timespec,
+ maxrss_word: int,
+ ixrss_word: int,
+ idrss_word: int,
+ isrss_word: int,
+ minflt_word: int,
+ majflt_word: int,
+ nswap_word: int,
+ inblock_word: int,
+ oublock_word: int,
+ msgsnd_word: int,
+ msgrcv_word: int,
+ nsignals_word: int,
+ nvcsw_word: int,
+ nivcsw_word: int,
+}
diff --git a/core/sys/darwin/xnu_system_call_wrappers.odin b/core/sys/darwin/xnu_system_call_wrappers.odin
index 3b051ac19..74a2dbd2e 100644
--- a/core/sys/darwin/xnu_system_call_wrappers.odin
+++ b/core/sys/darwin/xnu_system_call_wrappers.odin
@@ -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))
+}