diff options
| author | Ian Simonson <ian.simonson@protonmail.com> | 2024-03-13 08:06:57 -0700 |
|---|---|---|
| committer | Ian Simonson <ian.simonson@protonmail.com> | 2024-03-13 08:07:12 -0700 |
| commit | 26d107ce64abae9a80755405e2539b40c65e09d2 (patch) | |
| tree | 46f8a8ed01dbf205e8a7a5d0768153f1081aaf70 | |
| parent | d62c92f5a9891267e6ee2c121085815ce6734cf6 (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.odin | 24 | ||||
| -rw-r--r-- | core/sys/darwin/xnu_system_call_wrappers.odin | 4 |
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)) +} |