diff options
Diffstat (limited to 'upstream/archlinux/man3p/sigsuspend.3p')
-rw-r--r-- | upstream/archlinux/man3p/sigsuspend.3p | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/upstream/archlinux/man3p/sigsuspend.3p b/upstream/archlinux/man3p/sigsuspend.3p new file mode 100644 index 00000000..5fb28867 --- /dev/null +++ b/upstream/archlinux/man3p/sigsuspend.3p @@ -0,0 +1,130 @@ +'\" et +.TH SIGSUSPEND "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" +.SH PROLOG +This manual page is part of the POSIX Programmer's Manual. +The Linux implementation of this interface may differ (consult +the corresponding Linux manual page for details of Linux behavior), +or the interface may not be implemented on Linux. +.\" +.SH NAME +sigsuspend +\(em wait for a signal +.SH SYNOPSIS +.LP +.nf +#include <signal.h> +.P +int sigsuspend(const sigset_t *\fIsigmask\fP); +.fi +.SH DESCRIPTION +The +\fIsigsuspend\fR() +function shall replace the current signal mask of the calling thread +with the set of signals pointed to by +.IR sigmask +and then suspend the thread until delivery of a signal whose action is +either to execute a signal-catching function or to terminate the +process. This shall not cause any other signals that may have been +pending on the process to become pending on the thread. +.P +If the action is to terminate the process then +\fIsigsuspend\fR() +shall never return. If the action is to execute a signal-catching +function, then +\fIsigsuspend\fR() +shall return after the signal-catching function returns, with the +signal mask restored to the set that existed prior to the +\fIsigsuspend\fR() +call. +.P +It is not possible to block signals that cannot be ignored. This is +enforced by the system without causing an error to be indicated. +.SH "RETURN VALUE" +Since +\fIsigsuspend\fR() +suspends thread execution indefinitely, there is no successful +completion return value. If a return occurs, \-1 shall be returned and +.IR errno +set to indicate the error. +.SH ERRORS +The +\fIsigsuspend\fR() +function shall fail if: +.TP +.BR EINTR +A signal is caught by the calling process and control is returned from +the signal-catching function. +.LP +.IR "The following sections are informative." +.SH EXAMPLES +None. +.SH "APPLICATION USAGE" +Normally, at the beginning of a critical code section, a specified set +of signals is blocked using the +\fIsigprocmask\fR() +function. When the thread has completed the critical section and +needs to wait for the previously blocked signal(s), it pauses by +calling +\fIsigsuspend\fR() +with the mask that was returned by the +\fIsigprocmask\fR() +call. +.SH RATIONALE +Code which wants to avoid the ambiguity of the signal mask for thread +cancellation handlers can install an additional cancellation handler +which resets the signal mask to the expected value. +.sp +.RS 4 +.nf + +void cleanup(void *arg) +{ + sigset_t *ss = (sigset_t *) arg; + pthread_sigmask(SIG_SETMASK, ss, NULL); +} +.P +int call_sigsuspend(const sigset_t *mask) +{ + sigset_t oldmask; + int result; + pthread_sigmask(SIG_SETMASK, NULL, &oldmask); + pthread_cleanup_push(cleanup, &oldmask); + result = sigsuspend(sigmask); + pthread_cleanup_pop(0); + return result; +} +.fi +.P +.RE +.SH "FUTURE DIRECTIONS" +None. +.SH "SEE ALSO" +.IR "Section 2.4" ", " "Signal Concepts", +.IR "\fIpause\fR\^(\|)", +.IR "\fIsigaction\fR\^(\|)", +.IR "\fIsigaddset\fR\^(\|)", +.IR "\fIsigdelset\fR\^(\|)", +.IR "\fIsigemptyset\fR\^(\|)", +.IR "\fIsigfillset\fR\^(\|)" +.P +The Base Definitions volume of POSIX.1\(hy2017, +.IR "\fB<signal.h>\fP" +.\" +.SH COPYRIGHT +Portions of this text are reprinted and reproduced in electronic form +from IEEE Std 1003.1-2017, Standard for Information Technology +-- Portable Operating System Interface (POSIX), The Open Group Base +Specifications Issue 7, 2018 Edition, +Copyright (C) 2018 by the Institute of +Electrical and Electronics Engineers, Inc and The Open Group. +In the event of any discrepancy between this version and the original IEEE and +The Open Group Standard, the original IEEE and The Open Group Standard +is the referee document. The original Standard can be obtained online at +http://www.opengroup.org/unix/online.html . +.PP +Any typographical or formatting errors that appear +in this page are most likely +to have been introduced during the conversion of the source files to +man page format. To report such errors, see +https://www.kernel.org/doc/man-pages/reporting_bugs.html . |