Date: Thu, 18 Jan 2007 11:41:45 +0800 From: David Xu <davidxu@freebsd.org> To: Siavosh Benabbas <sbenabas@gmail.com> Cc: freebsd-arch@freebsd.org Subject: Re: siginfo_t.si_code macro constants Message-ID: <45AEEC79.3050901@freebsd.org> In-Reply-To: <32d8477c0701171856i6f7c4cdy384ad2e10086a65f@mail.gmail.com> References: <32d8477c0701171856i6f7c4cdy384ad2e10086a65f@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Siavosh Benabbas wrote: > Hi, > I am trying to compile parted on freebsd and I came across this. It seems > that many macro constants of POSIX that one should be able to check the > value of siginfo_t.si_code in a 3 parameter signal handler (set by > sigaction) are missing. These in particular include SEGV_MAPPER, > SEGV_ACCERR, and many ILL_* constants the man page of sigaction mentions: > > "The code argument of the BSD-style handler and the si_code member of > the > info argument to a SA_SIGINFO handler contain a numeric code explaining > the cause of the signal, usually one of the SI_... values from > <sys/signal.h> or codes specific to a signal, i.e., one of the FPE_... > values for SIGFPE." > > But it doesn't specifically list the macro's available. According to the > POSIX standard there should be some SEGV_* and ILL_* constants too. I > searched in the archives and it seems that this was pointed out around a > year ago. The mail in the archive also mentioned that siginfo_t.si_code > actually gets populated but there is no constant to check this against. The > following is from (a distribution of) linux's man page for sigaction > describing some of the constants available on Linux: > > +-------------------------------------+ > | SIGILL | > +-----------+-------------------------+ > |ILL_ILLOPC | illegal opcode | > +-----------+-------------------------+ > |ILL_ILLOPN | illegal operand | > +-----------+-------------------------+ > |ILL_ILLADR | illegal addressing mode | > +-----------+-------------------------+ > |ILL_ILLTRP | illegal trap | > +-----------+-------------------------+ > |ILL_PRVOPC | privileged opcode | > +-----------+-------------------------+ > |ILL_PRVREG | privileged register | > +-----------+-------------------------+ > |ILL_COPROC | coprocessor error | > +-----------+-------------------------+ > |ILL_BADSTK | internal stack error | > +-----------+-------------------------+ > .... > +----------------------------------------------------+ > | SIGSEGV | > +------------+---------------------------------------+ > |SEGV_MAPERR | address not mapped to object | > +------------+---------------------------------------+ > |SEGV_ACCERR | invalid permissions for mapped object | > +------------+---------------------------------------+ > .... > > Unfortunately I lack the expertise to implement any of these but I > wanted to > ask if anybody has a similar problem and/or is working on this. > > Thanks, > Siavosh Benabbas These codes are defined in -HEAD branch, RELENG_6 does not have them, I had added them when I was implementing signal queue. Regards, David Xu
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45AEEC79.3050901>