Add POSIX psiginfo(3) call

PR:	286133

(cherry picked from commit 3b2f0bfc35)
This commit is contained in:
Ricardo Branco 2025-04-16 09:52:13 +02:00 committed by Konstantin Belousov
parent 3f68c3e9c1
commit 0ad5308987
5 changed files with 31 additions and 2 deletions

View file

@ -117,6 +117,7 @@ int siginterrupt(int, int);
#endif
#if __POSIX_VISIBLE >= 200809
void psiginfo(const siginfo_t *, const char *);
void psignal(int, const char *);
#endif

View file

@ -487,7 +487,8 @@ MLINKS+=posix_spawn.3 posix_spawnp.3 \
posix_spawnattr_getsigdefault.3 posix_spawnattr_setsigdefault.3 \
posix_spawnattr_getsigmask.3 posix_spawnattr_setsigmask.3 \
posix_spawnattr_init.3 posix_spawnattr_destroy.3
MLINKS+=psignal.3 strsignal.3 \
MLINKS+=psignal.3 psiginfo.3 \
psignal.3 strsignal.3 \
psignal.3 sys_siglist.3 \
psignal.3 sys_signame.3
MLINKS+=pwcache.3 group_from_gid.3 \

View file

@ -461,6 +461,7 @@ FBSD_1.8 {
aio_read2;
aio_write2;
execvpe;
psiginfo;
rtld_get_var;
rtld_set_var;
};

View file

@ -27,11 +27,12 @@
.\"
.\" @(#)psignal.3 8.2 (Berkeley) 2/27/95
.\"
.Dd May 30, 2016
.Dd Apr 16, 2025
.Dt PSIGNAL 3
.Os
.Sh NAME
.Nm psignal ,
.Nm psiginfo ,
.Nm strsignal ,
.Nm sys_siglist ,
.Nm sys_signame
@ -42,6 +43,8 @@
.In signal.h
.Ft void
.Fn psignal "int sig" "const char *s"
.Ft void
.Fn psiginfo "const siginfo_t *si" "const char *s"
.Vt extern const char * const sys_siglist[] ;
.Vt extern const char * const sys_signame[] ;
.In string.h
@ -81,6 +84,16 @@ the string
.Dq "Unknown signal"
is produced.
.Pp
The
.Fn psiginfo
function is similar to
.Fn psignal ,
except that the signal number information is taken from the
.Fa si
argument which is a
.Vt siginfo_t
structure.
.Pp
The message strings can be accessed directly
through the external array
.Va sys_siglist ,
@ -106,3 +119,10 @@ The
.Fn psignal
function appeared in
.Bx 4.2 .
The
.Fn psiginfo
function appeared in
.Fx 15.0 ,
.Nx 6.0 ,
and
.Dx 4.1 .

View file

@ -57,3 +57,9 @@ psignal(int sig, const char *s)
(void)_write(STDERR_FILENO, c, strlen(c));
(void)_write(STDERR_FILENO, "\n", 1);
}
void
psiginfo(const siginfo_t *si, const char *s)
{
psignal(si->si_signo, s);
}