summaryrefslogtreecommitdiff
path: root/epoll.c (follow)
Commit message (Expand)AuthorAgeFilesLines
* run-fibers returns when initial fiber finishes•••* epoll.c (scm_primitive_epoll_wait): Accept timeout in internal time units instead of milliseconds. Avoid some overhead if the timeout is zero. * fibers/epoll.scm (epoll): Adapt to primitive-epoll-wait chance. Change get-timeout callback to an "expiry" argument and an update-expiry last-minute function. Tighten the window around the "waiting" epoll-state. * fibers.scm (%run-fibers): Remove current-read-waiter / current-write-waiter parameterization, given that fibers individually each have this parameterization. (run-fibers): Add #:drain? argument. * fibers/internal.scm (schedule-runnables-for-next-turn): Simplify a bit, inlining scheduler-poll-timeout and adapting to epoll change. (scheduler-work-pending?): New function. (run-scheduler): Simplify finish? logic. * tests/basic.scm: * tests/speedup.scm: Update to drain where needed. * fibers.texi: Update for new run-fibers termination condition. Andy Wingo2017-02-191-7/+20
* Prevent GC from waking up epoll•••* epoll.c (do_epoll_wait): Leave Guile to do the epoll, preventing libgc from having to interrupt us for GC. Andy Wingo2017-02-081-7/+27
* Remove epoll dep on suspendable ports•••* epoll.c (scm_primitive_epoll_wake): New function. (scm_primitive_epoll_wait): If the epoll was woken, drain the read pipe directly. (init_fibers_epoll): Adapt prototypes. * fibers/epoll.scm (epoll-wake!): Use primitive-epoll-wake. (epoll): Let primitive-epoll-wait handle wakeup. Andy Wingo2017-01-041-4/+45
* C-c works on threads stuck in epoll•••* epoll.c (scm_primitive_epoll_wait): Add wakefd argument, and use facilities from git guile to ensure that C-c will wake a thread sleeping in epoll. (init_fibers_epoll): Declare additional primitive-epoll-wait arg. * fibers/epoll.scm (epoll): Tell Guile about the wake fd. Andy Wingo2016-12-291-10/+18
* add (fibers epoll)•••* configure.ac: Add checks for sys/epoll.h, epoll_create, and epoll_create1. * epoll.c: New file. * module/ice-9/epoll.scm: New file. * module/Makefile.am: Build new files. * env.in: Add to LTDL_LIBRARY_PATH. * .gitignore: Add new built products. Andy Wingo2016-07-031-0/+174