@@ -191,7 +191,7 @@ class KMPHwlocAffinity : public KMPAffinity {
191
191
};
192
192
#endif /* KMP_USE_HWLOC */
193
193
194
- #if KMP_OS_LINUX || KMP_OS_FREEBSD
194
+ #if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD
195
195
#if KMP_OS_LINUX
196
196
/* On some of the older OS's that we build on, these constants aren't present
197
197
in <asm/unistd.h> #included from <sys.syscall.h>. They must be the same on
@@ -314,6 +314,9 @@ class KMPHwlocAffinity : public KMPAffinity {
314
314
#elif KMP_OS_FREEBSD
315
315
#include < pthread.h>
316
316
#include < pthread_np.h>
317
+ #elif KMP_OS_NETBSD
318
+ #include < pthread.h>
319
+ #include < sched.h>
317
320
#endif
318
321
class KMPNativeAffinity : public KMPAffinity {
319
322
class Mask : public KMPAffinity ::Mask {
@@ -407,7 +410,7 @@ class KMPNativeAffinity : public KMPAffinity {
407
410
#if KMP_OS_LINUX
408
411
long retval =
409
412
syscall (__NR_sched_getaffinity, 0 , __kmp_affin_mask_size, mask);
410
- #elif KMP_OS_FREEBSD
413
+ #elif KMP_OS_FREEBSD || KMP_OS_NETBSD
411
414
int r = pthread_getaffinity_np (pthread_self (), __kmp_affin_mask_size,
412
415
reinterpret_cast <cpuset_t *>(mask));
413
416
int retval = (r == 0 ? 0 : -1 );
@@ -428,7 +431,7 @@ class KMPNativeAffinity : public KMPAffinity {
428
431
#if KMP_OS_LINUX
429
432
long retval =
430
433
syscall (__NR_sched_setaffinity, 0 , __kmp_affin_mask_size, mask);
431
- #elif KMP_OS_FREEBSD
434
+ #elif KMP_OS_FREEBSD || KMP_OS_NETBSD
432
435
int r = pthread_setaffinity_np (pthread_self (), __kmp_affin_mask_size,
433
436
reinterpret_cast <cpuset_t *>(mask));
434
437
int retval = (r == 0 ? 0 : -1 );
@@ -471,7 +474,7 @@ class KMPNativeAffinity : public KMPAffinity {
471
474
}
472
475
api_type get_api_type () const override { return NATIVE_OS; }
473
476
};
474
- #endif /* KMP_OS_LINUX || KMP_OS_FREEBSD */
477
+ #endif /* KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD */
475
478
476
479
#if KMP_OS_WINDOWS
477
480
class KMPNativeAffinity : public KMPAffinity {
0 commit comments