diff options
author | Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> | 2016-01-15 14:45:01 +0000 |
---|---|---|
committer | Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> | 2016-01-26 10:51:42 +0000 |
commit | 34e79b757ab6100d44bdbfa6f9603793a4215bbf (patch) | |
tree | 4c4ef4031656a8f0dfe3e67b2a972b0d0860924a | |
parent | 60027571bba4763dc6538fd3694eccebcd317339 (diff) | |
download | perl-34e79b757ab6100d44bdbfa6f9603793a4215bbf.tar.gz |
Add SA_SIGINFO 'code' constants to POSIX
Mention them in the sigaction documentation, and document the 'addr'
field.
-rw-r--r-- | ext/POSIX/Makefile.PL | 12 | ||||
-rw-r--r-- | ext/POSIX/lib/POSIX.pm | 15 | ||||
-rw-r--r-- | ext/POSIX/lib/POSIX.pod | 11 | ||||
-rw-r--r-- | ext/POSIX/t/export.t | 10 | ||||
-rw-r--r-- | pod/perldelta.pod | 7 |
5 files changed, 54 insertions, 1 deletions
diff --git a/ext/POSIX/Makefile.PL b/ext/POSIX/Makefile.PL index 5a24a34058..fabbe8a844 100644 --- a/ext/POSIX/Makefile.PL +++ b/ext/POSIX/Makefile.PL @@ -128,6 +128,18 @@ push @names, {name=>$_, type=>"IV", default=>["IV", "0"]} _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX _POSIX_STREAM_MAX _POSIX_TZNAME_MAX _POSIX_VDISABLE _POSIX_VERSION )); +push @names, {name=>$_, type =>"IV"}, + foreach (qw(ILL_ILLOPC ILL_ILLOPN ILL_ILLADR ILL_ILLTRP ILL_PRVOPC ILL_PRVREG + ILL_COPROC ILL_BADSTK + FPE_INTDIV FPE_INTOVF FPE_FLTDIV FPE_FLTOVF FPE_FLTUND + FPE_FLTRES FPE_FLTINV FPE_FLTSUB + SEGV_MAPERR SEGV_ACCERR + BUS_ADRALN BUS_ADRERR BUS_OBJERR + TRAP_BRKPT TRAP_TRACE + CLD_EXITED CLD_KILLED CLD_DUMPED CLD_TRAPPED CLD_STOPPED CLD_CONTINUED + POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP + SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ + )); if ($rt_signals) { push @names, {name=>"SIGRTMAX", not_constant=>1}, diff --git a/ext/POSIX/lib/POSIX.pm b/ext/POSIX/lib/POSIX.pm index d8082074b8..8e5d4acf0c 100644 --- a/ext/POSIX/lib/POSIX.pm +++ b/ext/POSIX/lib/POSIX.pm @@ -4,7 +4,7 @@ use warnings; our ($AUTOLOAD, %SIGRT); -our $VERSION = '1.59'; +our $VERSION = '1.60'; require XSLoader; @@ -405,6 +405,19 @@ my %other_export_tags = ( stdlib_h_c99 => [ @{$default_export_tags{stdlib_h}}, 'strtold' ], nan_payload => [ qw(getpayload setpayload setpayloadsig issignaling) ], + + signal_h_si_code => [qw( + ILL_ILLOPC ILL_ILLOPN ILL_ILLADR ILL_ILLTRP ILL_PRVOPC ILL_PRVREG + ILL_COPROC ILL_BADSTK + FPE_INTDIV FPE_INTOVF FPE_FLTDIV FPE_FLTOVF FPE_FLTUND + FPE_FLTRES FPE_FLTINV FPE_FLTSUB + SEGV_MAPERR SEGV_ACCERR + BUS_ADRALN BUS_ADRERR BUS_OBJERR + TRAP_BRKPT TRAP_TRACE + CLD_EXITED CLD_KILLED CLD_DUMPED CLD_TRAPPED CLD_STOPPED CLD_CONTINUED + POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP + SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ + )], ); { diff --git a/ext/POSIX/lib/POSIX.pod b/ext/POSIX/lib/POSIX.pod index 90e4f88c02..b6737f0580 100644 --- a/ext/POSIX/lib/POSIX.pod +++ b/ext/POSIX/lib/POSIX.pod @@ -1641,6 +1641,9 @@ semantics, as defined by POSIX/SUSv3: a user process and the uid and pid make sense, otherwise the signal was sent by the kernel +The constants for specific C<code> values can be imported individually +or using the C<:signal_h_si_code> tag. + The following are also defined by POSIX/SUSv3, but unfortunately not very widely implemented: @@ -1648,6 +1651,8 @@ not very widely implemented: uid the uid of the process id generating the signal status exit value or signal for SIGCHLD band band event for SIGPOLL + addr address of faulting instruction or memory reference + for SIGILL, SIGFPE, SIGSEGV or SIGBUS A third argument is also passed to the handler, which contains a copy of the raw binary contents of the C<siginfo> structure: if a system has @@ -2656,6 +2661,12 @@ C<SA_SIGINFO> C<SIGABRT> C<SIGALRM> C<SIGCHLD> C<SIGCONT> C<SIGFPE> C<SIGHUP> C< C<SIGKILL> C<SIGPIPE> C<SIGQUIT> C<SIGSEGV> C<SIGSTOP> C<SIGTERM> C<SIGTSTP> C<SIGTTIN> C<SIGTTOU> C<SIGUSR1> C<SIGUSR2> C<SIG_BLOCK> C<SIG_DFL> C<SIG_ERR> C<SIG_IGN> C<SIG_SETMASK> C<SIG_UNBLOCK> +C<ILL_ILLOPC> C<ILL_ILLOPN> C<ILL_ILLADR> C<ILL_ILLTRP> C<ILL_PRVOPC> C<ILL_PRVREG> C<ILL_COPROC> +C<ILL_BADSTK> C<FPE_INTDIV> C<FPE_INTOVF> C<FPE_FLTDIV> C<FPE_FLTOVF> C<FPE_FLTUND> C<FPE_FLTRES> +C<FPE_FLTINV> C<FPE_FLTSUB> C<SEGV_MAPERR> C<SEGV_ACCERR> C<BUS_ADRALN> C<BUS_ADRERR> +C<BUS_OBJERR> C<TRAP_BRKPT> C<TRAP_TRACE> C<CLD_EXITED> C<CLD_KILLED> C<CLD_DUMPED> C<CLD_TRAPPED> +C<CLD_STOPPED> C<CLD_CONTINUED> C<POLL_IN> C<POLL_OUT> C<POLL_MSG> C<POLL_ERR> C<POLL_PRI> +C<POLL_HUP> C<SI_USER> C<SI_QUEUE> C<SI_TIMER> C<SI_ASYNCIO> C<SI_MESGQ> =back diff --git a/ext/POSIX/t/export.t b/ext/POSIX/t/export.t index 553a8a9ebe..4ef920e12f 100644 --- a/ext/POSIX/t/export.t +++ b/ext/POSIX/t/export.t @@ -141,6 +141,16 @@ my %expect = ( # this stuff was added in 5.23 qw( getpayload issignaling setpayload setpayloadsig + ILL_ILLOPC ILL_ILLOPN ILL_ILLADR ILL_ILLTRP ILL_PRVOPC ILL_PRVREG + ILL_COPROC ILL_BADSTK + FPE_INTDIV FPE_INTOVF FPE_FLTDIV FPE_FLTOVF FPE_FLTUND + FPE_FLTRES FPE_FLTINV FPE_FLTSUB + SEGV_MAPERR SEGV_ACCERR + BUS_ADRALN BUS_ADRERR BUS_OBJERR + TRAP_BRKPT TRAP_TRACE + CLD_EXITED CLD_KILLED CLD_DUMPED CLD_TRAPPED CLD_STOPPED CLD_CONTINUED + POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP + SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ ), ], ); diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 6d44914ec2..4d09b82eeb 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -121,6 +121,13 @@ XXX L<XXX> has been upgraded from version A.xx to B.yy. +=item * + +L<POSIX> has been upgraded from version 1.59 to 1.60. + +It can now export constants for the C<code> value in the hash passed to the +L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag. + =back =head2 Removed Modules and Pragmata |