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/