forked from Mirrorlandia_minetest/minetest
Add NetBSD cpu affinity support code (#10378)
This commit is contained in:
parent
62913b872e
commit
0683bea283
@ -33,6 +33,8 @@ DEALINGS IN THE SOFTWARE.
|
|||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
|
#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
|
||||||
#include <pthread_np.h>
|
#include <pthread_np.h>
|
||||||
|
#elif defined(__NetBSD__)
|
||||||
|
#include <sched.h>
|
||||||
#elif defined(_MSC_VER)
|
#elif defined(_MSC_VER)
|
||||||
struct THREADNAME_INFO {
|
struct THREADNAME_INFO {
|
||||||
DWORD dwType; // Must be 0x1000
|
DWORD dwType; // Must be 0x1000
|
||||||
@ -285,7 +287,14 @@ bool Thread::bindToProcessor(unsigned int proc_number)
|
|||||||
CPU_SET(proc_number, &cpuset);
|
CPU_SET(proc_number, &cpuset);
|
||||||
|
|
||||||
return pthread_setaffinity_np(getThreadHandle(), sizeof(cpuset), &cpuset) == 0;
|
return pthread_setaffinity_np(getThreadHandle(), sizeof(cpuset), &cpuset) == 0;
|
||||||
|
#elif defined(__NetBSD__)
|
||||||
|
|
||||||
|
cpuset_t *cpuset = cpuset_create();
|
||||||
|
if (cpuset == NULL)
|
||||||
|
return false;
|
||||||
|
int r = pthread_setaffinity_np(getThreadHandle(), cpuset_size(cpuset), cpuset);
|
||||||
|
cpuset_destroy(cpuset);
|
||||||
|
return r == 0;
|
||||||
#elif defined(__sun) || defined(sun)
|
#elif defined(__sun) || defined(sun)
|
||||||
|
|
||||||
return processor_bind(P_LWPID, P_MYID, proc_number, NULL) == 0
|
return processor_bind(P_LWPID, P_MYID, proc_number, NULL) == 0
|
||||||
|
Loading…
Reference in New Issue
Block a user