Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sigvec(2)

setjmp(3c)

setjmp(3f)



SIGSTACK(2)             COMMAND REFERENCE             SIGSTACK(2)



NAME
     sigstack - set and/or get signal stack context

SYNOPSIS
     #include <sys/signal.h>

     sigstack(ss, oss);
     struct sigstack *ss, *oss;

DESCRIPTION
     Sigstack allows users to define an alternate stack on which
     signals are to be processed.  If ss is non-zero, it
     specifies a signal stack on which to deliver signals and
     tells the system if the process is currently executing on
     that stack.  The signal stack structure is defined in
     <sys/signal.h> as:

          struct sigstack {
               char *ss_sp;   /* signal stack pointer */
               int  ss_onstack;    /* current status */
          };

     When a signal's action indicates its handler should execute
     on the signal stack (specified with a sigvec(2) call), the
     system checks to see if the process is currently executing
     on that stack.  If the process is not currently executing on
     the signal stack, the system arranges a switch to the signal
     stack for the duration of the signal handler's execution.
     If oss is non-zero, the current signal stack state is
     returned, and oss->ss_onstack is set to zero or one
     depending on whether the signal stack is currently in use.

     The value of ss->ss_onstack instructs the system as to
     whether the process is currently executing on an interrupt
     stack.  If the value is nonzero, the kernel is led to
     believe that an interrupt stack is in use; if the value is
     zero, the kernel believes that the process is executing on
     the default stack.  When an interrupt stack is in use, the
     system does two things differently:

     •  If the process attempts to grow the stack into an
        unallocated page, then the kernel delivers a segmentation
        violation to the process.  Normally the kernel allocates
        the new page and allows the process to proceed.

     •  If the kernel delivers a signal that calls for the signal
        stack and the process is already using a signal stack,
        then the kernel does not make any change to the process
        stack pointer.

DIAGNOSTICS
     Sigstack will fail and the signal stack context will remain



Printed 5/12/88                                                 1





SIGSTACK(2)             COMMAND REFERENCE             SIGSTACK(2)



     unchanged if one of the following occurs:

     [EFAULT]     Either ss or oss points to memory which is not
                  a valid part of the process address space.

RETURN VALUE
     If oss is non-zero, upon successful completion the current
     signal stack state is returned in oss and sigstack returns a
     value of 0.  If oss is NULL, upon successful completion a
     value of 0 is returned.  If an error occurs, a value of -1
     is returned and errno is set to indicate the error.

SEE ALSO
     sigvec(2), setjmp(3c), and setjmp(3f).









































Printed 5/12/88                                                 2



%%index%%
na:336,98;
sy:434,796;
de:1230,2241;
di:3471,267;4146,185;
rv:4331,546;
se:4877,207;
%%index%%000000000118

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