mirror of
https://github.com/ziglang/zig.git
synced 2026-02-14 05:20:34 +00:00
openbsd: proper implementation for Thread.cpuCount()
This commit is contained in:
parent
20b19d0092
commit
8784c7b581
@ -292,10 +292,13 @@ pub const AI_ADDRCONFIG = 64;
|
||||
|
||||
pub const CTL_KERN = 1;
|
||||
pub const CTL_DEBUG = 5;
|
||||
pub const CTL_HW = 6;
|
||||
|
||||
pub const KERN_PROC_ARGS = 55;
|
||||
pub const KERN_PROC_ARGV = 1;
|
||||
|
||||
pub const HW_NCPUONLINE = 25;
|
||||
|
||||
pub const PATH_MAX = 1024;
|
||||
|
||||
pub const STDIN_FILENO = 0;
|
||||
|
||||
@ -491,6 +491,16 @@ pub const Thread = struct {
|
||||
if (std.Target.current.os.tag == .windows) {
|
||||
return os.windows.peb().NumberOfProcessors;
|
||||
}
|
||||
if (std.Target.current.os.tag == .openbsd) {
|
||||
var count: c_int = undefined;
|
||||
var count_size: usize = @sizeOf(c_int);
|
||||
const mib = [_]c_int{ os.CTL_HW, os.HW_NCPUONLINE };
|
||||
os.sysctl(&mib, &count, &count_size, null, 0) catch |err| switch (err) {
|
||||
error.NameTooLong, error.UnknownName => unreachable,
|
||||
else => |e| return e,
|
||||
};
|
||||
return @intCast(usize, count);
|
||||
}
|
||||
var count: c_int = undefined;
|
||||
var count_len: usize = @sizeOf(c_int);
|
||||
const name = if (comptime std.Target.current.isDarwin()) "hw.logicalcpu" else "hw.ncpu";
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user