Re: sa_sigaction signal handler: third parameter?
Jamie Lokier (lk@tantalophile.demon.co.uk)
Fri, 7 Sep 2001 02:38:33 +0100
Orjan Friberg wrote:
> I'm trying to make life easier for a user-defined SIGSEGV handler, the
> sa_sigaction one with 3 parameters. The second parameter, the siginfo_t
> * one, is there. Problem is, I would like to pass on additional
> information to the signal handler, more specifically information about
> whether there was a protection fault, read/write etc. I've looked at
> some of the other ports (I'm working on the CRIS port BTW), and for
> example the i386 has fields in the task and sigcontext structs to keep
> this sort of information.
>
> Question is how to pass this information on to the signal handler.
> Looking at the code, it seems the third parameter (void *) is being used
> to send a ucontext_t * in (at least) the arm and mips cases. I followed
> a lot of threads in the archive, but couldn't find one that adressed
> what this third parameter is actually meant to be used for. Obviously,
> sending a ucontext would solve my problem, since it contains the
> sigcontext struct. Is there a Right Way to do it?
Whether or not there was a protection fault is indicated with
SEGV_MAPERR vs. SEGV_ACCERR. Unfortunately, the siginfo_t doesn't have
any place to indicate whether it's a read or a write fault. *How could
they have left that out?*
The Right Way, IMHO, would be to find some acceptable,
standard-compatible way to get the read/write flag into the siginfo_t.
cheers,
-- Jamie
-
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/