.TH SETJMP 3
.SH NAME
setjmp, longjmp, notejmp \- non-local goto
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.ta \w'\fLvoid 'u
.B
int	setjmp(jmp_buf env)
.PP
.B
void	longjmp(jmp_buf env, int val)
.PP
.B
void	notejmp(void *uregs, jmp_buf env, int val)
.SH DESCRIPTION
These routines are useful for dealing with errors
and interrupts encountered in
a low-level subroutine of a program.
.PP
.I Setjmp
saves its stack environment in
.I env
for later use by
.IR longjmp .
It returns value 0.
.PP
.I Longjmp
restores the environment saved by the last call of
.IR setjmp .
It then causes execution to
continue as if the call of
.I setjmp
had just returned with value
.IR val .
The invoker of
.I setjmp
must not itself have returned in the interim.
All accessible data have values as of the time
.I longjmp
was called.
.PP
.I Notejmp
is the same as
.I longjmp
except that it is to be called from within a note handler (see
.IR notify (3)).
The
.I uregs
argument should be the first argument passed to the note handler.
.PP
.I Setjmp
and
.I longjmp
can also be used to switch stacks.
.SH SOURCE
.B \*9/src/lib9/jmp.c
.SH SEE ALSO
.IR notify (3)
.SH BUGS
.PP
.I Notejmp
cannot recover from an address trap or bus error (page fault) on the 680x0
architectures.
.PP
To avoid name conflicts with the underlying system,
.IR setjmp ,
.IR longjmp ,
.IR notejmp ,
and
.I jmp_buf
are preprocessor macros defined as
.IR p9setjmp ,
.IR p9longjmp ,
.IR p9notejmp ,
and
.IR p9jmp_buf ;
see
.IR intro (3).
.PP
.I P9setjmp
is implemented as a preprocessor macro that calls
.I sigsetjmp
(see
Unix's \fIsetjmp\fR(3)).
