Erik,
> Also note the pipe busy reading lowers latency. It should be possible
> to do the same with poll/select/epoll.
Just to be sure - Do you mean that busy looping with poll:
while (!nevents)
nevents = poll (fds, timeout=0);
has better latency than blocking poll:
nevents = poll (fds, timeout=INFINITE)
Martin