summaryrefslogtreecommitdiff
path: root/src/platform.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform.c')
-rw-r--r--src/platform.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/platform.c b/src/platform.c
index 5e0573e..1a87cd3 100644
--- a/src/platform.c
+++ b/src/platform.c
@@ -1,14 +1,15 @@
-#include <util.h>
-#include <platform.h>
-
#ifdef __APPLE__
#include <sys/types.h>
#include <sys/sysctl.h>
#elif linux
+#define _GNU_SOURCE
+#include <sched.h>
#else
#error unsupported platform
#endif
+#include <util.h>
+#include <platform.h>
#ifdef __APPLE__
int nr_cpus()
@@ -25,3 +26,13 @@ int nr_cpus()
}
#endif
+#ifdef linux
+int nr_cpus()
+{
+ cpu_set_t cpu_set;
+ if (sched_getaffinity(0, sizeof(cpu_set_t), &cpu_set) == 0)
+ return CPU_COUNT(&cpu_set);
+ return -1;
+}
+#endif
+