]> git.ipfire.org Git - thirdparty/glibc.git/commit
linux: fix accuracy of get_nprocs and get_nprocs_conf [BZ #28865]
authorDmitry V. Levin <ldv@altlinux.org>
Sat, 5 Feb 2022 08:00:00 +0000 (08:00 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 7 Feb 2022 20:18:29 +0000 (20:18 +0000)
commit491f2ef1f0ff849490f374917957018d07ee0586
tree6a54b93152de428cc9e973d55182daf4642fdec4
parent24962427071fa532c3c48c918e9d64d719cc8a6c
linux: fix accuracy of get_nprocs and get_nprocs_conf [BZ #28865]

get_nprocs() and get_nprocs_conf() use various methods to obtain an
accurate number of processors.  Re-introduce __get_nprocs_sched() as
a source of information, and fix the order in which these methods are
used to return the most accurate information.  The primary source of
information used in both functions remains unchanged.

This also changes __get_nprocs_sched() error return value from 2 to 0,
but all its users are already prepared to handle that.

Old fallback order:
  get_nprocs:
    /sys/devices/system/cpu/online -> /proc/stat -> 2
  get_nprocs_conf:
    /sys/devices/system/cpu/ -> /proc/stat -> 2

New fallback order:
  get_nprocs:
    /sys/devices/system/cpu/online -> /proc/stat -> sched_getaffinity -> 2
  get_nprocs_conf:
    /sys/devices/system/cpu/ -> /proc/stat -> sched_getaffinity -> 2

Fixes: 342298278e ("linux: Revert the use of sched_getaffinity on get_nproc")
Closes: BZ #28865
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
(cherry picked from commit e1d32b836410767270a3adf1f82b1a47e6e4cd51)
NEWS
sysdeps/unix/sysv/linux/getsysstats.c