CPU_ZERO(&cpuset);
CPU_SET(cpu, &cpuset);
if (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1,
- &cpuset, sizeof(cpuset)) != 0) {
+ sizeof(cpuset), &cpuset) != 0) {
return (ISC_R_FAILURE);
}
#elif defined(HAVE_PTHREAD_SETAFFINITY_NP)
bool readable, writable;
bool done = false;
bool have_ctlevent = false;
- INSIST(thread->threadid == 0);
-
if (nevents == thread->nevents) {
/*
* This is not an error, but something unexpected. If this
static void
init_hasreuseport() {
-#ifdef SO_REUSEPORT
+/*
+ * SO_REUSEPORT works very differently on *BSD and on Linux (because why not).
+ * We only want to use it on Linux, if it's available. On BSD we want to dup()
+ * sockets instead of re-binding them.
+ */
+#if defined(SO_REUSEPORT) && defined(__linux__)
int sock, yes = 1;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) {