Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-4.1.3)
Apropos / Subsearch:
optional field

SIGSTACK(2)                   System Calls Manual                  SIGSTACK(2)

       sigstack - set and/or get signal stack context

       #include <&lt;signal.h>&gt;

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

       sigstack() allows users to define an alternate stack, called the ``sig-
       nal stack'', on which signals are to be  processed.   When  a  signal's
       action indicates its handler should execute on the signal stack (speci-
       fied 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 sig-
       nal stack for the duration of the signal handler's execution.

       A  signal  stack is specified by a sigstack() structure, which includes
       the following members:

              char      *ss_sp;        /* signal stack pointer */
              int       ss_onstack;    /* current status */

       ss_sp is the initial value to be assigned to the stack pointer when the
       system  switches  the  process  to  the  signal  stack.   Note that, on
       machines where the stack grows downwards in memory,  this  is  not  the
       address of the beginning of the signal stack area.  ss_onstack field is
       zero or non-zero depending on whether the process is currently  execut-
       ing on the signal stack or not.

       If  ss is not a NULL pointer, sigstack() sets the signal stack state to
       the value in the sigstack() structure  pointed  to  by  ss.   Note:  if
       ss_onstack  is non-zero, the system will think that the process is exe-
       cuting on the signal stack.  If ss is a NULL pointer, the signal  stack
       state  will  be  unchanged.   If oss is not a NULL pointer, the current
       signal stack state is stored in the sigstack() structure pointed to  by

       sigstack() returns:

       0      on success.

       -1     on failure and sets errno to indicate the error.

       sigstack() will fail and the signal stack context will remain unchanged
       if one of the following occurs.

       EFAULT         ss or oss points to memory that is not a valid  part  of
                      the process address space.

       sigvec(2), setjmp(3V), signal(3V)

       Signal  stacks are not ``grown'' automatically, as is done for the nor-
       mal stack.  If the stack overflows unpredictable results may occur.

                                21 January 1990                    SIGSTACK(2)