On Fri, Mar 09, 2007 at 10:38:35AM +0100, Thomas Gleixner wrote:
> On Fri, 2007-03-09 at 06:10 +0100, Nick Piggin wrote:
> > > i think that's quite right. I'm wondering why this never came up before? 
> > > But your fix is not complete i think:
> > > 
> > > > +             restart->arg2 = time;
> > > > +             return -ERESTART_RESTARTBLOCK;
> > > > +     }
> > > 
> > > 'time' here is relative, so the restarted syscall will do a /full/ wait 
> > > again.
> > 
> > But it has been modified by schedule_timeout?
> 
> But this does not change the syscall registers, so it is restarted in
> the same way. We need a new futex OP for this, which takes absolute time
> like the PI futex op does.

Forgive me if I'm missing something here, but I'm using the restart block
and saving the updated value of time in ->arg2, and using that as the new
time parameter passed into futex_wait from futex_wait_restart.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to