On 04/25, Oleg Nesterov wrote: > > On 04/25, Al Viro wrote: > > > > Point... Still, since we are talking about an arbitrary wide window (the > > damn thing is waiting for signals to arrive, after all) this doesn't > > sound good; > > ... > > IMO it's > > a QoI problem at the very least. > > and looks confusing, agreed. OK, I didn't really try to think, and somehow I simply can't wake up today. But perhaps we can do something the following? We add the new syscall sys_eintr(void) { return -EINTR; } (perhaps not strictly needed, perhaps we can reuse sys_restart_syscal) Now, --- x/arch/x86/kernel/signal.c +++ x/arch/x86/kernel/signal.c @@ -711,6 +711,13 @@ handle_signal(unsigned long sig, siginfo regs->ax = regs->orig_ax; regs->ip -= 2; break; + + case -EINTR: + break; + + default: + if (regs->orig_ax == NR_eintr) + regs->ax = NR_eintr; } } @@ -791,6 +798,7 @@ static void do_signal(struct pt_regs *re case -ERESTARTSYS: case -ERESTARTNOINTR: regs->ax = regs->orig_ax; + regs->orig_ax = NR_eintr; regs->ip -= 2; break; this ignores ERESTART_RESTARTBLOCK for simplicity. And I am not sure this can't confuse the tools like strace... Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html