Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Jan 2014 23:59:52 +0100
From:      Jilles Tjoelker <jilles@stack.nl>
To:        freebsd-hackers@freebsd.org
Subject:   [patch] libc/resolv: use poll() instead of kqueue()
Message-ID:  <20140108225951.GB87058@stack.nl>

next in thread | raw e-mail | index | archive | help
The resolver in libc creates a kqueue for watching a single file
descriptor. This can be done using poll() which should be lighter on the
kernel and reduce possible problems with rlimits (file descriptors,
kqueues).

Index: lib/libc/include/port_before.h
===================================================================
--- lib/libc/include/port_before.h	(revision 260048)
+++ lib/libc/include/port_before.h	(working copy)
@@ -5,7 +5,7 @@
 
 #define _LIBC		1
 #define DO_PTHREADS	1
-#define USE_KQUEUE	1
+#define USE_POLL	1
 
 #define ISC_SOCKLEN_T	socklen_t
 #define ISC_FORMAT_PRINTF(fmt, args) \
Index: lib/libc/resolv/res_send.c
===================================================================
--- lib/libc/resolv/res_send.c	(revision 260048)
+++ lib/libc/resolv/res_send.c	(working copy)
@@ -77,7 +77,7 @@ __FBSDID("$FreeBSD$");
  */
 
 #include "port_before.h"
-#ifndef USE_KQUEUE
+#if !defined(USE_KQUEUE) && !defined(USE_POLL)
 #include "fd_setsize.h"
 #endif
 
@@ -963,7 +963,7 @@ send_dg(res_state statp,
 		timeout.tv_nsec/1000000;
 	pollfd.fd = s;
 	pollfd.events = POLLRDNORM;
-	n = poll(&pollfd, 1, polltimeout);
+	n = _poll(&pollfd, 1, polltimeout);
 #endif /* USE_POLL */
 
 	if (n == 0) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140108225951.GB87058>