summaryrefslogtreecommitdiffstats
path: root/man3p/sigwait.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man3p/sigwait.3p')
-rw-r--r--man3p/sigwait.3p106
1 files changed, 106 insertions, 0 deletions
diff --git a/man3p/sigwait.3p b/man3p/sigwait.3p
new file mode 100644
index 000000000..eb8440447
--- /dev/null
+++ b/man3p/sigwait.3p
@@ -0,0 +1,106 @@
+.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
+.TH "SIGWAIT" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\" sigwait
+.SH NAME
+sigwait \- wait for queued signals
+.SH SYNOPSIS
+.LP
+\fB#include <signal.h>
+.br
+.sp
+int sigwait(const sigset_t *restrict\fP \fIset\fP\fB, int *restrict\fP
+\fIsig\fP\fB); \fP
+\fB
+.br
+\fP
+.SH DESCRIPTION
+.LP
+The \fIsigwait\fP() function shall select a pending signal from \fIset\fP,
+atomically clear it from the system's set of
+pending signals, and return that signal number in the location referenced
+by \fIsig\fP. If prior to the call to \fIsigwait\fP()
+there are multiple pending instances of a single signal number, it
+is implementation-defined whether upon successful return there
+are any remaining pending signals for that signal number. \ If the
+implementation supports queued signals and there are
+multiple signals queued for the signal number selected, the first
+such queued signal shall cause a return from \fIsigwait\fP() and
+the remainder shall remain queued. If no signal in \fIset\fP is
+pending at the time of the call, the thread shall be suspended until
+one or more becomes pending. The signals defined by \fIset\fP
+shall have been blocked at the time of the call to \fIsigwait\fP();
+otherwise, the behavior is undefined. The effect of
+\fIsigwait\fP() on the signal actions for the signals in \fIset\fP
+is unspecified.
+.LP
+If more than one thread is using \fIsigwait\fP() to wait for the same
+signal, no more than one of these threads shall return
+from \fIsigwait\fP() with the signal number. Which thread returns
+from \fIsigwait\fP() if more than a single thread is waiting is
+unspecified.
+.LP
+Should any of the multiple pending signals in the range SIGRTMIN to
+SIGRTMAX be selected, it shall be the lowest numbered one. The
+selection order between realtime and non-realtime signals, or between
+multiple pending non-realtime signals, is unspecified.
+.SH RETURN VALUE
+.LP
+Upon successful completion, \fIsigwait\fP() shall store the signal
+number of the received signal at the location referenced by
+\fIsig\fP and return zero. Otherwise, an error number shall be returned
+to indicate the error.
+.SH ERRORS
+.LP
+The \fIsigwait\fP() function may fail if:
+.TP 7
+.B EINVAL
+The \fIset\fP argument contains an invalid or unsupported signal number.
+.sp
+.LP
+\fIThe following sections are informative.\fP
+.SH EXAMPLES
+.LP
+None.
+.SH APPLICATION USAGE
+.LP
+None.
+.SH RATIONALE
+.LP
+To provide a convenient way for a thread to wait for a signal, this
+volume of IEEE\ Std\ 1003.1-2001 provides the
+\fIsigwait\fP() function. For most cases where a thread has to wait
+for a signal, the \fIsigwait\fP() function should be quite
+convenient, efficient, and adequate.
+.LP
+However, requests were made for a lower-level primitive than \fIsigwait\fP()
+and for semaphores that could be used by threads.
+After some consideration, threads were allowed to use semaphores and
+\fIsem_post\fP() was
+defined to be async-signal and async-cancel-safe.
+.LP
+In summary, when it is necessary for code run in response to an asynchronous
+signal to notify a thread, \fIsigwait\fP() should
+be used to handle the signal. Alternatively, if the implementation
+provides semaphores, they also can be used, either following
+\fIsigwait\fP() or from within a signal handling routine previously
+registered with \fIsigaction\fP().
+.SH FUTURE DIRECTIONS
+.LP
+None.
+.SH SEE ALSO
+.LP
+\fISignal Concepts\fP , \fIRealtime
+Signals\fP , \fIpause\fP() , \fIpthread_sigmask\fP() , \fIsigaction\fP()
+, \fIsigpending\fP() , \fIsigsuspend\fP() , \fIsigwaitinfo\fP() ,
+the Base Definitions volume of
+IEEE\ Std\ 1003.1-2001, \fI<signal.h>\fP, \fI<time.h>\fP
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 6, Copyright (C) 2001-2003 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 .