~ chicken-core (chicken-5) 7cd875bb13f2efd2af83a9f8d82217101e4e85a3
commit 7cd875bb13f2efd2af83a9f8d82217101e4e85a3
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Jun 19 14:28:06 2011 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Sun Jun 19 14:28:06 2011 +0200
actually clear/set fdsets for error-fdset
diff --git a/scheduler.scm b/scheduler.scm
index a1a177e6..975c507f 100644
--- a/scheduler.scm
+++ b/scheduler.scm
@@ -31,7 +31,7 @@
(hide ready-queue-head ready-queue-tail ##sys#timeout-list
##sys#update-thread-state-buffer ##sys#restore-thread-state-buffer
remove-from-ready-queue ##sys#unblock-threads-for-i/o ##sys#force-primordial
- fdset-input-set fdset-output-set fdset-clear
+ fdset-input-set fdset-output-set fdset-error-set fdset-clear
fdset-select-timeout fdset-set fdset-test
create-fdset stderr
##sys#clear-i/o-state-for-thread! ##sys#abandon-mutexes)
@@ -367,7 +367,8 @@ EOF
(define fdset-clear
(foreign-lambda* void ()
"FD_ZERO(&C_fdset_input);"
- "FD_ZERO(&C_fdset_output);") )
+ "FD_ZERO(&C_fdset_output);"
+ "FD_ZERO(&C_fdset_error);") )
(define fdset-input-set
(foreign-lambda* void ([int fd])
@@ -377,8 +378,13 @@ EOF
(foreign-lambda* void ([int fd])
"FD_SET(fd, &C_fdset_output);" ) )
+(define fdset-error-set
+ (foreign-lambda* void ([int fd])
+ "FD_SET(fd, &C_fdset_error);" ) )
+
(define (fdset-set fd i/o)
(dbg "setting fdset for " fd " to " i/o)
+ (fdset-error-set fd)
(case i/o
((#t #:input) (fdset-input-set fd))
((#f #:output) (fdset-output-set fd))
Trap