diff options
Diffstat (limited to 'lib/common/writer/init.c')
-rw-r--r-- | lib/common/writer/init.c | 14 |
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) |