summaryrefslogtreecommitdiff
path: root/libraries/base/GHC/Event.hs
diff options
context:
space:
mode:
authorBen Gamari <bgamari.foss@gmail.com>2015-01-12 18:36:23 -0500
committerBen Gamari <bgamari.foss@gmail.com>2015-01-12 18:36:23 -0500
commit023439980f6ef6ec051f676279ed2be5f031efe6 (patch)
tree33c19b6f0654c8f2cb0a1ea9555ad6fb79dc94c0 /libraries/base/GHC/Event.hs
parent8464fa29e677e6845ca96d21474840803218f0b9 (diff)
downloadhaskell-023439980f6ef6ec051f676279ed2be5f031efe6.tar.gz
Event Manager: Make one-shot a per-registration property
Summary: Currently the event manager has a global flag for whether to create epoll-like notifications as one-shot (e.g. EPOLLONESHOT, where an fd will be deactivated after its first event) or standard multi-shot notifications. Unfortunately this means that the event manager may export either one-shot or multi-shot semantics to the user. Even worse, the user has no way of knowing which semantics are being delivered. This resulted in breakage in the usb[1] library which deadlocks after notifications on its fd are disabled after the first event is delivered. This patch reworks one-shot event support to allow the user to choose whether one-shot or multi-shot semantics are desired on a per-registration basis. The event manager can then decide whether to use a one-shot or multi-shot epoll. A registration is now defined by a set of Events (as before) as well as a Lifetime (either one-shot or multi-shot). We lend monoidal structure to Lifetime choosing OneShot as the identity. This allows us to combine Lifetime/Event pairs of an fd to give the longest desired lifetime of the registration and the full set of Events for which we want notification. [1] https://github.com/basvandijk/usb/issues/7 Test Plan: Add more test cases and validate Reviewers: tibbe, AndreasVoellmy, hvr, austin Reviewed By: austin Subscribers: thomie, carter, simonmar Differential Revision: https://phabricator.haskell.org/D347
Diffstat (limited to 'libraries/base/GHC/Event.hs')
-rw-r--r--libraries/base/GHC/Event.hs1
1 files changed, 0 insertions, 1 deletions
diff --git a/libraries/base/GHC/Event.hs b/libraries/base/GHC/Event.hs
index 8c69d3c1ee..436914cf8a 100644
--- a/libraries/base/GHC/Event.hs
+++ b/libraries/base/GHC/Event.hs
@@ -26,7 +26,6 @@ module GHC.Event
, IOCallback
, FdKey(keyFd)
, registerFd
- , registerFd_
, unregisterFd
, unregisterFd_
, closeFd