[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]

Technical Reference: Base Operating System and Extensions, Volume 2

sigstack Subroutine

Purpose

Sets and gets signal stack context.

Library

Standard C Library (libc.a)

Syntax


#include <signal.h>

int sigstack ( InStack, OutStack)
struct sigstack *InStack, *OutStack;

Description

The sigstack subroutine defines an alternate stack on which signals are to be processed.

When a signal occurs and its handler is to run on the signal stack, the system checks to see if the process is already running on that stack. If so, it continues to do so even after the handler returns. If not, the signal handler runs on the signal stack, and the original stack is restored when the handler returns.

Use the sigvec or sigaction subroutine to specify whether a given signal-handler routine is to run on the signal stack.

Attention: A signal stack does not automatically increase in size as a normal stack does. If the stack overflows, unpredictable results can occur.

Parameters

InStack Specifies the stack pointer of the new signal stack.

If the value of the InStack parameter is nonzero, it points to a sigstack structure, which has the following members:

caddr_t   ss_sp;
int   ss_onstack;

The value of InStack->ss_sp specifies the stack pointer of the new signal stack. Since stacks grow from numerically greater addresses to lower ones, the stack pointer passed to the sigstack subroutine should point to the numerically high end of the stack area to be used. InStack->ss_onstack should be set to a value of 1 if the process is currently running on that stack; otherwise, it should be a value of 0.

If the value of the InStack parameter is 0 (that is, a null pointer), the signal stack state is not set.

OutStack Points to structure where current signal stack state is stored.

If the value of the OutStack parameter is nonzero, it points to a sigstack structure into which the sigstack subroutine stores the current signal stack state.

If the value of the OutStack parameter is 0, the previous signal stack state is not reported.

Return Values

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

Error Codes

The sigstack subroutine is unsuccessful and the signal stack context remains unchanged if the following is true:

EFAULT The InStack or OutStack parameter points outside of the address space of the process.

Related Information

Thelongjmp (setjmp or longjmp Subroutine) subroutine, setjmp (setjmp or longjmp Subroutine) subroutine, sigaction, signal, or sigvec (sigaction, sigvec, or signal Subroutine) subroutine.

[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]