summaryrefslogtreecommitdiff
path: root/src/platform.c
diff options
context:
space:
mode:
authorRyo Nakamura <upa@haeena.net>2022-11-15 19:57:53 +0900
committerRyo Nakamura <upa@haeena.net>2022-11-15 19:57:53 +0900
commita69115a4dc6ee25ba871cf2bd13e7bdb5c4f975d (patch)
tree209c2f12d788027bbdfda3adb04df0afb95b2c17 /src/platform.c
parent0421172778e69d103f5cb71ad61ab93c8ac406a2 (diff)
add -m coremask option
Diffstat (limited to 'src/platform.c')
-rw-r--r--src/platform.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/platform.c b/src/platform.c
index ea6b8ad..81dcfdf 100644
--- a/src/platform.c
+++ b/src/platform.c
@@ -24,6 +24,14 @@ int nr_cpus()
return n;
}
+
+int set_thread_affinity(pthread_t tid, int core)
+{
+ errno = ENOTSUP;
+ pr_err("setting thread afinity is not implemented on apple\n");
+ return -1;
+}
+
#endif
#ifdef linux
@@ -34,5 +42,19 @@ int nr_cpus()
return CPU_COUNT(&cpu_set);
return -1;
}
+
+int set_thread_affinity(pthread_t tid, int core)
+{
+ cpu_set_t target_cpu_set;
+ int ret = 0;
+
+ CPU_ZERO(&target_cpu_set);
+ CPU_SET(core, &target_cpu_set);
+ ret = pthread_setaffinity_np(tid, sizeof(target_cpu_set), &target_cpu_set);
+ if (ret < 0)
+ pr_err("failed to set thread/cpu affinity for core %d: %s",
+ core, strerrno());
+ return ret;
+}
#endif