summaryrefslogtreecommitdiff
path: root/src/platform.c
diff options
context:
space:
mode:
authorRyo Nakamura <upa@haeena.net>2022-10-23 15:51:21 +0900
committerRyo Nakamura <upa@haeena.net>2022-10-23 15:51:21 +0900
commitd11ac58f4b95b2f0fe3579b6fd430b2c29465af2 (patch)
treebddf2e8f3e57018e90e41cb0f2966989d9e16ecd /src/platform.c
parent99b2bca7e537f2954d2f99ebeb4d5f93a7bcb91f (diff)
compilable in linux
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
+