Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

pfm_cleanup(3ncs) [ultrix man page]

pfm_cleanup(3ncs)														 pfm_cleanup(3ncs)

Name
       pfm_cleanup - establish a clean-up handler

Syntax
       #include <idl/c/base.h>
       #include <idl/c/pfm.h>

       status_$t pfm_$cleanup(cleanup_record)
       pfm_$cleanup_rec *cleanup_record;

Arguments
       cleanup_record	   A  record  of the context when is called.  A program should treat this as an opaque data structure and not try to alter
			   or copy its contents.  It is needed by and to restore the context of the calling process at the clean-up handler  entry
			   point.

Description
       The  routine  establishes a clean-up handler that is executed when a fault occurs.  A clean-up handler is a piece of code executed before a
       program exits when a signal is received by the process.	The clean-up handler begins where is called; the routine registers an entry  point
       with the system where program execution resumes when a fault occurs.  When a fault occurs, execution resumes after the most recent call to

       There  can  be  more  than one clean-up handler in a program.  Multiple clean-up handlers are executed consecutively on a last-in/first-out
       basis, starting with the most recently established handler and ending with the first clean-up  handler.	 The  system  provides	a  default
       clean-up  handler  established at program invocation.  The default clean-up handler is always called last, just before a program exits, and
       releases any system resources still held, before returning control to the process that invoked the program.

Diagnostics
       When called to establish a clean-up handler, returns the status pfm_$cleanup_set to indicate the clean-up handler was  successfully  estab-
       lished.	 When the clean-up handler is entered in response to a fault signal, effectively returns the value of the fault that triggered the
       handler.

       This section lists status codes for errors returned by this routine in

       pfm_$bad_rls_order  Attempted to release a clean-up handler out of order.

       pfm_$cleanup_not_found
			   There is no pending clean-up handler.

       pfm_$cleanup_set    A clean-up handler was established successfully.

       pfm_$cleanup_set_signaledl
			   Attempted to use pfm_$cleanup_set as a signal.

       pfm_$invalid_cleanup_rec
			   Passed an invalid clean-up record to a routine.

       pfm_$no_space	   Cannot allocate storage for a clean-up handler.  Clean-up handler code runs with asynchronous faults  inhibited.   When
			   returns  something  other  than  pfm_$cleanup_set indicating that a fault has occurred, there are four possible ways to
			   leave the clean-up code:

			   o	  The program can call to start the next clean-up handler with a different fault signal.

			   o	  The program can call to start the next clean-up handler with the same fault signal.

			   o	  The program can continue with the code following the clean-up handler.  It should  generally	call  to  reenable
				  asynchronous	faults.   Execution  continues from the end of the clean-up handler code; it does not resume where
				  the fault signal was received.

			   o	  The program can reestablish the handler by calling before proceeding.

Files
See Also
       intro(3ncs), pfm_signal(3ncs)

																 pfm_cleanup(3ncs)

Check Out this Related Man Page

pthread_cleanup_pop(3)					     Library Functions Manual					    pthread_cleanup_pop(3)

NAME
pthread_cleanup_pop - (Macro) Removes the cleanup handler routine from the calling thread's cleanup handler stack and optionally executes it. LIBRARY
DECthreads POSIX 1003.1c Library (libpthread.so) SYNOPSIS
#include <pthread.h> int pthread_cleanup_pop( int execute); STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: IEEE Std 1003.1c-1995, POSIX System Application Program Interface PARAMETERS
Integer that specifies whether the cleanup handler routine specified in the matching call to pthread_cleanup_push(3) is executed. A nonzero value causes the cleanup handler routine to be executed. DESCRIPTION
This routine removes the cleanup handler routine established by the matching call to pthread_cleanup_push(3) from the calling thread's cleanup handler stack, then executes it if the value specified in this routine's execute argument is nonzero. A cleanup handler routine can be used to clean up from a block of code whether exited by normal completion, cancelation, or the raising (or reraising) of an exception. The routine is popped from the calling thread's cleanup handler stack and is executed with the arg argument when any of the following actions occur: The thread calls pthread_cleanup_pop(3) and specifies a nonzero value for the execute argument. The thread calls pthread_exit(3). The thread is canceled. An exception is raised and is caught when DECthreads unwinds the calling thread's stack to the lexical scope of the pthread_cleanup_push(3) and pthread_cleanup_pop(3) pair. This routine and pthread_cleanup_push(3) are implemented as macros and must appear as statements and in pairs within the same lexical scope. You can think of the pthread_cleanup_push(3) macro as expanding to a string whose first character is a left brace ({) and pthread_cleanup_pop(3) as expanding to a string containing the corresponding right brace (}). RETURN VALUES
None RELATED INFORMATION
Functions: pthread_cancel(3), pthread_cleanup_push(3), pthread_create(3), pthread_exit(3) Manuals: Guide to DECthreads and Programmer's Guide delim off pthread_cleanup_pop(3)
Man Page