diff options
author | Rob Landley <rob@landley.net> | 2015-10-25 16:50:03 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2015-10-25 16:50:03 -0500 |
commit | eb1bbc245dd6554a8fbe879a4efb903f6e7788cb (patch) | |
tree | 14ed879a8b0ea527a9a79c7aa8e4bdfc2b2f300c /toys | |
parent | 5535a2695642dcf54051af2b654ab37a89ece72f (diff) | |
download | toybox-eb1bbc245dd6554a8fbe879a4efb903f6e7788cb.tar.gz |
Add xcount_cpus()
Diffstat (limited to 'toys')
-rw-r--r-- | toys/other/taskset.c | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/toys/other/taskset.c b/toys/other/taskset.c index 4ade5f10..29ce3173 100644 --- a/toys/other/taskset.c +++ b/toys/other/taskset.c @@ -40,10 +40,6 @@ config TASKSET #define sched_getaffinity(pid, size, cpuset) \ syscall(__NR_sched_getaffinity, (pid_t)pid, (size_t)size, (void *)cpuset) -GLOBALS( - int nproc; -) - // mask is an array of long, which makes the layout a bit weird on big // endian systems but as long as it's consistent... @@ -120,29 +116,18 @@ void taskset_main(void) } } -static int do_nproc(struct dirtree *new) -{ - if (!new->parent) return DIRTREE_RECURSE; - if (!strncmp(new->name, "cpu", 3) && isdigit(new->name[3])) TT.nproc++; - - return 0; -} - void nproc_main(void) { - int i, j; + unsigned i, j, nproc = 0; // This can only detect 32768 processors. Call getaffinity and count bits. if (!toys.optflags && -1!=sched_getaffinity(getpid(), 4096, toybuf)) { for (i = 0; i<4096; i++) - if (toybuf[i]) - for (j=0; j<8; j++) - if (toybuf[i]&(1<<j)) - TT.nproc++; + if (toybuf[i]) for (j=0; j<8; j++) if (toybuf[i]&(1<<j)) nproc++; } // If getaffinity failed or --all, count cpu entries in proc - if (!TT.nproc) dirtree_read("/sys/devices/system/cpu", do_nproc); + if (!nproc) nproc = xcount_cpus(); - xprintf("%d\n", TT.nproc); + xprintf("%u\n", nproc); } |