Commit 2f6b045fb1
lib/std/os/bits/linux.zig
@@ -1453,3 +1453,26 @@ pub const MFD_HUGE_512MB = HUGETLB_FLAG_ENCODE_512MB;
pub const MFD_HUGE_1GB = HUGETLB_FLAG_ENCODE_1GB;
pub const MFD_HUGE_2GB = HUGETLB_FLAG_ENCODE_2GB;
pub const MFD_HUGE_16GB = HUGETLB_FLAG_ENCODE_16GB;
+
+pub const RUSAGE_SELF = 0;
+pub const RUSAGE_CHILDREN = -1;
+pub const RUSAGE_THREAD = 1;
+
+pub const rusage = extern struct {
+ utime: timeval,
+ stime: timeval,
+ maxrss: isize,
+ ix_rss: isize,
+ idrss: isize,
+ isrss: isize,
+ minflt: isize,
+ majflt: isize,
+ nswap: isize,
+ inblock: isize,
+ oublock: isize,
+ msgsnd: isize,
+ msgrcv: isize,
+ nsignals: isize,
+ nvcsw: isize,
+ nivcsw: isize,
+};
lib/std/os/linux.zig
@@ -1114,6 +1114,10 @@ pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
return syscall2(SYS_memfd_create, @ptrToInt(name), flags);
}
+pub fn getrusage(who: i32, usage: *rusage) usize {
+ return syscall2(SYS_getrusage, @bitCast(usize, @as(isize, who)), @ptrToInt(usage));
+}
+
test "" {
if (builtin.os == .linux) {
_ = @import("linux/test.zig");
lib/std/os.zig
@@ -3325,3 +3325,14 @@ pub fn memfd_create(name: []const u8, flags: u32) !fd_t {
const name_t = try toMemFdPath(name);
return memfd_createC(&name_t, flags);
}
+
+pub fn getrusage(who: i32) rusage {
+ var result: rusage = undefined;
+ const rc = system.getrusage(who, &result);
+ switch (errno(rc)) {
+ 0 => return result,
+ EINVAL => unreachable,
+ EFAULT => unreachable,
+ else => unreachable,
+ }
+}