Hi
There are 3 ways to determine the correct size of the possible
cpu mask size:
(a) Read it from sysfs /sys/devices/system/cpu/online, which
has the actual number of possibly online cpus.
(b) Interpret /proc/cpuinfo or /proc/stat.
(c) Call the kernel syscall sched_getaffinity with increasingly
larger values for cpusetsize in an attempt to manually
determine the cpu mask size.
Methods (a) and (b) are already used by sysconf(_SC_PROCESSORS_ONLN)
to determine the value to return.
Nit.
sysconf(_SC_NPROCESSORS_ONLN) returns number of online cpus. not possible cpus.
online cpus: number of _now_ onlined cpus
possible cpus: number of maximum cpus on the system. (i.e. depend on arch and
firmware and ACPI table)
/sys/devices/system/cpu/possible returns possible cpu mask. AFAIK, unfortunately,
sysconf() doesn't support to get possible cpus.