| ... | ... | @@ -558,14 +558,17 @@ pub fn totalSystemMemory() TotalSystemMemoryError!u64 { |
| 558 | 558 | // Promote to u64 to avoid overflow on systems where info.totalram is a 32-bit usize |
| 559 | 559 | return @as(u64, info.totalram) * info.mem_unit; |
| 560 | 560 | }, |
| 561 | | .freebsd => { |
| 561 | .dragonfly, .freebsd, .netbsd => { |
| 562 | const name = if (native_os == .netbsd) "hw.physmem64" else "hw.physmem"; |
| 562 | 563 | var physmem: c_ulong = undefined; |
| 563 | 564 | var len: usize = @sizeOf(c_ulong); |
| 564 | | posix.sysctlbynameZ("hw.physmem", &physmem, &len, null, 0) catch |err| switch (err) { |
| 565 | posix.sysctlbynameZ(name, &physmem, &len, null, 0) catch |err| switch (err) { |
| 566 | error.PermissionDenied => unreachable, // only when setting values, |
| 567 | error.SystemResources => unreachable, // memory already on the stack |
| 565 | 568 | error.UnknownName => unreachable, |
| 566 | 569 | else => return error.UnknownTotalSystemMemory, |
| 567 | 570 | }; |
| 568 | | return @as(u64, @intCast(physmem)); |
| 571 | return @intCast(physmem); |
| 569 | 572 | }, |
| 570 | 573 | // whole Darwin family |
| 571 | 574 | .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => { |