Poking around in signal_handler.c out of curiosity, I came across this:
while(UNLIKELY(close(control_pipe[0])) < 0 && UNLIKELY(errno==EINTR)); while(UNLIKELY(close(control_pipe[1])) < 0 && UNLIKELY(errno==EINTR)); (lines 3580-3581)
The UNLIKELY marker normally applies to an entire condition, not just to the integer that's about to be compared to zero. Should this become:
while(UNLIKELY(close(control_pipe[0]) < 0) && UNLIKELY(errno==EINTR)); while(UNLIKELY(close(control_pipe[1]) < 0) && UNLIKELY(errno==EINTR));
or is there something I'm not understanding about the nature of UNLIKELY()?
ChrisA