Commit 91040b5678

Sardorbek Imomaliev <3041675+imomaliev@users.noreply.github.com>
2025-08-25 21:25:53
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
1 parent a7769e2
Changed files (1)
lib
lib/std/process.zig
@@ -1762,7 +1762,20 @@ pub fn totalSystemMemory() TotalSystemMemoryError!u64 {
                 error.UnknownName => unreachable,
                 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 => {
             const mib: [2]c_int = [_]c_int{