diff options
| author | Andy Wingo <wingo@pobox.com> | 2017-02-15 21:11:52 +0100 |
|---|---|---|
| committer | Andy Wingo <wingo@pobox.com> | 2017-02-15 21:11:52 +0100 |
| commit | f2ed2d7b32a2b1e1cf5e5e0e2bd92f3d66c3d264 (patch) | |
| tree | 410d02f34da6580b962faf6fc9cd9d76c0124a81 | |
| parent | fibers/config.scm is built source (diff) | |
| download | guile-fibers-f2ed2d7b32a2b1e1cf5e5e0e2bd92f3d66c3d264.tar.gz | |
Add epoll-add*!
* fibers/epoll.scm (epoll-add*!): New function, tries an epoll-modify!
then falls back to epoll-add!.
| -rw-r--r-- | fibers/epoll.scm | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/fibers/epoll.scm b/fibers/epoll.scm index 20d92ae..d4674a7 100644 --- a/fibers/epoll.scm +++ b/fibers/epoll.scm @@ -31,6 +31,7 @@ epoll? epoll-add! epoll-modify! + epoll-add*! epoll-remove! epoll-wake! epoll @@ -111,9 +112,15 @@ (define (epoll-add! epoll fd events) (primitive-epoll-ctl (epoll-fd epoll) EPOLL_CTL_ADD fd events)) -(define* (epoll-modify! epoll fd events) +(define (epoll-modify! epoll fd events) (primitive-epoll-ctl (epoll-fd epoll) EPOLL_CTL_MOD fd events)) +(define (epoll-add*! epoll fd events) + (catch 'system-error + (lambda () (epoll-modify! epoll fd events)) + (lambda _ + (epoll-add! epoll fd events)))) + (define (epoll-remove! epoll fd) (primitive-epoll-ctl (epoll-fd epoll) EPOLL_CTL_DEL fd)) |
