POSIX siginfo

Brooks Davis brooks at one-eyed-alien.net
Thu Oct 13 10:55:02 PDT 2005


On Thu, Oct 13, 2005 at 10:31:50AM -0400, John Baldwin wrote:
> On Wednesday 12 October 2005 11:23 pm, David Xu wrote:
> > I am trying to implement POSIX sigqueue, while staring some code
> > in machdep.c and trap.c, I found our si_code for siginfo structure
> > is not in POSIX standard, all are machine dependent magical values
> > pushed by CPU. POSIX lists all these standard codes:
> >
> > http://www.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html
> >
> > /* codes for SIGILL */
> > ILL_ILLOPC
> > ILL_ILLOPN
> > ILL_ILLADR
> > ILL_ILLTRP
> > ILL_PRVOPC
> > ILL_PRVREG
> > ILL_COPROC
> > ILL_BADSTK
> >
> > /* codes for SIGBUS */
> > BUS_ADRALN
> > BUS_ADRERR
> > BUS_OBJERR
> > BUS_RESERVED
> >
> > /* codes for SIGSEGV */
> > SEGV_MAPERR
> > SEGV_ACCERR
> >
> > /* codes for SIGFPE */
> > FPE_INTOVF      1
> > FPE_INTDIV      2
> > FPE_FLTDIV      3
> > FPE_FLTOVF      4
> > FPE_FLTUND      5
> > FPE_FLTRES      6
> > FPE_FLTINV      7
> > FPE_FLTSUB      8
> >
> > /* codes for SIGTRAP */
> > TRAP_BRKPT
> > TRAP_TRACE
> >
> > ...
> >
> > Note that, NetBSD and Linux had already used the POSIX codes, should we
> > use them too?
> 
> Hmm, looks like we do use these values in some cases on i386 at least for 
> SIGFPE and possibly SIGBUS.  I think you should fix all the archs to use 
> these codes.  I would even go ahead and commit that on its own before the 
> POSIX sigqueue stuff.

I agree.

I ran into our lack of many of these just yesterday when working on
porting Open MPI[0].  I've got patches that make us compile there that will
be needed for the foreseeable future, but to be blunt the current status
of si_code support is really lame.  We don't even have a list of
values we do return other then some vague allusions to values SI_ and
FPE_ in sigaction(2).  It would be nice if we could at least define the
values POSIX says we should define and either implement them or document
what we do implement.

-- Brooks

[0] Of course what Open MPI is doing with the values is utterly evil
since it calls all sorts of non-signal safe functions in the signal
handler, but that's another story.

-- 
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20051013/131d4a06/attachment.bin


More information about the freebsd-arch mailing list