mirror of
https://git.tukaani.org/xz.git
synced 2024-04-04 12:36:23 +02:00
tuklib_cpucores: Use HW_NCPUONLINE on OpenBSD.
On OpenBSD the number of cores online is often less than what HW_NCPU would return because OpenBSD disables simultaneous multi-threading (SMT) by default. Thanks to Christian Weisgerber.
This commit is contained in:
parent
0af861050f
commit
5daa40454b
2 changed files with 14 additions and 0 deletions
|
@ -103,7 +103,12 @@ compile error
|
|||
int
|
||||
main(void)
|
||||
{
|
||||
#ifdef HW_NCPUONLINE
|
||||
/* This is preferred on OpenBSD, see tuklib_cpucores.c. */
|
||||
int name[2] = { CTL_HW, HW_NCPUONLINE };
|
||||
#else
|
||||
int name[2] = { CTL_HW, HW_NCPU };
|
||||
#endif
|
||||
int cpus;
|
||||
size_t cpus_size = sizeof(cpus);
|
||||
sysctl(name, 2, &cpus, &cpus_size, NULL, 0);
|
||||
|
|
|
@ -72,7 +72,16 @@ tuklib_cpucores(void)
|
|||
}
|
||||
|
||||
#elif defined(TUKLIB_CPUCORES_SYSCTL)
|
||||
// On OpenBSD HW_NCPUONLINE tells the number of processor cores that
|
||||
// are online so it is preferred over HW_NCPU which also counts cores
|
||||
// that aren't currently available. The number of cores online is
|
||||
// often less than HW_NCPU because OpenBSD disables simultaneous
|
||||
// multi-threading (SMT) by default.
|
||||
# ifdef HW_NCPUONLINE
|
||||
int name[2] = { CTL_HW, HW_NCPUONLINE };
|
||||
# else
|
||||
int name[2] = { CTL_HW, HW_NCPU };
|
||||
# endif
|
||||
int cpus;
|
||||
size_t cpus_size = sizeof(cpus);
|
||||
if (sysctl(name, 2, &cpus, &cpus_size, NULL, 0) != -1
|
||||
|
|
Loading…
Reference in a new issue