summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid CARLIER <devnexen@gmail.com>2020-10-25 12:14:05 +0000
committerOran Agra <oran@redislabs.com>2020-10-27 09:12:01 +0200
commit5aa0fef2ce0a0dcf3a11d1ccb386b5b447a90778 (patch)
tree67dc945c29cc6d1151f45c0c0fd0b8f1482ee9ae
parent3988e32f41d75444f0bca6200608bc15f7e27112 (diff)
downloadredis-5aa0fef2ce0a0dcf3a11d1ccb386b5b447a90778.tar.gz
cpu affinity: DragonFlyBSD support (#7956)
(cherry picked from commit 27f4c212f377dfbe1a60fb96635ae16bc405b959)
-rw-r--r--src/config.h2
-rw-r--r--src/setcpuaffinity.c9
2 files changed, 9 insertions, 2 deletions
diff --git a/src/config.h b/src/config.h
index 320837b7e..b9c68f38b 100644
--- a/src/config.h
+++ b/src/config.h
@@ -253,7 +253,7 @@ int pthread_setname_np(const char *name);
#endif
/* Check if we can use setcpuaffinity(). */
-#if (defined __linux || defined __NetBSD__ || defined __FreeBSD__)
+#if (defined __linux || defined __NetBSD__ || defined __FreeBSD__ || defined __DragonFly__)
#define USE_SETCPUAFFINITY
void setcpuaffinity(const char *cpulist);
#endif
diff --git a/src/setcpuaffinity.c b/src/setcpuaffinity.c
index 13594113c..77b162103 100644
--- a/src/setcpuaffinity.c
+++ b/src/setcpuaffinity.c
@@ -36,6 +36,10 @@
#include <sys/param.h>
#include <sys/cpuset.h>
#endif
+#ifdef __DragonFly__
+#include <pthread.h>
+#include <pthread_np.h>
+#endif
#ifdef __NetBSD__
#include <pthread.h>
#include <sched.h>
@@ -72,7 +76,7 @@ void setcpuaffinity(const char *cpulist) {
#ifdef __linux__
cpu_set_t cpuset;
#endif
-#ifdef __FreeBSD__
+#if defined (__FreeBSD__) || defined(__DragonFly__)
cpuset_t cpuset;
#endif
#ifdef __NetBSD__
@@ -139,6 +143,9 @@ void setcpuaffinity(const char *cpulist) {
#ifdef __FreeBSD__
cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, sizeof(cpuset), &cpuset);
#endif
+#ifdef __DragonFly__
+ pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset);
+#endif
#ifdef __NetBSD__
pthread_setaffinity_np(pthread_self(), cpuset_size(cpuset), cpuset);
cpuset_destroy(cpuset);