Amiga Unix — 68040 · 68060

Manual pages › BSD C library (3B)

sigstack(3B)

set and/or get signal stack context

From the original Amiga UNIX 2.1 manual. Some things it mentions may not be in this release.

NAME

sigstack - set and/or get signal stack context

SYNOPSIS

cc [ flag... ] file ... -lucb
#include <signal.h>
int sigstack (ss, oss)
struct sigstack *ss, *oss;

DESCRIPTION

sigstack allows users to define an alternate  stack,  called
the  ``signal stack'', on which signals are to be processed.
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.  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  down-
wards 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 executing on
the signal stack or not.  If ss is not a NULL pointer,  sig-
stack  sets  the signal stack state to the value in the sig-
stack structure pointed to by ss.  Note:  if  ss_onstack  is
non-zero,  the system will think that the process is execut-
ing on the signal stack.  If ss is a NULL pointer, the  sig-
nal  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 oss.

RETURN VALUE

Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.

ERRORS

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

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

SEE ALSO

sigvec(3), signal(3)  sigaltstack(2),  in  the  Programmer's
Reference Manual.

NOTES

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