PTHREAD_CLEANUP_PUSH(3C)                        Standard C Library Functions
NAME
       pthread_cleanup_push - push a thread cancellation cleanup handler
SYNOPSIS
       cc -mt [ 
flag... ] 
file... -lpthread [ 
library... ]
       #include <pthread.h>       
void pthread_cleanup_push(
void (*handler) (void *), 
void *arg);
DESCRIPTION
       The 
pthread_cleanup_push() function pushes the specified cancellation
       cleanup handler routine, 
handler, onto the cancellation cleanup stack
       of the calling thread.
       When a thread exits or is canceled and its cancellation cleanup
       stack is not empty, the cleanup handlers are invoked with the
       argument  
arg in  last in, first out (LIFO) order from the
       cancellation cleanup stack.
       An exiting or cancelled thread runs with all signals blocked. All
       thread termination functions, including cancellation cleanup
       handlers, are called with all signals blocked.
       The 
pthread_cleanup_push() and 
pthread_cleanup_pop(3C) functions can
       be implemented as macros. The application must ensure that they
       appear as statements, and in pairs within the same lexical scope
       (that is, the 
pthread_cleanup_push() macro can be thought to expand
       to a token list whose first token is '{' with 
pthread_cleanup_pop()       expanding to a token list whose last token is the corresponding '}').
       The effect of the use of 
return, 
break, 
continue, and 
goto to
       prematurely leave a code block described by a pair of       
pthread_cleanup_push() and 
pthread_cleanup_pop() function calls is
       undefined.
       Using 
longjmp() or 
siglongjmp() to jump into or out of a push/pop
       pair can cause either the matching push or the matching pop statement
       not getting executed.
RETURN VALUES
       The 
pthread_cleanup_push() function returns no value.
ERRORS
       No errors are defined.
       The  
pthread_cleanup_push() function will not return an error code of       
EINTR.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-------------------+
       |  ATTRIBUTE TYPE    |  ATTRIBUTE VALUE  |
       +--------------------+-------------------+
       |Interface Stability | Committed         |
       +--------------------+-------------------+
       |MT-Level            | MT-Safe           |
       +--------------------+-------------------+
       |Standard            | See 
standards(7). |
       +--------------------+-------------------+
SEE ALSO
       longjmp(3C), 
pthread_cancel(3C), 
pthread_cleanup_pop(3C),       
pthread_exit(3C), 
pthread_join(3C), 
pthread_setcancelstate(3C),       
pthread_setcanceltype(3C), 
pthread_testcancel(3C), 
attributes(7),       
cancellation(7), 
condition(7), 
standards(7)NOTES
       See 
cancellation(7) for a discussion of cancellation concepts.
                              November 2, 2007      PTHREAD_CLEANUP_PUSH(3C)