lkml.org 
[lkml]   [2002]   [Dec]   [5]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateWed, 04 Dec 2002 23:10:31 -0800
Fromgeorge anzinger <>
SubjectRe: [PATCH] compatibility syscall layer (lets try again)
Linus Torvalds wrote:
> 
> On Wed, 4 Dec 2002, george anzinger wrote:
> >
> > Once it changes the system call (eax, right), could the new
> > call code then just get the parms from the restart_block.
> 
> Agreed.
> 
> > I think it would be best to keep this as generic as
> > possible, i.e. let the new call code fetch its own
> > paramerers from the restart_block.
> 
> We could even have one _single_ a generic "restart" system call, and have
> the function pointer for that be in the restart block.

I think what you mean is that, if there is a
restart_function (i.e. the block is set up) and the return
is -ERESTART_RESTARTBLOCK, then change eax (x86 ) to call
sys_restart which would in turn call the function in the
restart_block.

One of the problems with this is the way parameters are
passed to system calls.  One way to do this would be to have
sys_restart branch to the restart_function (requires asm). 
Another way is to just pass a struct pointer (actually the
reg struct) which the restart function could sort out.  For
example for nano_sleep:

int sys_restart(struct void parms)
{
	return (current->restart_block.sys_call) (&parms);
}
Then:
struct nano_sleep_call{
	struct timespec *tp;
	struct timespec *rem;
}
int restart_nano_sleep(struct nano_sleep_call *parm)
> > My question is who sets up these values?  I think you are
> > saying it should be the system call.  Is this right?
> 
> Whatever system call that return -ERESTART_RESTARTBLOCK, yes.
> 
> So it would never get set up at all in the fast path. Only in the error
> case path of a system call that wants to have restarting capabilities.

And then only when returning -ERESTART_RESTARTBLOCK.
> 
>                 Linus
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
George Anzinger   george@mvista.com
High-res-timers: 
http://sourceforge.net/projects/high-res-timers/
Preemption patch:
http://www.kernel.org/pub/linux/kernel/people/rml
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:31    [from the cache]
©2003-2008