Author: psmith Date: Thu Jan 18 19:09:15 2007 New Revision: 43
Modified: branches/home/psmith/restructure/src/event/epoll.lisp Log: Reduced wait time and ignored EINTR on epoll_wait return
Modified: branches/home/psmith/restructure/src/event/epoll.lisp ============================================================================== --- branches/home/psmith/restructure/src/event/epoll.lisp (original) +++ branches/home/psmith/restructure/src/event/epoll.lisp Thu Jan 18 19:09:15 2007 @@ -76,13 +76,18 @@ #+nio-debug (format t "poll-events called with :event-queue ~A~%" event-queue) (with-foreign-object (events 'epoll-event +epoll-size+) (memzero events (* +epoll-event-size+ +epoll-size+)) - (loop for res = (%epoll-wait event-queue events +epoll-size+ 1000) + (loop for res = (%epoll-wait event-queue events +epoll-size+ 100) do (progn #+nio-debug (format t "poll-events - dealing with ~A~%" res) (case res - (-1 (error 'poll-error)) + (-1 + (let ((errno (get-errno))) + (format t "-1 returned from epoll-wait, errno ~A~%" errno) + (if (eql errno 4) ;EINTR - interrupted by a system call + (return nil) + (error 'poll-error)))) (return nil) (t (let ((idents nil))