Skip to content

Use Linux's signalfd() instead of pipe() to deliver signals to the IO manager

As pointed out to me by dcoutts, Linux has a new API that enables signals and other events to be delivered via a file descriptor, and hence used with select()/poll()/epoll(). The new API went into Linux 2.6.22:

http://kernelnewbies.org/Linux_2_6_22#head-0357b2415f5d3116bf2b03de07224d16912acec2

We could use this in GHC's IO manager to avoid the hacky use of pipe() for the same purpose.

Trac metadata
Trac field Value
Version 6.6.1
Type Task
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Runtime System
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture Unknown
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information