👤
Home Man
Search
Today's Posts
Register

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:
Select Section of Man Page:
Select Man Page Repository:

Linux 2.6 - man page for sigaltstack (linux section 3posix)

SIGALTSTACK(P)			    POSIX Programmer's Manual			   SIGALTSTACK(P)

NAME
       sigaltstack - set and get signal alternate stack context

SYNOPSIS
       #include <signal.h>

       int sigaltstack(const stack_t *restrict ss, stack_t *restrict oss);

DESCRIPTION
       The  sigaltstack()  function allows a process to define and examine the state of an alter-
       nate stack for signal handlers for the current thread. Signals that have  been  explicitly
       declared to execute on the alternate stack shall be delivered on the alternate stack.

       If ss is not a null pointer, it points to a stack_t structure that specifies the alternate
       signal stack that shall take effect upon return from sigaltstack().  The  ss_flags  member
       specifies the new stack state. If it is set to SS_DISABLE, the stack is disabled and ss_sp
       and ss_size are ignored. Otherwise, the stack shall be enabled, and the ss_sp and  ss_size
       members specify the new address and size of the stack.

       The  range of addresses starting at ss_sp up to but not including ss_sp+ ss_size is avail-
       able to the implementation for use as  the  stack.  This  function  makes  no  assumptions
       regarding  which end is the stack base and in which direction the stack grows as items are
       pushed.

       If oss is not a null pointer, on successful completion it shall point to a stack_t  struc-
       ture  that  specifies  the  alternate signal stack that was in effect prior to the call to
       sigaltstack().  The ss_sp and ss_size members specify the address and size of that  stack.
       The ss_flags member specifies the stack's state, and may contain one of the following val-
       ues:

       SS_ONSTACK
	      The process is currently executing on the alternate signal stack.  Attempts to mod-
	      ify the alternate signal stack while the process is executing on it fail. This flag
	      shall not be modified by processes.

       SS_DISABLE
	      The alternate signal stack is currently disabled.

       The value SIGSTKSZ is a system default specifying the number of bytes that would  be  used
       to  cover  the usual case when manually allocating an alternate stack area. The value MIN-
       SIGSTKSZ is defined to be the minimum stack size for a signal  handler.	In  computing  an
       alternate  stack size, a program should add that amount to its stack requirements to allow
       for the system implementation overhead. The constants  SS_ONSTACK,  SS_DISABLE,	SIGSTKSZ,
       and MINSIGSTKSZ are defined in <signal.h>.

       After a successful call to one of the exec functions, there are no alternate signal stacks
       in the new process image.

       In some implementations, a signal (whether or not indicated to execute  on  the	alternate
       stack) shall always execute on the alternate stack if it is delivered while another signal
       is being caught using the alternate stack.

       Use of this function by library threads that are not bound  to  kernel-scheduled  entities
       results in undefined behavior.

RETURN VALUE
       Upon  successful  completion,  sigaltstack() shall return 0; otherwise, it shall return -1
       and set errno to indicate the error.

ERRORS
       The sigaltstack() function shall fail if:

       EINVAL The ss argument is not a null pointer, and the ss_flags member  pointed  to  by  ss
	      contains flags other than SS_DISABLE.

       ENOMEM The size of the alternate stack area is less than MINSIGSTKSZ.

       EPERM  An attempt was made to modify an active stack.

       The following sections are informative.

EXAMPLES
   Allocating Memory for an Alternate Stack
       The following example illustrates a method for allocating memory for an alternate stack.

	      #include <signal.h>
	      ...
	      if ((sigstk.ss_sp = malloc(SIGSTKSZ)) == NULL)
		  /* Error return. */
	      sigstk.ss_size = SIGSTKSZ;
	      sigstk.ss_flags = 0;
	      if (sigaltstack(&sigstk,(stack_t *)0) < 0)
		  perror("sigaltstack");

APPLICATION USAGE
       On  some implementations, stack space is automatically extended as needed. On those imple-
       mentations, automatic extension is typically not available for an alternate stack. If  the
       stack overflows, the behavior is undefined.

RATIONALE
       None.

FUTURE DIRECTIONS
       None.

SEE ALSO
       Signal	Concepts   ,   sigaction()  ,  sigsetjmp()  ,  the  Base  Definitions  volume  of
       IEEE Std 1003.1-2001, <signal.h>

COPYRIGHT
       Portions of this text are reprinted and	reproduced  in	electronic  form  from	IEEE  Std
       1003.1,	2003  Edition,	Standard  for Information Technology -- Portable Operating System
       Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003  by
       the  Institute  of  Electrical  and  Electronics Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE  and  The  Open  Group
       Standard, the original IEEE and The Open Group Standard is the referee document. The orig-
       inal Standard can be obtained online at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group			       2003				   SIGALTSTACK(P)


All times are GMT -4. The time now is 08:42 AM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
×
UNIX.COM Login
Username:
Password:  
Show Password





Not a Forum Member?
Forgot Password?