diff options
| author | Andy Wingo <wingo@pobox.com> | 2016-10-12 13:33:05 +0200 |
|---|---|---|
| committer | Andy Wingo <wingo@pobox.com> | 2016-10-12 13:33:05 +0200 |
| commit | bfef07a558cec40824d1af5332d68021c049fadb (patch) | |
| tree | 7a73e800312a6c459f90efececa141d2ed578d78 /fibers.scm | |
| parent | Update documentation. (diff) | |
| download | guile-fibers-bfef07a558cec40824d1af5332d68021c049fadb.tar.gz | |
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.
Diffstat (limited to 'fibers.scm')
| -rw-r--r-- | fibers.scm | 16 |
1 files changed, 6 insertions, 10 deletions
@@ -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)) |
