DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 
Signals, job control and pipes

Signal stacks

Applications that maintain complex or fixed-size stacks can use the call

struct sigaltstack {
	caddr_t	ss_sp;
	int  	ss_size;
	int	ss_flags;
};
sigaltstack(ss, oss)
	struct sigaltstack *ss;
	struct sigaltstack *oss;
to provide the system with a stack based at ss_sp of size ss_size for delivery of signals. The system automatically adjusts for direction of stack growth. The member ss_flags indicates whether the process is currently on the signal stack and whether the signal stack is disabled.

When a signal is to be delivered and the process has requested that it be delivered on the alternate stack, the system checks whether the process is on a signal stack (see sigaction(S)). If it is not, then the process is switched to the signal stack for delivery, with the return from the signal arranged to restore the previous stack.

If the process wishes to take a non-local exit from the signal-handling routine or run code from the signal stack that uses a different stack, a sigaltstack call should be used to reset the signal stack (see sigaltstack(S)).


Next topic: Sending signals
Previous topic: Protecting critical sections

© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 02 June 2005