add macOS handling for totalSystemMemory (#24903)

* add macos handling for totalSystemMemory

* fix return type cast for .freebsd in totalSystemMemory

* add handling for the whole Darwin family in totalSystemMemory
This commit is contained in:
Sardorbek Imomaliev 2025-08-25 20:25:53 +01:00 committed by Alex Rønne Petersen
parent b2578329af
commit 6f07cc95d0
No known key found for this signature in database

View file

@ -1762,7 +1762,20 @@ pub fn totalSystemMemory() TotalSystemMemoryError!u64 {
error.NameTooLong, error.UnknownName => unreachable, error.NameTooLong, error.UnknownName => unreachable,
else => return error.UnknownTotalSystemMemory, else => return error.UnknownTotalSystemMemory,
}; };
return @as(usize, @intCast(physmem)); return @as(u64, @intCast(physmem));
},
// whole Darwin family
.driverkit, .ios, .macos, .tvos, .visionos, .watchos => {
// "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 => { .openbsd => {
const mib: [2]c_int = [_]c_int{ const mib: [2]c_int = [_]c_int{