diff options
Diffstat (limited to 'fibers/epoll.scm')
| -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)) |
