diff options
Diffstat (limited to 'upstream/archlinux/man3p/pthread_setcancelstate.3p')
-rw-r--r-- | upstream/archlinux/man3p/pthread_setcancelstate.3p | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/upstream/archlinux/man3p/pthread_setcancelstate.3p b/upstream/archlinux/man3p/pthread_setcancelstate.3p new file mode 100644 index 00000000..aa969946 --- /dev/null +++ b/upstream/archlinux/man3p/pthread_setcancelstate.3p @@ -0,0 +1,174 @@ +'\" et +.TH PTHREAD_SETCANCELSTATE "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 +pthread_setcancelstate, +pthread_setcanceltype, +pthread_testcancel +\(em set cancelability state +.SH SYNOPSIS +.LP +.nf +#include <pthread.h> +.P +int pthread_setcancelstate(int \fIstate\fP, int *\fIoldstate\fP); +int pthread_setcanceltype(int \fItype\fP, int *\fIoldtype\fP); +void pthread_testcancel(void); +.fi +.SH DESCRIPTION +The +\fIpthread_setcancelstate\fR() +function shall atomically both set the calling thread's cancelability +state to the indicated +.IR state +and return the previous cancelability state at the location referenced +by +.IR oldstate . +Legal values for +.IR state +are PTHREAD_CANCEL_ENABLE and PTHREAD_CANCEL_DISABLE. +.P +The +\fIpthread_setcanceltype\fR() +function shall atomically both set the calling thread's cancelability +type to the indicated +.IR type +and return the previous cancelability type at the location referenced +by +.IR oldtype . +Legal values for +.IR type +are PTHREAD_CANCEL_DEFERRED and PTHREAD_CANCEL_ASYNCHRONOUS. +.P +The cancelability state and type of any newly created threads, +including the thread in which +\fImain\fR() +was first invoked, shall be PTHREAD_CANCEL_ENABLE and +PTHREAD_CANCEL_DEFERRED respectively. +.P +The +\fIpthread_testcancel\fR() +function shall create a cancellation point in the calling thread. The +\fIpthread_testcancel\fR() +function shall have no effect if cancelability is disabled. +.SH "RETURN VALUE" +If successful, the +\fIpthread_setcancelstate\fR() +and +\fIpthread_setcanceltype\fR() +functions shall return zero; otherwise, an error number shall be +returned to indicate the error. +.SH ERRORS +The +\fIpthread_setcancelstate\fR() +function may fail if: +.TP +.BR EINVAL +The specified state is not PTHREAD_CANCEL_ENABLE or +PTHREAD_CANCEL_DISABLE. +.P +The +\fIpthread_setcanceltype\fR() +function may fail if: +.TP +.BR EINVAL +The specified type is not PTHREAD_CANCEL_DEFERRED or +PTHREAD_CANCEL_ASYNCHRONOUS. +.P +These functions shall not return an error code of +.BR [EINTR] . +.LP +.IR "The following sections are informative." +.SH EXAMPLES +None. +.SH "APPLICATION USAGE" +In order to write a signal handler for an asynchronous signal which +can run safely in a cancellable thread, +\fIpthread_setcancelstate\fR() +must be used to disable cancellation for the duration of any calls +that the signal handler makes which are cancellation points. However, +the standard does not permit strictly conforming applications to call +\fIpthread_setcancelstate\fR() +from a signal handler since it is not currently required to be +async-signal-safe. On implementations where +\fIpthread_setcancelstate\fR() +is not async-signal-safe, alternatives are to ensure either that the +corresponding signals are blocked during execution of functions that +are not async-cancel-safe or that cancellation is disabled during +times when those signals could be delivered. Implementations are +strongly encouraged to make +\fIpthread_setcancelstate\fR() +async-signal-safe. +.SH RATIONALE +The +\fIpthread_setcancelstate\fR() +and +\fIpthread_setcanceltype\fR() +functions control the points at which a thread may be +asynchronously canceled. For cancellation control to be usable in +modular fashion, some rules need to be followed. +.P +An object can be considered to be a generalization of a procedure. It +is a set of procedures and global variables written as a unit and +called by clients not known by the object. Objects may depend on other +objects. +.P +First, cancelability should only be disabled on entry to an object, +never explicitly enabled. On exit from an object, the +cancelability state should always be restored to its value on entry to +the object. +.P +This follows from a modularity argument: if the client of an object +(or the client of an object that uses that object) has disabled +cancelability, it is because the client does not want to be concerned +about cleaning up if the thread is canceled while executing some +sequence of actions. If an object is called in such a state and it +enables cancelability and a cancellation request is pending for that +thread, then the thread is canceled, contrary to the wish of the client +that disabled. +.P +Second, the +cancelability type may be explicitly set to either +.IR deferred +or +.IR asynchronous +upon entry to an object. But as with the cancelability state, on exit +from an object the cancelability type should always be restored to its +value on entry to the object. +.P +Finally, only functions that are cancel-safe +may be called from a thread that is asynchronously cancelable. +.SH "FUTURE DIRECTIONS" +The +\fIpthread_setcancelstate\fR() +function may be added to the table of async-signal-safe functions in +.IR "Section 2.4.3" ", " "Signal Actions". +.SH "SEE ALSO" +.IR "\fIpthread_cancel\fR\^(\|)" +.P +The Base Definitions volume of POSIX.1\(hy2017, +.IR "\fB<pthread.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 . |