4.3BSD-Reno/share/man/cat3/longjmperr.0
SETJMP(3) 1990 SETJMP(3)
NNAAMMEE
sigsetjmp, siglongjmp, setjmp, longjmp, _setjmp, _longjmp
longjmperror - non-local jumps
SSYYNNOOPPSSIISS
##iinncclluuddee <<sseettjjmmpp..hh>>
ssiiggsseettjjmmpp((ssiiggjjmmpp__bbuuff eennvv,, iinntt ssaavveemmaasskk));;
vvooiidd
ssiigglloonnggjjmmpp((ssiiggjjmmpp__bbuuff eennvv,, iinntt vvaall));;
sseettjjmmpp((jjmmpp__bbuuff eennvv));;
vvooiidd
lloonnggjjmmpp((jjmmpp__bbuuff eennvv,, iinntt vvaall));;
__sseettjjmmpp((jjmmpp__bbuuff eennvv));;
vvooiidd
__lloonnggjjmmpp((jjmmpp__bbuuff eennvv,, iinntt vvaall));;
vvooiidd
lloonnggjjmmppeerrrroorr(());;
DDEESSCCRRIIPPTTIIOONN
The _s_i_g_s_e_t_j_m_p, _s_e_t_j_m_p, and __s_e_t_j_m_p functions save their cal-
ling environment in _e_n_v. Each of these functions returns 0.
The corresponding _l_o_n_g_j_m_p functions restore the environment
saved by their respective versions of the _s_e_t_j_m_p function.
They then return so that program execution continues as if
the _s_e_t_j_m_p call had returned _v_a_l, instead of 0.
Pairs of calls may be intermixed, i.e. both _s_i_g_s_e_t_j_m_p and
_s_i_g_l_o_n_g_j_m_p and _s_e_t_j_m_p and _l_o_n_g_j_m_p combinations may be used
in the same program, however, individual calls may not, i.e.
the _e_n_v argument to _s_i_g_s_e_t_j_m_p may not be passed to _l_o_n_g_j_m_p.
The _l_o_n_g_j_m_p routines may not be called after the routine
which called the _s_e_t_j_m_p routines returns.
All accessible data have values as of the time the _l_o_n_g_j_m_p
routine was called.
_S_e_t_j_m_p/_l_o_n_g_j_m_p pairs save and restore the signal mask (see
_s_i_g_m_a_s_k(2)), while __s_e_t_j_m_p/__l_o_n_g_j_m_p pairs save and restore
only the register set and the stack.
_S_i_g_s_e_t_j_m_p/_s_i_g_l_o_n_g_j_m_p pairs save and restore the signal mask
if the argument _s_a_v_e_m_a_s_k is non-zero, otherwise only the
register set and the stack are saved.
Printed 7/27/90 May 1
SETJMP(3) 1990 SETJMP(3)
EERRRROORRSS
If the contents of the _e_n_v are corrupted, or correspond to
an environment that has already returned, the _l_o_n_g_j_m_p rou-
tine calls the routine _l_o_n_g_j_m_p_e_r_r_o_r(3). If _l_o_n_g_j_m_p_e_r_r_o_r
returns the program is aborted (see abort(2)). The default
version of _l_o_n_g_j_m_p_e_r_r_o_r prints the message ``longjmp botch''
to standard error and returns. User programs wishing to
exit more gracefully should write their own versions of
_l_o_n_g_j_m_p_e_r_r_o_r.
SSEEEE AALLSSOO
sigvec(2), sigstack(2), signal(3)
Printed 7/27/90 May 2