mirror of
https://github.com/dlang/phobos.git
synced 2025-04-28 06:00:35 +03:00
std.parallelism: Use core.sys.platform.sys.sysctl module
This commit is contained in:
parent
d8cde81d0a
commit
87e5ab73b8
1 changed files with 32 additions and 46 deletions
|
@ -95,23 +95,6 @@ import std.meta;
|
|||
import std.range.primitives;
|
||||
import std.traits;
|
||||
|
||||
version (Darwin)
|
||||
{
|
||||
version = useSysctlbyname;
|
||||
}
|
||||
else version (FreeBSD)
|
||||
{
|
||||
version = useSysctlbyname;
|
||||
}
|
||||
else version (DragonFlyBSD)
|
||||
{
|
||||
version = useSysctlbyname;
|
||||
}
|
||||
else version (NetBSD)
|
||||
{
|
||||
version = useSysctlbyname;
|
||||
}
|
||||
|
||||
/*
|
||||
(For now public undocumented with reserved name.)
|
||||
|
||||
|
@ -952,11 +935,6 @@ if (is(typeof(fun(args))) && isSafeTask!F)
|
|||
return ret;
|
||||
}
|
||||
|
||||
version (useSysctlbyname)
|
||||
private extern(C) int sysctlbyname(
|
||||
const char *, void *, size_t *, void *, size_t
|
||||
) @nogc nothrow;
|
||||
|
||||
/**
|
||||
The total number of CPU cores available on the current machine, as reported by
|
||||
the operating system.
|
||||
|
@ -989,6 +967,38 @@ uint totalCPUsImpl() @nogc nothrow @trusted
|
|||
}
|
||||
return cast(uint) sysconf(_SC_NPROCESSORS_ONLN);
|
||||
}
|
||||
else version (Darwin)
|
||||
{
|
||||
import core.sys.darwin.sys.sysctl : sysctlbyname;
|
||||
uint result;
|
||||
size_t len = result.sizeof;
|
||||
sysctlbyname("hw.physicalcpu", &result, &len, null, 0);
|
||||
return result;
|
||||
}
|
||||
else version (DragonFlyBSD)
|
||||
{
|
||||
import core.sys.dragonflybsd.sys.sysctl : sysctlbyname;
|
||||
uint result;
|
||||
size_t len = result.sizeof;
|
||||
sysctlbyname("hw.ncpu", &result, &len, null, 0);
|
||||
return result;
|
||||
}
|
||||
else version (FreeBSD)
|
||||
{
|
||||
import core.sys.freebsd.sys.sysctl : sysctlbyname;
|
||||
uint result;
|
||||
size_t len = result.sizeof;
|
||||
sysctlbyname("hw.ncpu", &result, &len, null, 0);
|
||||
return result;
|
||||
}
|
||||
else version (NetBSD)
|
||||
{
|
||||
import core.sys.netbsd.sys.sysctl : sysctlbyname;
|
||||
uint result;
|
||||
size_t len = result.sizeof;
|
||||
sysctlbyname("hw.ncpu", &result, &len, null, 0);
|
||||
return result;
|
||||
}
|
||||
else version (Solaris)
|
||||
{
|
||||
import core.sys.posix.unistd : _SC_NPROCESSORS_ONLN, sysconf;
|
||||
|
@ -999,30 +1009,6 @@ uint totalCPUsImpl() @nogc nothrow @trusted
|
|||
import core.sys.posix.unistd : _SC_NPROCESSORS_ONLN, sysconf;
|
||||
return cast(uint) sysconf(_SC_NPROCESSORS_ONLN);
|
||||
}
|
||||
else version (useSysctlbyname)
|
||||
{
|
||||
version (Darwin)
|
||||
{
|
||||
enum nameStr = "hw.physicalcpu";
|
||||
}
|
||||
else version (FreeBSD)
|
||||
{
|
||||
auto nameStr = "hw.ncpu\0".ptr;
|
||||
}
|
||||
else version (DragonFlyBSD)
|
||||
{
|
||||
auto nameStr = "hw.ncpu\0".ptr;
|
||||
}
|
||||
else version (NetBSD)
|
||||
{
|
||||
auto nameStr = "hw.ncpu\0".ptr;
|
||||
}
|
||||
|
||||
uint result;
|
||||
size_t len = result.sizeof;
|
||||
sysctlbyname(nameStr, &result, &len, null, 0);
|
||||
return result;
|
||||
}
|
||||
else
|
||||
{
|
||||
static assert(0, "Don't know how to get N CPUs on this OS.");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue