From b1382f8c51fd94e46aa052519e80fccb1c7a8dc5 Mon Sep 17 00:00:00 2001 From: Sardorbek Imomaliev Date: Mon, 18 Aug 2025 19:09:17 +0100 Subject: [PATCH 1/2] add macos handling for totalSystemMemory --- lib/std/process.zig | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/std/process.zig b/lib/std/process.zig index 2e9cb1fe85a8..239e1fd88a1d 100644 --- a/lib/std/process.zig +++ b/lib/std/process.zig @@ -1764,6 +1764,18 @@ pub fn totalSystemMemory() TotalSystemMemoryError!u64 { }; return @as(usize, @intCast(physmem)); }, + .macos => { + // "hw.memsize" returns uint64_t + var physmem: u64 = undefined; + var len: usize = @sizeOf(u64); + posix.sysctlbynameZ("hw.memsize", &physmem, &len, null, 0) catch |err| switch (err) { + error.PermissionDenied => unreachable, // only when setting values, + error.SystemResources => unreachable, // memory already on the stack + error.UnknownName => unreachable, // constant, known good value + else => return error.UnknownTotalSystemMemory, + }; + return physmem; + }, .openbsd => { const mib: [2]c_int = [_]c_int{ posix.CTL.HW, From 243ced2dcf30c3e1a92e7688703a0f255fac32f1 Mon Sep 17 00:00:00 2001 From: Sardorbek Imomaliev Date: Tue, 19 Aug 2025 13:37:05 +0100 Subject: [PATCH 2/2] fix return type cast for .freebsd in totalSystemMemory --- lib/std/process.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/process.zig b/lib/std/process.zig index 239e1fd88a1d..3e8185bba8c1 100644 --- a/lib/std/process.zig +++ b/lib/std/process.zig @@ -1762,7 +1762,7 @@ pub fn totalSystemMemory() TotalSystemMemoryError!u64 { error.NameTooLong, error.UnknownName => unreachable, else => return error.UnknownTotalSystemMemory, }; - return @as(usize, @intCast(physmem)); + return @as(u64, @intCast(physmem)); }, .macos => { // "hw.memsize" returns uint64_t