HP-UX Reference (11i v2 07/12) - 2 System Calls (vol 5)

s
sigstack(2) sigstack(2)
(TO BE OBSOLETED)
NAME
sigstack() - set and/or get alternate signal stack context
SYNOPSIS
#include <signal.h>
int sigstack(
struct sigstack *ss,
struct sigstack *oss
);
DESCRIPTION
The sigstack() function allows the calling process to indicate to the system an area of its address space
to be used for processing signals received by the process.
The sigstack() function requires the application to have knowledge of the underlying system’s stack
architecture. To ensure portability, use
sigaltstack()
instead of sigstack() when writing or
rewriting applications.
If the ss argument is not a null pointer, it must point to a
sigstack structure. The length of the
application-supplied stack must be at least
SIGSTKSZ bytes. If the alternate signal stack overflows, the
resulting behavior is undefined. (See APPLICATION USAGE below.)
The value of the ss_onstack member indicates whether the process wants the system to use an
alternate signal stack when delivering signals.
The value of the ss_sp member indicates the desired location of the alternate signal stack area in
the process’ address space.
If the ss argument is a null pointer, the current alternate signal stack context is not changed.
If the oss argument is not a null pointer, it points to a
sigstack structure in which the current alternate
signal stack context is placed. The value stored in the ss_onstack member of oss will be non- zero if the
process is currently executing on the alternate signal stack. If the oss argument is a null pointer, the
current alternate signal stack context is not returned.
When a signal’s action indicates its handler should execute on the alternate signal stack (specified by calling
sigaction() ), the implementation checks to see if the process is currently executing on that stack. If
the process is not currently executing on the alternate signal stack, the system arranges a switch to the
alternate signal stack for the duration of the signal handler’s execution.
After a successful call to one of the exec() functions, there are no alternate signal stacks in the new pro-
cess image.
The correct use of sigstack() is hardware dependent, and therefore is not portable between different
HP-UX implementations.
sigspace() is portable between different HP-UX implementations and should
be used when the application does not need to know where the signal stack is located (see sigspace(2)).
sigstack() is provided for compatibility with other systems that provide this functionality. Users
should note that there is no guarantee that functionality similar to this is even possible on some architec-
tures.
The
sigstack() function is scheduled to be withdrawn from a future version of the Single UNIX
Specification. The sigaltstack() function is the recommended replacement. Refer to the
sigaltstack(2) reference page.
RETURN VALUE
The sigstack() function returns the following:
0 Success.
-1 Failure: errno is set to indicate the error.
ERRORS
The sigstack() function will fail if:
[EPERM] An attempt was made to modify an active stack or an active alternate stack.
[EFAULT] Either of ss or oss is not a null pointer and points outside the allocated address space
of the process. This error is not reliably detected.
432 Hewlett-Packard Company 1 HP-UX 11i Version 2: December 2007 Update