From bfef07a558cec40824d1af5332d68021c049fadb Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 12 Oct 2016 13:33:05 +0200 Subject: Rework internals resume interface * fibers/internal.scm (resume-on-fd-events, resume-on-readable-fd) (resume-on-writable-fd, resume-on-timer): Rework primitive resume interface. * fibers.scm: * fibers/timers.scm: Adapt users. --- fibers.scm | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'fibers.scm') diff --git a/fibers.scm b/fibers.scm index ffdb251..b3ebd6b 100644 --- a/fibers.scm +++ b/fibers.scm @@ -18,7 +18,6 @@ ;;;; (define-module (fibers) - #:use-module (fibers epoll) #:use-module (fibers internal) #:use-module (fibers repl) #:use-module (fibers timers) @@ -37,17 +36,14 @@ "Return the current fiber, or @code{#f} if no fiber is current." (current-fiber)) -(define (wait-for-events port fd events) - (let ((revents (suspend-current-fiber - (lambda (fiber) - (add-fd-events! (fiber-scheduler fiber) fd events fiber))))) - (unless (zero? (logand revents EPOLLERR)) - (error "error reading from port" port)))) - (define (wait-for-readable port) - (wait-for-events port (port-read-wait-fd port) (logior EPOLLIN EPOLLRDHUP))) + (suspend-current-fiber + (lambda (fiber) + (resume-on-readable-fd (port-read-wait-fd port) fiber)))) (define (wait-for-writable port) - (wait-for-events port (port-write-wait-fd port) EPOLLOUT)) + (suspend-current-fiber + (lambda (fiber) + (resume-on-writable-fd (port-read-wait-fd port) fiber)))) (define* (run-fibers #:optional (init #f) #:key (scheduler (make-scheduler)) -- cgit v1.2.3