Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SIGSTACK(2)		      System Calls Manual		   SIGSTACK(2)

       sigstack	- set and/or get signal	stack context

       #include	<signal.h>

       int sigstack (ss, oss)
       struct sigstack *ss, *oss;

       sigstack() allows users to define an alternate stack, called the	``sig-
       nal stack'', on which signals are to be processed.  When	a signal's ac-
       tion  indicates	its handler should execute on the signal stack (speci-
       fied 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 ex-
       ecuting on the signal stack, the	system arranges	a switch to the	signal
       stack for the duration of the signal handler's execution.

       A  signal  stack	is specified by	a sigstack() structure,	which includes
       the following members:

	      char	*ss_sp;	       /* signal stack pointer */
	      int	ss_onstack;    /* current status */

       ss_sp is	the initial value to be	assigned to the	stack pointer when the
       system  switches	 the  process  to the signal stack.  Note that,	on ma-
       chines where the	stack grows downwards in memory, this is not  the  ad-
       dress  of  the beginning	of the signal stack area.  ss_onstack field is
       zero or non-zero	depending on whether the process is currently  execut-
       ing on the signal stack or not.

       If  ss is not a NULL pointer, sigstack()	sets the signal	stack state to
       the value in the	sigstack() structure  pointed  to  by  ss.   Note:  if
       ss_onstack  is non-zero,	the system will	think that the process is exe-
       cuting on the signal stack.  If ss is a NULL pointer, the signal	 stack
       state  will  be	unchanged.   If	oss is not a NULL pointer, the current
       signal stack state is stored in the sigstack() structure	pointed	to  by

       sigstack() returns:

       0      on success.

       -1     on failure and sets errno	to indicate the	error.

       sigstack() will fail and	the signal stack context will remain unchanged
       if one of the following occurs.

       EFAULT	      ss or oss	points to memory that is not a valid  part  of
		      the process address space.

       sigvec(2), setjmp(3V), signal(3V)

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

				21 January 1990			   SIGSTACK(2)


Want to link to this manual page? Use this URL:

home | help