diff --git a/lib/std/process.zig b/lib/std/process.zig index 87dbed443f..56e3708f3b 100644 --- a/lib/std/process.zig +++ b/lib/std/process.zig @@ -1163,12 +1163,17 @@ pub fn totalSystemMemory() TotalSystemMemoryError!usize { .linux => { return totalSystemMemoryLinux() catch return error.UnknownTotalSystemMemory; }, - .freebsd => { + .freebsd, .netbsd, .openbsd, .dragonfly, .macos => { var physmem: c_ulong = undefined; var len: usize = @sizeOf(c_ulong); - os.sysctlbynameZ("hw.physmem", &physmem, &len, null, 0) catch |err| switch (err) { + const name = switch (builtin.os.tag) { + .macos => "hw.memsize", + .netbsd => "hw.physmem64", + else => "hw.physmem", + }; + os.sysctlbynameZ(name, &physmem, &len, null, 0) catch |err| switch (err) { error.NameTooLong, error.UnknownName => unreachable, - else => |e| return e, + else => return error.UnknownTotalSystemMemory, }; return @intCast(usize, physmem); },