SIGSTACK(2) SIGSTACK(2)
sigstack - set and/or get signal stack context
#include <signal.h>
struct sigstack {
caddr_t ss_sp;
int ss_onstack;
};
sigstack(ss, oss);
struct sigstack *ss, *oss;
Sigstack
is used in conjunction with sigvec(3b) which requires you to either
1) #define
_BSD_SIGNALS
or
_BSD_COMPAT
before including <signal.h>,
or
2) specify one of them in the compile
command or makefile:
cc -D_BSD_SIGNALS -o prog prog.c
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(3b) 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.
Signal stacks are not ``grown'' automatically, as is done for the normal
stack. If the stack overflows unpredictable results may occur.
Upon successful completion, a value of 0 is returned. Otherwise, a value
of -1 is returned and errno is set to indicate the error.
Page 1
SIGSTACK(2) SIGSTACK(2)
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.
sigvec(3b), setjmp(3)
PPPPaaaaggggeeee 2222 [ Back ]
|