lkml.org 
[lkml]   [2012]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [RFC] TIF_NOTIFY_RESUME, arch/*/*/*signal*.c and all such
    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.


    \
     
     \ /
      Last update: 2012-04-25 17:49    [W:4.455 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site