*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> setjmp (3)              
Title
Content
Arch
Section
 

setjmp(3)

Contents


NAME    [Toc]    [Back]

       setjmp, _setjmp, longjmp, _longjmp - Save and restores the
       current execution context

SYNOPSIS    [Toc]    [Back]

       #include <setjmp.h>

       int setjmp(
               jmp_buf environment ); void longjmp(
               jmp_buf environment,
               int value ); int _setjmp(
               jmp_buf environment ); void _longjmp(
               jmp_buf environment,
               int value );

LIBRARY    [Toc]    [Back]

       Standard C Library (libc)

       System V Library (libsys5.a, libsys5.so)

STANDARDS    [Toc]    [Back]

       Interfaces documented on this reference  page  conform  to
       industry standards as follows:

       setjmp(), longjmp(): XSH4.2

       _setjmp(), _longjmp(): XSH4.2

       Refer to the standards(5) reference page for more information
 about industry standards and associated tags.

PARAMETERS    [Toc]    [Back]

       Specifies an address for a jmp_buf  structure.   Specifies
       the value you want written to the execution context as the
       return value of the setjmp() or _setjmp() function. If you
       specify  0 (zero) in this parameter, the execution context
       contains a value of 1 as the setjmp() or _setjmp()  return
       value.   See  the  RETURN VALUES section for more information.

DESCRIPTION    [Toc]    [Back]

       The setjmp() and longjmp() functions are useful when  handling
 errors and interrupts encountered in low-level functions
 of a program.

       The setjmp() function saves the current stack context  and
       signal  mask  in  the  buffer specified by the environment
       parameter. You then use the buffer in a later call to  the
       longjmp()  function.  The  longjmp() function restores the
       stack context and signal  mask  that  were  saved  by  the
       setjmp() function.

       After  the longjmp() function runs, program execution continues
 as though the corresponding call  to  the  setjmp()
       function  had just returned the value of the value parameter.
  The function that called the setjmp() function  must
       not  have  returned before the completion of the longjmp()
       function.

       The _setjmp() and _longjmp() functions operate identically
       to  the  setjmp()  and  longjmp() functions, respectively,
       except that _setjmp() and _longjmp() manipulate  only  the
       stack  context.  These functions do not restore the signal
       mask.

       All accessible objects have values at the  time  longjmp()
       is  called,  except  for some objects of automatic storage
       duration. Objects of automatic storage duration will  have
       indeterminant  values  if  they  meet all of the following
       conditions: They are local to the function containing  the
       corresponding  setjmp()  invocation.   They  do  not  have
       volatile-qualified type.  They  are  changed  between  the
       setjmp() and the longjmp() call.

       Because  it  bypasses  the  usual function call and return
       mechanisms, the longjmp() function executes  correctly  in
       contexts  of interrupts, signals, and any of their associated
 functions. However,  if  the  longjmp()  function  is
       invoked  from  a  nested  signal  handler (that is, from a
       function invoked as a result of a signal raised during the
       handling of another signal), the behavior is undefined.

NOTES    [Toc]    [Back]

       [Tru64  UNIX]  For compatibility, the System V versions of
       the setjmp() and longjmp() functions, which are equivalent
       to  _setjmp()  and _longjmp(), respectively, are also supported.
 To use the  System  V  versions  of  setjmp()  and
       longjmp(),  you  must link with the libsys5 library before
       you link with libc.

RETURN VALUES    [Toc]    [Back]

       After the longjmp() function is finished  executing,  program
  execution continues as though the corresponding call
       of the setjmp() function just returned.  In  other  words,
       the  execution context saved by the corresponding setjmp()
       function is in place and execution continues at the statement
  immediately following the call to the setjmp() function.


       Part of that execution context is the  return  value  from
       the setjmp() function. When the setjmp() function actually
       returns (before the call to the longjmp() function),  that
       return  value  is  0  (zero).  When the longjmp() function
       returns, the execution context contains a  non-zero  value
       as the return value from the setjmp() function.

       The  value  you  specify  in  the  value  parameter to the
       longjmp() function is written to the execution context  as
       the  return  value  for  the setjmp() function. You cannot
       cause the execution context to contain a  0  (zero)  value
       for  the  setjmp()  return  value. If you specify 0 in the
       value parameter, the execution context contains a 1 as the
       setjmp() return value.

CAUTION    [Toc]    [Back]

       The results of the longjmp() function are undefined in the
       following situations: The  longjmp()  function  is  called
       with  an environment parameter that was not previously set
       by the setjmp() function.  The function that made the corresponding
  call  to  the  setjmp()  function  has already
       returned.

       If the longjmp() function detects one of these conditions,
       it  calls  the  longjmperror() function. If longjmperror()
       returns, the program is aborted. The  default  version  of
       longjmperror() displays an error message to standard error
       and returns.  If you want your program to exit more gracefully,
   you   can   write   your   own   version  of  the
       longjmperror() program.

SEE ALSO    [Toc]    [Back]

      
      
       Routines: siglongjmp(3), sigsetjmp(3)

       Standards: standards(5)



                                                        setjmp(3)
[ Back ]
 Similar pages
Name OS Title
getcontext Tru64 Initiates and restores user level context switching
setcontext Tru64 Initiates and restores user level context switching
setjmp Linux save stack context for non-local goto
glciscontext IRIX test whether a context ID is the current GLC context
sched_rr_get_interval Tru64 Returns the current quantum for process execution under the SCHED_RR policy (P1003.1b)
getcontext IRIX get and set current user context
glXGetCurrentContext Tru64 return the current context
getcontext HP-UX get and set current user context
glcgetcurrentcontext IRIX return current context ID
glXGetCurrentDisplay Tru64 get display for current context
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service