Messages in this thread |  | | Date | Fri, 7 Sep 2001 02:38:33 +0100 | From | Jamie Lokier <> | Subject | Re: sa_sigaction signal handler: third parameter? |
| |
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/
|  |