summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2006-05-06 11:24:59 +0000
committerrwatson <rwatson@FreeBSD.org>2006-05-06 11:24:59 +0000
commitb4334eda5c4eb962f723de1c7e5ed80d00df7d8e (patch)
tree6c7c6ea012f3849611bfc70cf7fa74f105dc22bf
parentfeee636809396137c14151eccf9993c016cfc4c1 (diff)
downloadFreeBSD-src-b4334eda5c4eb962f723de1c7e5ed80d00df7d8e.zip
FreeBSD-src-b4334eda5c4eb962f723de1c7e5ed80d00df7d8e.tar.gz
Modify UDP to use sosend_dgram() instead of sosend(). This allows
for signicantly optimized UDP socket I/O when using a single UDP socket from many threads or processes that share it, by avoiding significant locking and other overhead in the general sosend() path that isn't necessary for simple datagram sockets. Specifically, this change results in a significant performance improvement for threaded name service in BIND9 under load. Suggested by: Jinmei_Tatsuya at isc dot org
-rw-r--r--sys/netinet/udp_usrreq.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index b7b45f3..bb1c0ff 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1118,6 +1118,7 @@ struct pr_usrreqs udp_usrreqs = {
.pru_disconnect = udp_disconnect,
.pru_peeraddr = udp_peeraddr,
.pru_send = udp_send,
+ .pru_sosend = sosend_dgram,
.pru_shutdown = udp_shutdown,
.pru_sockaddr = udp_sockaddr,
.pru_sosetlabel = in_pcbsosetlabel
OpenPOWER on IntegriCloud