Re: Strange Linux behaviour with blocking syscalls and stop signals+SIGCONT
From: Manfred Spraul
Date: Thu Jul 06 2006 - 14:41:36 EST
Michael Kerrisk wrote:
Michael: Could you replace the EINTR in inotify.c with ERESTARTNOHAND?
That should prevent the kernel from showing the signal to user space.
I'd guess that most instances of EINTR are wrong, except in device
drivers: It means we return from the syscall, even if the signal handler
wants to restart the system call.
I'll try patching a kernel to s/EINTR/ERESTARTNOHAND/ in relevant
places, and see how that goes. If it goes well, I'll submit a
patch.
1) I would go further and try ERESTARTSYS: ERESTARTSYS means that the
kernel signal handler honors SA_RESTART
2) At least for the futex functions, it won't be as easy as replacing
EINTR wiht ERESTARTSYS: the futex functions receive a timeout a the
parameter, with the duration of the wait call as a parameter. You must
use ERESTART_RESTARTBLOCK.
--
Manfred
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/