From: Michael Jeanson Date: Wed, 27 Jul 2022 14:44:00 +0000 (-0400) Subject: fix: sysconf(_SC_NPROCESSORS_CONF) can be less than max cpu id X-Git-Tag: v0.14.0~23 X-Git-Url: https://git.lttng.org/?a=commitdiff_plain;ds=sidebyside;h=5cfe81b7ddff9543d451746de9965cac58c67182;hp=5cfe81b7ddff9543d451746de9965cac58c67182;p=urcu.git fix: sysconf(_SC_NPROCESSORS_CONF) can be less than max cpu id We rely on sysconf(_SC_NPROCESSORS_CONF) to get the maximum possible number of CPUs that can be attached to the system for the lifetime of an application. As such we expect that the highest possible CPU id would be one less than the number returned by sysconf(_SC_NPROCESSORS_CONF) which is unfortunatly not always the case and can vary across libc implementations and versions. Glibc up to 2.35 will count the number of "cpuX" directories in "/sys/devices/system/cpu" which doesn't include CPUS that were hot-unplugged. This information is however provided by the Linux kernel in "/sys/devices/system/cpu/possible" in the form of a mask listing all the CPUs that could possibly be hot-plugged in the system. This patch replaces sysconf(_SC_NPROCESSORS_CONF) with an internal function that first tries parsing the possible CPU mask to extract the highest possible value and if this fails fallback to the previous behavior. Change-Id: I68dfed42ebbab02728a02eeefd4a395a22bb1bea Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers ---