]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Use multiple worker queues (using isc_task_sendto()) in unix socket code
authorWitold Kręcicki <wpk@isc.org>
Thu, 18 Oct 2018 22:00:15 +0000 (22:00 +0000)
committerWitold Kręcicki <wpk@isc.org>
Tue, 6 Nov 2018 11:25:09 +0000 (11:25 +0000)
lib/isc/unix/socket.c

index 38a057b708d1bb61eb63c7e55b7f6682f3bfadcb..7e355ba848d06f76bc98b41582889ab56bbb6a6e 100644 (file)
@@ -2803,9 +2803,9 @@ send_recvdone_event(isc__socket_t *sock, isc_socketevent_t **dev) {
 
        if (((*dev)->attributes & ISC_SOCKEVENTATTR_ATTACHED)
            == ISC_SOCKEVENTATTR_ATTACHED)
-               isc_task_sendanddetach(&task, (isc_event_t **)dev);
+               isc_task_sendtoanddetach(&task, (isc_event_t **)dev, sock->threadid);
        else
-               isc_task_send(task, (isc_event_t **)dev);
+               isc_task_sendto(task, (isc_event_t **)dev, sock->threadid);
 }
 
 /*
@@ -2827,9 +2827,9 @@ send_senddone_event(isc__socket_t *sock, isc_socketevent_t **dev) {
 
        if (((*dev)->attributes & ISC_SOCKEVENTATTR_ATTACHED)
            == ISC_SOCKEVENTATTR_ATTACHED)
-               isc_task_sendanddetach(&task, (isc_event_t **)dev);
+               isc_task_sendtoanddetach(&task, (isc_event_t **)dev, sock->threadid);
        else
-               isc_task_send(task, (isc_event_t **)dev);
+               isc_task_sendto(task, (isc_event_t **)dev, sock->threadid);
 }
 
 /*
@@ -2849,7 +2849,7 @@ send_connectdone_event(isc__socket_t *sock, isc_socket_connev_t **dev) {
        if (ISC_LINK_LINKED(*dev, ev_link))
                ISC_LIST_DEQUEUE(sock->connect_list, *dev, ev_link);
 
-       isc_task_sendanddetach(&task, (isc_event_t **)dev);
+       isc_task_sendtoanddetach(&task, (isc_event_t **)dev, sock->threadid);
 }
 
 /*
@@ -3106,7 +3106,7 @@ internal_accept(isc__socket_t *sock) {
        task = dev->ev_sender;
        dev->ev_sender = sock;
 
-       isc_task_sendanddetach(&task, ISC_EVENT_PTR(&dev));
+       isc_task_sendtoanddetach(&task, ISC_EVENT_PTR(&dev), sock->threadid);
        return;
 
  soft_error:
@@ -4892,7 +4892,7 @@ isc_socket_connect(isc_socket_t *sock0, const isc_sockaddr_t *addr,
        if (sock->connected) {
                INSIST(isc_sockaddr_equal(&sock->peer_address, addr));
                dev->result = ISC_R_SUCCESS;
-               isc_task_send(task, ISC_EVENT_PTR(&dev));
+               isc_task_sendto(task, ISC_EVENT_PTR(&dev), sock->threadid);
 
                UNLOCK(&sock->lock);
 
@@ -4956,7 +4956,7 @@ isc_socket_connect(isc_socket_t *sock0, const isc_sockaddr_t *addr,
 
        err_exit:
                sock->connected = 0;
-               isc_task_send(task, ISC_EVENT_PTR(&dev));
+               isc_task_sendto(task, ISC_EVENT_PTR(&dev), sock->threadid);
 
                UNLOCK(&sock->lock);
                inc_stats(sock->manager->stats,
@@ -4972,7 +4972,7 @@ isc_socket_connect(isc_socket_t *sock0, const isc_sockaddr_t *addr,
                sock->connected = 1;
                sock->bound = 1;
                dev->result = ISC_R_SUCCESS;
-               isc_task_send(task, ISC_EVENT_PTR(&dev));
+               isc_task_sendto(task, ISC_EVENT_PTR(&dev), sock->threadid);
 
                UNLOCK(&sock->lock);
 
@@ -5258,8 +5258,8 @@ isc_socket_cancel(isc_socket_t *sock0, isc_task_t *task, unsigned int how) {
 
                                dev->result = ISC_R_CANCELED;
                                dev->ev_sender = sock;
-                               isc_task_sendanddetach(&current_task,
-                                                      ISC_EVENT_PTR(&dev));
+                               isc_task_sendtoanddetach(&current_task,
+                                                      ISC_EVENT_PTR(&dev), sock->threadid);
                        }
 
                        dev = next;