Some fixes from FBSD

This commit is contained in:
Witold Krecicki
2018-09-05 10:02:24 +02:00
committed by Witold Kręcicki
parent 6324a0cec9
commit 919ae44f67
2 changed files with 14 additions and 10 deletions
+2 -1
View File
@@ -86,7 +86,7 @@ static const char *statenames[] = {
#define TASK_MAGIC ISC_MAGIC('T', 'A', 'S', 'K')
#define VALID_TASK(t) ISC_MAGIC_VALID(t, TASK_MAGIC)
#if defined(USE_EPOLL)
#if defined(ISC_PLATFORM_HAVEEPOLL) || defined(ISC_PLATFORM_HAVEKQUEUE)
#define TASKMGR_MULTIPLE_QUEUES 1
#endif
@@ -1403,6 +1403,7 @@ isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers,
#else
manager->queues = 1;
#endif
printf("Using %d queues\n", manager->queues);
UNLOCK(&manager->lock);
if (started == 0) {
+12 -9
View File
@@ -668,7 +668,7 @@ watch_fd(isc__socketmgr_t *manager, int threadid, int fd, int msg) {
evchange.filter = EVFILT_WRITE;
evchange.flags = EV_ADD;
evchange.ident = fd;
if (kevent(manager->kqueue_fds[threadid], &evchange, 1, NULL, 0, NULL) != 0)
if (kevent(manager->kqueue_fds[0], &evchange, 1, NULL, 0, NULL) != 0)
result = isc__errno2result(errno);
return (result);
@@ -750,7 +750,7 @@ unwatch_fd(isc__socketmgr_t *manager, int threadid, int fd, int msg) {
evchange.filter = EVFILT_WRITE;
evchange.flags = EV_DELETE;
evchange.ident = fd;
if (kevent(manager->kqueue_fds[threadid], &evchange, 1, NULL, 0, NULL) != 0)
if (kevent(manager->kqueue_fds[0], &evchange, 1, NULL, 0, NULL) != 0)
result = isc__errno2result(errno);
return (result);
@@ -3285,7 +3285,7 @@ internal_send(isc__socket_t *sock) {
* and unlocking twice if both reads and writes are possible.
*/
static void
process_fd(isc__socketmgr_t *manager, int fd, bool readable,
process_fd(isc__socketmgr_t *manager, int threadid, int fd, bool readable,
bool writeable)
{
isc__socket_t *sock;
@@ -3309,7 +3309,8 @@ process_fd(isc__socketmgr_t *manager, int fd, bool readable,
return;
}
sock->references++;
sock->threadid = threadid;
if (readable) {
if (sock->listener)
internal_accept(sock);
@@ -3363,7 +3364,7 @@ process_fds(isc__socketmgr_t *manager, int threadid, struct kevent **pevents,
}
readable = (events[i].filter == EVFILT_READ);
writable = (events[i].filter == EVFILT_WRITE);
process_fd(manager, events[i].ident, readable, writable);
process_fd(manager, threadid, events[i].ident, readable, writable);
}
if (have_ctlevent)
@@ -3559,7 +3560,7 @@ netthread(void *uap) {
while (!done) {
do {
#ifdef USE_KQUEUE
cc = kevent(manager->kqueue_fds[threadid], NULL, 0,
cc = kevent(manager->kqueue_fds[0], NULL, 0,
manager->events[threadid], manager->nevents, NULL);
#elif defined(USE_EPOLL)
cc = epoll_wait(manager->epoll_fds[threadid],
@@ -3726,7 +3727,8 @@ setup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
manager->kqueue_fds = isc_mem_get(mctx, sizeof(int) * manager->nthreads);
RUNTIME_CHECK(manager->kqueue_fds != NULL);
for (setup_polls=0; setup_polls < manager->nthreads; setup_polls++) {
// for (setup_polls=0; setup_polls < manager->nthreads; setup_polls++) {
setup_polls = 0; {
manager->kqueue_fds[setup_polls] = kqueue();
if (manager->kqueue_fds[setup_polls] == -1) {
result = isc__errno2result(errno);
@@ -3755,7 +3757,7 @@ cleanup:
isc_mem_put(mctx, manager->events[i],
sizeof(struct kevent) * manager->nevents);
}
isc_mem_put(mctx, manager->events, manager->nthreads * sizeof(struct epoll_event *));
isc_mem_put(mctx, manager->events, manager->nthreads * sizeof(struct kevent *));
return (result);
#elif defined(USE_EPOLL)
@@ -3936,7 +3938,7 @@ cleanup_watchers(isc_mem_t *mctx, isc__socketmgr_t *manager) {
sizeof(struct kevent) * manager->nevents);
}
isc_mem_put(mctx, manager->events,
sizeof(struct kevent*) * manager->nevents);
sizeof(struct kevent*) * manager->nthreads);
#elif defined(USE_EPOLL)
for (i=0; i < manager->nthreads; i++) {
close(manager->epoll_fds[i]);
@@ -5765,6 +5767,7 @@ static bool hasreuseport = false;
static void
init_hasreuseport() {
return;
#ifdef SO_REUSEPORT
int sock, yes = 1;
sock = socket(AF_INET, SOCK_DGRAM, 0);