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/