diff options
| author | David Carlier <devnexen@gmail.com> | 2020-12-04 16:09:42 +0000 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2020-12-15 02:34:25 +0100 |
| commit | 2c355b81f20fe0d40ac825375073d21b211732b9 (patch) | |
| tree | 8245c972b04de1486c3e00a60494424276d54797 /Source/Core/Common/Thread.cpp | |
| parent | ed1564515b7c4d9a72c56f28b98b571c18212599 (diff) | |
Add NetBSD support
Diffstat (limited to 'Source/Core/Common/Thread.cpp')
| -rw-r--r-- | Source/Core/Common/Thread.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/Source/Core/Common/Thread.cpp b/Source/Core/Common/Thread.cpp index d9503c784e..10e5fa0552 100644 --- a/Source/Core/Common/Thread.cpp +++ b/Source/Core/Common/Thread.cpp @@ -18,6 +18,8 @@ #include <mach/mach.h> #elif defined BSD4_4 || defined __FreeBSD__ || defined __OpenBSD__ #include <pthread_np.h> +#elif defined __NetBSD__ +#include <sched.h> #elif defined __HAIKU__ #include <OS.h> #endif @@ -119,7 +121,9 @@ void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) { #ifdef __APPLE__ thread_policy_set(pthread_mach_thread_np(thread), THREAD_AFFINITY_POLICY, (integer_t*)&mask, 1); -#elif (defined __linux__ || defined BSD4_4 || defined __FreeBSD__) && !(defined ANDROID) +#elif (defined __linux__ || defined BSD4_4 || defined __FreeBSD__ || defined __NetBSD__) && \ + !(defined ANDROID) +#ifndef __NetBSD__ #ifdef __FreeBSD__ cpuset_t cpu_set; #else @@ -132,6 +136,16 @@ void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) CPU_SET(i, &cpu_set); pthread_setaffinity_np(thread, sizeof(cpu_set), &cpu_set); +#else + cpuset_t* cpu_set = cpuset_create(); + + for (int i = 0; i != sizeof(mask) * 8; ++i) + if ((mask >> i) & 1) + cpuset_set(i, cpu_set); + + pthread_setaffinity_np(thread, cpuset_size(cpu_set), cpu_set); + cpuset_destroy(cpu_set); +#endif #endif } @@ -156,6 +170,8 @@ void SetCurrentThreadName(const char* name) pthread_setname_np(name); #elif defined __FreeBSD__ || defined __OpenBSD__ pthread_set_name_np(pthread_self(), name); +#elif defined(__NetBSD__) + pthread_setname_np(pthread_self(), "%s", const_cast<char*>(name)); #elif defined __HAIKU__ rename_thread(find_thread(nullptr), name); #else |
