Unix/Linux Go Back    

Plan 9 - man page for setjmp (plan9 section 2)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)

SETJMP(2)										SETJMP(2)

       setjmp, longjmp, notejmp - non-local goto

       #include <u.h>
       #include <libc.h>

       int  setjmp(jmp_buf env)

       void longjmp(jmp_buf env, int val)

       void notejmp(void *uregs, jump_buf env, int val)

       These  routines	are  useful  for dealing with errors and interrupts encountered in a low-
       level subroutine of a program.

       Setjmp saves its stack environment in env for later use by longjmp.  It returns value 0.

       Longjmp restores the environment saved by the last call of setjmp.  It then causes  execu-
       tion  to  continue as if the call of setjmp had just returned with value val.  The invoker
       of setjmp must not itself have returned in the interim.	All accessible data  have  values
       as of the time longjmp was called.

       Notejmp	is  the same as longjmp except that it is to be called from within a note handler
       (see notify(2)).  The uregs argument should be the first argument passed to the note  han-

       Setjmp and longjmp can also be used to switch stacks.  Defined in </$objtype/u.h> are sev-
       eral macros that can be used to build jmp_bufs by hand.	The following code establishes	a
       jmp_buf	that  may be called by longjmp to begin execution in a function f with 1024 bytes
       of stack:

	      #include <u.h>
	      #include <libc.h>

	      jmp_buf label;
	      #define NSTACK 1024
	      char stack[NSTACK];

		   label[JMPBUFPC] = ((ulong)f+JMPBUFDPC);
		   /* -2 leaves room for old pc and new pc in frame */
		   label[JMPBUFSP =



       Notejmp cannot recover from an address trap or bus error (page fault) on the 680x0  archi-

Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums

All times are GMT -4. The time now is 07:22 PM.