lkml.org 
[lkml]   [2002]   [Dec]   [4]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateWed, 4 Dec 2002 14:42:36 -0800 (PST)
FromLinus Torvalds <>
SubjectRe: [PATCH] compatibility syscall layer (lets try again)
On Wed, 4 Dec 2002, george anzinger wrote:
> 
> On the PARISC I did this (a long time ago in a far away
> place) by unwinding the stack to pick up the registers that
> were saved along the way.  Is this at all feasible?

No. Alpha (and apparently sparc) simply do not save the registers that the
signal handling wants on the stack _at_all_. There are too many registers 
to save at each system call entry point, and 99% of all system calls never 
need it.

The system call return that checks for signals anyway will end up saving a
special stack frame when needed. As will the special signal-related system
calls (sigsuspend() and friends). All of this is not only architecture-
dependent, it is literally coded in assembly language for the
architectures.  See "do_switch_stack()" for alpha.

Anyway, if you wondered why Linux beats every other Unix out there on 
system call overhead, now you know.  And yes, this is important.

		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/

\
 
 \ /
  Last update: 2005-03-22 12:31    [W:0.464 / U:0.190 seconds]
©2003-2008 Jasper Spaans