lkml.org 
[lkml]   [2002]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] compatibility syscall layer (lets try again)
Linus Torvalds wrote:
>
> On Wed, 4 Dec 2002, george anzinger wrote:
> >
> > As a suggestion for a solution for this, is it true that
> > regs, on a system call, will ALWAYS be at the end of the
> > stack?
>
> No. Some architectures do not save enough state on the stack by default,
> and need to do more to use do_signal(). Look at alpha, for example - the
> default kernel stack doesn't contain all tbe registers needed, and
> the alpha do_signal() calling convention is different.
>
> If you want to handle do_signal(), then you need to do _all_ of this in
> architecture-specific files. You simply cannot do what you want to do in a
> generic way.
>
> Linus

Hi Linus,

Agreed! In my alternative version of the Posix timers patch, I avoid
calling do_signal() from clock_nanosleep by using a variant of the
existing ERESTARTNOHAND mechanism. The problem I ran into was that I
could not tell on entry to clock_nanosleep if it was a new call or
an old one being restarted. I solved this by adding a new
ERESTARTNANOSLP error code and making a small change in do_signal().
The handling of ERESTARTNANOSLP is the same as ERESTARTNOHAND but also
sets a new flag in the task_struct before restarting the system call.

This is still an architecture-specific change but atleast it is simple.

Jim Houston - Concurrent Computer Corp.
-
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 13:31    [W:1.075 / U:0.108 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site