Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sigsetjmp(3c) — Atari System V 1.1-06

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

getcontext(2)

priocntl(2)

sigaction(2)

sigaltstack(2)

sigprocmask(2)

setjmp(3C)





   sigsetjmp(3C)                                                 sigsetjmp(3C)


   NAME
         sigsetjmp, siglongjmp - a non-local goto with signal state

   SYNOPSIS
         #include <setjmp.h>

         int sigsetjmp (sigjmpbuf env, int savemask);

         void siglongjmp (sigjmpbuf env, int val);

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

         sigsetjmp saves the calling process's registers and stack environment
         [see sigaltstack(2)] in env (whose type, sigjmpbuf, is defined in
         the <setjmp.h> header file) for later use by siglongjmp. If savemask
         is non-zero, the calling process's signal mask [see sigprocmask(2)]
         and scheduling parameters [see priocntl(2)] are also saved. sigsetjmp
         returns the value 0.

         siglongjmp restores the environment saved by the last call of
         sigsetjmp with the corresponding env argument.  After siglongjmp is
         completed, program execution continues as if the corresponding call
         of sigsetjmp had just returned the value val.  siglongjmp cannot
         cause sigsetjmp to return the value zero.  If siglongjmp is invoked
         with a second argument of zero, sigsetjmp will return 1.  At the time
         of the second return from sigsetjmp, all external and static
         variables have values as of the time siglongjmp is called. The values
         of register and automatic variables are undefined.  Register or
         automatic variables whose value must be relied upon must be declared
         as volatile.

         If a signal-catching function interrupts sleep and calls siglongjmp
         to restore an environment saved prior to the sleep call, the action
         associated with SIGALRM and time it is scheduled to be generated are
         unspecified. It is also unspecified whether the SIGALRM signal is
         blocked, unless the process's signal mask is restored as part of the
         environment.

         The function siglongjmp restores the saved signal mask if and only if
         the env argument was initialized by a call to the sigsetjmp function
         with a non-zero savemask argument.

   SEE ALSO
         getcontext(2), priocntl(2), sigaction(2), sigaltstack(2),
         sigprocmask(2), setjmp(3C).

   NOTES
         If siglongjmp is called even though env was never primed by a call to
         sigsetjmp, or when the last such call was in a function that has


   8/91                                                                 Page 1









   sigsetjmp(3C)                                                 sigsetjmp(3C)


         since returned, absolute chaos is guaranteed.




















































   Page 2                                                                 8/91





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026