summaryrefslogtreecommitdiff
path: root/lib/common/writer/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/common/writer/init.c')
-rw-r--r--lib/common/writer/init.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/common/writer/init.c b/lib/common/writer/init.c
index 06726ce..7940c3f 100644
--- a/lib/common/writer/init.c
+++ b/lib/common/writer/init.c
@@ -10,16 +10,20 @@
#include <string.h>
#include <stdlib.h>
+#include <unistd.h>
-#ifdef HAVE_SYS_SYSINFO_H
-#include <sys/sysinfo.h>
+#ifdef HAVE_SCHED_GETAFFINITY
+#include <sched.h>
static size_t os_get_num_jobs(void)
{
- int nprocs;
+ cpu_set_t cpu_set;
+ CPU_ZERO(&cpu_set);
- nprocs = get_nprocs_conf();
- return nprocs < 1 ? 1 : nprocs;
+ if (sched_getaffinity(0, sizeof cpu_set, &cpu_set) == -1)
+ return 1;
+ else
+ return CPU_COUNT(&cpu_set);
}
#else
static size_t os_get_num_jobs(void)