diff options
author | Karel Zak | 2010-05-28 11:08:39 +0200 |
---|---|---|
committer | Karel Zak | 2010-06-01 11:11:26 +0200 |
commit | bae91ecf07384f09fcf94903b7c3d7e565f4f66d (patch) | |
tree | 1395d6445a0e6871202c6042aba58dedf09fa850 /schedutils | |
parent | lscpu: improve --sysroot code (diff) | |
download | kernel-qcow2-util-linux-bae91ecf07384f09fcf94903b7c3d7e565f4f66d.tar.gz kernel-qcow2-util-linux-bae91ecf07384f09fcf94903b7c3d7e565f4f66d.tar.xz kernel-qcow2-util-linux-bae91ecf07384f09fcf94903b7c3d7e565f4f66d.zip |
taskset: move NR_CPUS determination to lib/cpuset.c
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'schedutils')
-rw-r--r-- | schedutils/taskset.c | 39 |
1 files changed, 3 insertions, 36 deletions
diff --git a/schedutils/taskset.c b/schedutils/taskset.c index 66387c827..2f1bc745f 100644 --- a/schedutils/taskset.c +++ b/schedutils/taskset.c @@ -27,7 +27,6 @@ #include <errno.h> #include <string.h> #include <ctype.h> -#include <sys/syscall.h> #include <err.h> #include "cpuset.h" @@ -64,40 +63,6 @@ static void __attribute__((__noreturn__)) usage(FILE *out) exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS); } -/* - * Number of bits in a CPU bitmask on current system - */ -static int max_number_of_cpus(void) -{ - int n, cpus = 2048; - size_t setsize; - cpu_set_t *set = cpuset_alloc(cpus, &setsize, NULL); - - if (!set) - goto err; - - for (;;) { - CPU_ZERO_S(setsize, set); - - /* the library version does not return size of cpumask_t */ - n = syscall(SYS_sched_getaffinity, 0, setsize, set); - - if (n < 0 && errno == EINVAL && cpus < 1024 * 1024) { - cpuset_free(set); - cpus *= 2; - set = cpuset_alloc(cpus, &setsize, NULL); - if (!set) - goto err; - continue; - } - cpuset_free(set); - return n * 8; - } -err: - errx(EXIT_FAILURE, _("cannot determine NR_CPUS; aborting")); - return 0; -} - int main(int argc, char *argv[]) { cpu_set_t *new_set, *cur_set; @@ -143,7 +108,9 @@ int main(int argc, char *argv[]) || (pid && (argc - optind < 1 || argc - optind > 2))) usage(stderr); - ncpus = max_number_of_cpus(); + ncpus = get_max_number_of_cpus(); + if (ncpus <= 0) + errx(EXIT_FAILURE, _("cannot determine NR_CPUS; aborting")); /* * cur_set is always used for the sched_getaffinity call |