Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sigsetjmp(3C) — svr4 — mips UMIPS RISC/os 5.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

getcontext(2)

priocntl(2)

sigaction(2)

sigaltstack(2)

sigprocmask(2)

setjmp(3C)

SIGSETJMP(3C-SVR4)



SIGSETJMP(3C-SVR4)  RISC/os Reference Manual   SIGSETJMP(3C-SVR4)



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 pro-
     gram.

     sigsetjmp saves the calling process's registers and stack
     environment [see sigaltstack(2)] in env (whose type,
     sigjmp_buf, is defined in the <setjmp.h> header file) for
     later use by siglongjmp. If savemask is non-zero, the cal-
     ling process's signal mask [see sigprocmask(2)] and schedul-
     ing 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).




                        Printed 11/19/92                   Page 1





SIGSETJMP(3C-SVR4)  RISC/os Reference Manual   SIGSETJMP(3C-SVR4)



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, absolute chaos is
     guaranteed.


















































 Page 2                 Printed 11/19/92



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