Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sigsetjmp(3C) — Dell System V Release 4 Issue 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

getcontext(2)

priocntl(2)

sigaction(2)

sigaltstack(2)

sigprocmask(2)

setjmp(3C)



sigsetjmp(3C)                    UNIX System V                    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 since
      returned, the behavior is undefined.



10/89                                                                    Page 1





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