pfm_cleanup(3ncs)pfm_cleanup(3ncs)Namepfm_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
established. 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:
· The program can call to start the next
clean-up handler with a different fault sig‐
nal.
· The program can call to start the next
clean-up handler with the same fault signal.
· The program can continue with the code fol‐
lowing the clean-up handler. It should gen‐
erally 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.
· The program can reestablish the handler by
calling before proceeding.
FilesSee Alsointro(3ncs), pfm_signal(3ncs)pfm_cleanup(3ncs)