From eb1bbc245dd6554a8fbe879a4efb903f6e7788cb Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sun, 25 Oct 2015 16:50:03 -0500 Subject: Add xcount_cpus() --- lib/xwrap.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lib/xwrap.c') diff --git a/lib/xwrap.c b/lib/xwrap.c index 4880bbe0..69f891b9 100644 --- a/lib/xwrap.c +++ b/lib/xwrap.c @@ -723,3 +723,21 @@ void xsignal(int signal, void *handler) if (sigaction(signal, sa, 0)) perror_exit("xsignal %d", signal); } + +unsigned xcount_cpus(void) +{ + int len = 0, i, fd = xopen("/proc/stat", O_RDONLY); + unsigned cpus = 0; + + for (;;) { + if (1>(i = xread(fd, libbuf, sizeof(libbuf)-len))) break; + len += i; + // Each cpu# line has data after it, so last 5 bytes of file can't match + for (i = 0; i