Annotation of 43BSDReno/lib/libc/gen/setjmp.3, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1990 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted
                      5: .\" provided that: (1) source distributions retain this entire copyright
                      6: .\" notice and comment, and (2) distributions including binaries display
                      7: .\" the following acknowledgement:  ``This product includes software
                      8: .\" developed by the University of California, Berkeley and its contributors''
                      9: .\" in the documentation or other materials provided with the distribution
                     10: .\" and in all advertising materials mentioning features or use of this
                     11: .\" software. Neither the name of the University nor the names of its
                     12: .\" contributors may be used to endorse or promote products derived
                     13: .\" from this software without specific prior written permission.
                     14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     15: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     16: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     17: .\"
                     18: .\"    @(#)setjmp.3    6.4 (Berkeley) 5/27/90
                     19: .\"
                     20: .TH SETJMP 3 "May 27, 1990"
                     21: .UC 4
                     22: .SH NAME
                     23: sigsetjmp, siglongjmp, setjmp, longjmp, _setjmp, _longjmp longjmperror \-
                     24: non-local jumps
                     25: .SH SYNOPSIS
                     26: .nf
                     27: .ft B
                     28: #include <setjmp.h>
                     29: 
                     30: sigsetjmp(sigjmp_buf env, int savemask);
                     31: 
                     32: void
                     33: siglongjmp(sigjmp_buf env, int val);
                     34: 
                     35: setjmp(jmp_buf env);
                     36: 
                     37: void
                     38: longjmp(jmp_buf env, int val);
                     39: 
                     40: _setjmp(jmp_buf env);
                     41: 
                     42: void
                     43: _longjmp(jmp_buf env, int val);
                     44: 
                     45: void
                     46: longjmperror();
                     47: .ft R
                     48: .fi
                     49: .SH DESCRIPTION
                     50: The
                     51: .IR sigsetjmp ,
                     52: .IR setjmp ,
                     53: and
                     54: .IR _setjmp
                     55: functions save their calling environment in
                     56: .IR env . 
                     57: Each of these functions returns 0.
                     58: .PP
                     59: The corresponding 
                     60: .I longjmp
                     61: functions restore the environment saved by their respective versions
                     62: of the
                     63: .I setjmp
                     64: function.
                     65: They then return so that program execution continues as if the
                     66: .I setjmp
                     67: call had returned 
                     68: .IR val ,
                     69: instead of 0.
                     70: .PP
                     71: Pairs of calls may be intermixed, i.e. both 
                     72: .I sigsetjmp
                     73: and
                     74: .I siglongjmp
                     75: and
                     76: .I setjmp
                     77: and
                     78: .I longjmp
                     79: combinations may be used in the same program, however, individual
                     80: calls may not, i.e. the 
                     81: .I env
                     82: argument to 
                     83: .I sigsetjmp
                     84: may not be passed to
                     85: .IR longjmp .
                     86: .PP
                     87: The
                     88: .I longjmp
                     89: routines may not be called after the routine which called the
                     90: .I setjmp
                     91: routines returns.
                     92: .PP
                     93: All accessible data have values as of the time the
                     94: .I longjmp
                     95: routine was called.
                     96: .PP
                     97: .I Setjmp/longjmp
                     98: pairs save and restore the signal mask (see 
                     99: .IR sigmask (2)),
                    100: while
                    101: .I _setjmp/_longjmp
                    102: pairs save and restore only the register set and the stack.
                    103: .PP
                    104: .I Sigsetjmp/siglongjmp
                    105: pairs save and restore the signal mask if the argument
                    106: .I savemask
                    107: is non-zero, otherwise only the register set and the stack are saved.
                    108: .SH ERRORS
                    109: If the contents of the
                    110: .I env
                    111: are corrupted, or correspond to an environment that has already returned,
                    112: the 
                    113: .I longjmp
                    114: routine calls the routine
                    115: .IR longjmperror (3).
                    116: If
                    117: .I longjmperror
                    118: returns the program is aborted (see abort(2)).
                    119: The default version of 
                    120: .I longjmperror
                    121: prints the message ``longjmp botch'' to standard error and returns.
                    122: User programs wishing to exit more gracefully should write their own
                    123: versions of 
                    124: .IR longjmperror .
                    125: .SH "SEE ALSO"
                    126: sigvec(2), sigstack(2), signal(3)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.