Re: [RFC] TIF_NOTIFY_RESUME, arch/*/*/*signal*.c and all such
From: Oleg Nesterov
Date: Wed Apr 25 2012 - 11:47:04 EST
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-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/