At least Solaris 2.x still does this on the SPARC. At signal delivey
time, sigacthandler in libc is invoked, which in turn calls the
signal handler and onec the signal handler returns it uses the
setcontext system call to restore execution to the point where the
signal was generated.
I like the idea of having setcontext/getcontext and delivering a
siginfo_t and a ucontext_t to those signal handlers that request it.
The cute thing about setcontext/getcontext is that any newcomer to
Linux can write his own thread package in userland in a couple of
hours :-). I know, I know we have the superior clone. I just liked
the fact that SVR4 had a decent way of getting/setting the process
execution context.
Miguel
-- miguel@roxanne.nuclecu.unam.mx The GNU Midnight Commander: http://mc.blackdown.org/mc Linux/SPARC project: http://www.geog.ubc.ca/sparclinux.html