siginfo_t.si_code macro constants

Siavosh Benabbas sbenabas at gmail.com
Thu Jan 18 04:20:49 UTC 2007


Hi,
Thanks.
Are there going to be backported?
--
Siavosh Benabbas

On 1/17/07, David Xu <davidxu at freebsd.org> wrote:
>
> 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
>
>
>


More information about the freebsd-arch mailing list