diff --git a/configure b/configure index cc87bb0b48..ea6a4d81db 100755 --- a/configure +++ b/configure @@ -20332,7 +20332,7 @@ else fi ;; #( - *-freebsd*|*-openbsd*) : + *-freebsd*|*-openbsd*|*-netbsd*) : LDFLAGS="${LDFLAGS} -Wl,-E" SO_CFLAGS="-fpic" @@ -20348,13 +20348,6 @@ else fi ;; #( - *-netbsd*) : - - SO_CFLAGS="-fpic" - SO_LDFLAGS="-Bshareable -x" - SO_LD="ld" - SO_STRIP="sed -e s/-Wl,//g" - ;; #( *-solaris*) : SO_CFLAGS="-KPIC" diff --git a/configure.ac b/configure.ac index 41d82d77c5..d8c3edf71a 100644 --- a/configure.ac +++ b/configure.ac @@ -2697,7 +2697,7 @@ AS_IF([test "$with_dlopen" = "yes"], SO_LD="${CC}" ]) ], - [*-freebsd*|*-openbsd*],[ + [*-freebsd*|*-openbsd*|*-netbsd*],[ LDFLAGS="${LDFLAGS} -Wl,-E" SO_CFLAGS="-fpic" AS_IF([test "$use_libtool" = "yes"],[ @@ -2708,12 +2708,6 @@ AS_IF([test "$with_dlopen" = "yes"], SO_LD="${CC}" ]) ], - [*-netbsd*],[ - SO_CFLAGS="-fpic" - SO_LDFLAGS="-Bshareable -x" - SO_LD="ld" - SO_STRIP="sed -e s/-Wl,//g" - ], [*-solaris*],[ SO_CFLAGS="-KPIC" SO_LDFLAGS="-G -z text" diff --git a/lib/isc/pthreads/thread.c b/lib/isc/pthreads/thread.c index b882838f8c..c40ccf1e5d 100644 --- a/lib/isc/pthreads/thread.c +++ b/lib/isc/pthreads/thread.c @@ -71,6 +71,10 @@ isc_thread_create(isc_threadfunc_t func, isc_threadarg_t arg, return (ISC_R_SUCCESS); } +#ifdef __NetBSD__ +#define pthread_setconcurrency(a) (void) a/* nothing */ +#endif + void isc_thread_setconcurrency(unsigned int level) { (void)pthread_setconcurrency(level); @@ -83,7 +87,11 @@ isc_thread_setname(isc_thread_t thread, const char *name) { * macOS has pthread_setname_np but only works on the * current thread so it's not used here */ +#if defined(__NetBSD__) + (void)pthread_setname_np(thread, name, NULL); +#else (void)pthread_setname_np(thread, name); +#endif #elif defined(HAVE_PTHREAD_SET_NAME_NP) (void)pthread_set_name_np(thread, name); #else @@ -115,6 +123,20 @@ isc_thread_setaffinity(int cpu) { return (ISC_R_FAILURE); } #elif defined(HAVE_PTHREAD_SETAFFINITY_NP) +#if defined(__NetBSD__) + cpuset_t *cset; + cset = cpuset_create(); + if (cset == NULL) + return (ISC_R_FAILURE); + cpuset_set(cpu, cset); + if (pthread_setaffinity_np(pthread_self(), + cpuset_size(cset), cset) != 0) + { + cpuset_destroy(cset); + return (ISC_R_FAILURE); + } + cpuset_destroy(cset); +#else /* linux? */ cpu_set_t set; CPU_ZERO(&set); CPU_SET(cpu, &set); @@ -123,6 +145,7 @@ isc_thread_setaffinity(int cpu) { { return (ISC_R_FAILURE); } +#endif /* __NetBSD__ */ #elif defined(HAVE_PROCESSOR_BIND) if (processor_bind(P_LWPID, P_MYID, cpu, NULL) != 0) { return (ISC_R_FAILURE);