From: Nikodemus S. <de...@us...> - 2010-09-19 20:08:56
|
Update of /cvsroot/sbcl/sbcl/tools-for-build In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv19483/tools-for-build Modified Files: grovel-features.sh grovel-headers.c Added Files: os-provides-poll-test.c Log Message: 1.0.42.43: FD-STREAMS no longer hook into SERVE-EVENT by default * SOCKET-MAKE-STREAM, and MAKE-FD-STREAM have new keyword argument :SERVE-EVENTS which requests that blocking IO on the stream should dispatch to SERVE-EVENT. For SOCKET-MAKE-STREAM the default is T, for MAKE-FD-STREAM the default it NIL. * Don't call SYSREAD-MAY-BLOCK-P at all unless we need to to handle events or check for timeout. * Make WAIT-UNTIL-FD-USABLE use UNIX-SIMPLE-POLL instead of going into SUB-SERVE-EVENT when appropriate: ** Explicit requests to not serve events. ** Timeout 0. ** No other handlers and no periodic polling function. * When FD-STREAM-SERVE-EVENTS is false but write returns EWOULDBLOCK, don't queue output but wait till poll(2) says we can go. * UNIX-SIMPLE-POLL uses poll() only on platforms where a build-time test shows it to exist and work as expected. Elsewhere it is built on top of good 'ol select(). --- NEW FILE: os-provides-poll-test.c --- /* test to build and run so that we know if we have poll that works on * stdin and /dev/zero -- which is hopefully a sufficient sample to weed * out crappy versions like that on Darwin. */ #include <fcntl.h> #include <poll.h> int main () { struct pollfd fds; fds.fd = 0; fds.events = POLLIN|POLLPRI; fds.revents = 0; if (!((1 == poll(&fds, 1, -1)) && ((POLLIN|POLLPRI) & fds.revents))) return 0; fds.fd = open("/dev/zero", O_RDONLY); fds.events = POLLIN|POLLPRI; fds.revents = 0; if (!((1 == poll(&fds, 1, -1)) && ((POLLIN|POLLPRI) & fds.revents))) return 0; return 104; } Index: grovel-features.sh =================================================================== RCS file: /cvsroot/sbcl/sbcl/tools-for-build/grovel-features.sh,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- grovel-features.sh 1 Sep 2010 14:14:55 -0000 1.11 +++ grovel-features.sh 19 Sep 2010 20:08:47 -0000 1.12 @@ -9,7 +9,7 @@ featurep() { bin="$1-test" rm -f $bin - $GNUMAKE $bin -I ../src/runtime > /dev/null 2>&1 && ./$bin > /dev/null 2>&1 + $GNUMAKE $bin -I ../src/runtime > /dev/null 2>&1 && echo "input" | ./$bin> /dev/null 2>&1 if [ "$?" = 104 ] then printf " :$1" @@ -30,3 +30,5 @@ featurep os-provides-suseconds-t featurep os-provides-getprotoby-r + +featurep os-provides-poll Index: grovel-headers.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/tools-for-build/grovel-headers.c,v retrieving revision 1.45 retrieving revision 1.46 diff -u -d -r1.45 -r1.46 --- grovel-headers.c 19 Sep 2010 14:14:16 -0000 1.45 +++ grovel-headers.c 19 Sep 2010 20:08:47 -0000 1.46 @@ -258,6 +258,7 @@ defconstant("pollin", POLLIN); defconstant("pollout", POLLOUT); defconstant("pollpri", POLLPRI); + defconstant("pollhup", POLLHUP); DEFTYPE("nfds-t", nfds_t); printf(";;; langinfo\n"); |