Adhemerval Zanella
33099d72e4
linux: Simplify get_nprocs
...
This patch simplifies the memory allocation code and uses the sched
routines instead of reimplement it. This still uses a stack
allocation buffer, so it can be used on malloc initialization code.
Linux currently supports at maximum of 4096 cpus for most architectures:
$ find -iname Kconfig | xargs git grep -A10 -w NR_CPUS | grep -w range
arch/alpha/Kconfig- range 2 32
arch/arc/Kconfig- range 2 4096
arch/arm/Kconfig- range 2 16 if DEBUG_KMAP_LOCAL
arch/arm/Kconfig- range 2 32 if !DEBUG_KMAP_LOCAL
arch/arm64/Kconfig- range 2 4096
arch/csky/Kconfig- range 2 32
arch/hexagon/Kconfig- range 2 6 if SMP
arch/ia64/Kconfig- range 2 4096
arch/mips/Kconfig- range 2 256
arch/openrisc/Kconfig- range 2 32
arch/parisc/Kconfig- range 2 32
arch/riscv/Kconfig- range 2 32
arch/s390/Kconfig- range 2 512
arch/sh/Kconfig- range 2 32
arch/sparc/Kconfig- range 2 32 if SPARC32
arch/sparc/Kconfig- range 2 4096 if SPARC64
arch/um/Kconfig- range 1 1
arch/x86/Kconfig-# [NR_CPUS_RANGE_BEGIN ... NR_CPUS_RANGE_END] range.
arch/x86/Kconfig- range NR_CPUS_RANGE_BEGIN NR_CPUS_RANGE_END
arch/xtensa/Kconfig- range 2 32
With x86 supporting 8192:
arch/x86/Kconfig
976 config NR_CPUS_RANGE_END
977 int
978 depends on X86_64
979 default 8192 if SMP && CPUMASK_OFFSTACK
980 default 512 if SMP && !CPUMASK_OFFSTACK
981 default 1 if !SMP
So using a maximum of 32k cpu should cover all cases (and I would
expect once we start to have many more CPUs that Linux would provide
a more straightforward way to query for such information).
A test is added to check if sched_getaffinity can successfully return
with large buffers.
Checked on x86_64-linux-gnu and i686-linux-gnu.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
2021-09-27 09:18:12 -03:00
..
2021-09-16 22:32:53 +02:00
2020-11-23 10:51:24 +01:00
2021-06-15 10:42:11 -03:00
2021-01-02 12:17:34 -08:00
2021-06-24 10:02:06 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2018-07-18 21:04:12 +00:00
2018-07-18 21:04:12 +00:00
2018-07-18 21:04:12 +00:00
2018-07-18 21:04:12 +00:00
2018-07-18 21:04:12 +00:00
2021-01-02 12:17:34 -08:00
2021-09-06 11:30:28 -04:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-06 11:30:28 -04:00
2018-02-27 16:58:44 +01:00
2021-09-06 11:30:28 -04:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-06 11:30:28 -04:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-05-03 16:46:06 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-04 09:02:39 -03:00
2021-02-23 15:58:04 -03:00
2021-01-02 12:17:34 -08:00
2021-06-28 15:55:56 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-04-21 15:11:26 +02:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-06-15 10:42:11 -03:00
2021-07-01 16:46:59 +02:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-04 08:41:53 -03:00
2021-07-22 20:31:52 +02:00
2021-06-15 10:42:11 -03:00
2021-06-15 10:42:11 -03:00
2021-06-15 10:42:11 -03:00
2021-01-02 12:17:34 -08:00
2021-01-04 08:41:53 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-27 09:18:12 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2018-07-04 09:54:45 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-01 14:29:59 -04:00
2021-09-01 14:29:59 -04:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-21 08:00:44 -07:00
2021-09-21 08:00:44 -07:00
2021-09-21 08:00:44 -07:00
2021-09-21 08:00:44 -07:00
2021-09-21 08:00:44 -07:00
2021-09-21 08:00:44 -07:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-05-07 13:54:09 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-06-15 10:42:11 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-05-05 17:19:38 +02:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-07-08 14:08:15 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-07-08 14:08:15 -03:00
2021-01-02 12:17:34 -08:00
2021-07-08 14:08:15 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-07-08 14:08:15 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-02-01 11:00:52 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-06 11:30:28 -04:00
2021-06-28 15:55:56 -03:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-05-04 16:03:07 +02:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-01 14:29:59 -04:00
2021-09-06 11:30:28 -04:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2017-04-07 07:51:52 -04:00
2021-01-02 12:17:34 -08:00
2021-03-09 21:07:24 +01:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-06-15 10:42:11 -03:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-06 11:30:28 -04:00
2018-10-17 09:34:13 +02:00
2021-09-06 11:30:28 -04:00
2019-08-29 02:38:14 -07:00
2021-01-02 12:17:34 -08:00
2021-02-03 16:12:13 -03:00
2021-02-03 16:12:13 -03:00
2021-02-03 16:12:13 -03:00
2021-09-03 22:06:44 +05:30
2021-09-27 09:18:12 -03:00
2021-06-15 10:42:11 -03:00
2021-02-16 20:35:37 +01:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-03-09 21:07:24 +01:00
2021-01-02 12:17:34 -08:00
2021-08-26 17:13:47 -03:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-06-15 10:42:11 -03:00
2021-04-15 11:32:40 -03:00
2021-06-15 10:42:11 -03:00
2021-04-15 11:32:40 -03:00
2021-04-15 11:32:40 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-16 22:32:53 +02:00
2021-07-08 14:08:15 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-06-27 19:35:42 +02:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00