diff options
author | David Carlier <devnexen@gmail.com> | 2020-05-12 21:19:12 +0100 |
---|---|---|
committer | David Carlier <devnexen@gmail.com> | 2020-05-12 21:21:22 +0100 |
commit | 4715ce59037d5806ede71e605f53b1addb7014ed (patch) | |
tree | 0da1a609614be57b08de27387dfc9123707fa50e /src/setcpuaffinity.c | |
parent | b726d64229a58e0683925c8e8f89ab6257dddfd7 (diff) | |
download | redis-4715ce59037d5806ede71e605f53b1addb7014ed.tar.gz |
NetBSD build update.
This platform supports CPU affinity (but not OpenBSD).
Diffstat (limited to 'src/setcpuaffinity.c')
-rw-r--r-- | src/setcpuaffinity.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/setcpuaffinity.c b/src/setcpuaffinity.c index dcae81c71..13594113c 100644 --- a/src/setcpuaffinity.c +++ b/src/setcpuaffinity.c @@ -36,6 +36,10 @@ #include <sys/param.h> #include <sys/cpuset.h> #endif +#ifdef __NetBSD__ +#include <pthread.h> +#include <sched.h> +#endif #include "config.h" #ifdef USE_SETCPUAFFINITY @@ -71,11 +75,18 @@ void setcpuaffinity(const char *cpulist) { #ifdef __FreeBSD__ cpuset_t cpuset; #endif +#ifdef __NetBSD__ + cpuset_t *cpuset; +#endif if (!cpulist) return; +#ifndef __NetBSD__ CPU_ZERO(&cpuset); +#else + cpuset = cpuset_create(); +#endif q = cpulist; while (p = q, q = next_token(q, ','), p) { @@ -110,7 +121,11 @@ void setcpuaffinity(const char *cpulist) { return; while (a <= b) { +#ifndef __NetBSD__ CPU_SET(a, &cpuset); +#else + cpuset_set(a, cpuset); +#endif a += s; } } @@ -124,6 +139,10 @@ void setcpuaffinity(const char *cpulist) { #ifdef __FreeBSD__ cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, sizeof(cpuset), &cpuset); #endif +#ifdef __NetBSD__ + pthread_setaffinity_np(pthread_self(), cpuset_size(cpuset), cpuset); + cpuset_destroy(cpuset); +#endif } #endif /* USE_SETCPUAFFINITY */ |