SIGSTACK(2)

NAME
sigstack - set and/or get signal stack context

SYNOPSIS
#include <sys/signal.h>

    struct sigstack {
    	caddr_t ss_sp;
    	int     ss_onstack;
    };

int
sigstack(const struct sigstack *ss, struct sigstack *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. 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.

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

RETURN VALUES
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(2), setjmp(3)

HISTORY
The sigstack function call appeared in 4.2BSD.