How does the IO manager handle reading regular files?

Niklas Hamb├╝chen mail at
Sun May 13 23:46:38 UTC 2018

I just got reminded that epoll() has no effect on regular files on Linux by reading an nginx article [1] [2] and why that is [3] [4].

By what means does the IO manager make reads (wraps around the read() syscall on Linux) non-blocking?

Does it always use read() in `foreign import safe` (or `interruptible`) so that an OS thread is spawned?

It would be great if somebody could point me to the code where that's done (not again: for *regular* files).



More information about the ghc-devs mailing list