# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-03-01 17:08+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "sigaltstack" msgstr "" #. type: TH #: archlinux fedora-40 fedora-rawhide #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: archlinux fedora-40 fedora-rawhide #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "sigaltstack - set and/or get signal stack context" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Standard C library (I, I<-lc>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B<#include Esignal.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<,>\n" "B< stack_t *_Nullable restrict >IB<);>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Feature Test Macro Requirements for glibc (see B(7)):" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "B():" msgstr "" #. || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" " _XOPEN_SOURCE E= 500\n" " || /* Since glibc 2.12: */ _POSIX_C_SOURCE E= 200809L\n" " || /* glibc E= 2.19: */ _BSD_SOURCE\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() allows a thread to define a new alternate signal stack and/" "or retrieve the state of an existing alternate signal stack. An alternate " "signal stack is used during the execution of a signal handler if the " "establishment of that handler (see B(2)) requested it." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The normal sequence of events for using an alternate signal stack is the " "following:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "1." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Allocate an area of memory to be used for the alternate signal stack." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "2." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Use B() to inform the system of the existence and location of " "the alternate signal stack." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "3." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "When establishing a signal handler using B(2), inform the system " "that the signal handler should be executed on the alternate signal stack by " "specifying the B flag." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I argument is used to specify a new alternate signal stack, while " "the I argument is used to retrieve information about the currently " "established signal stack. If we are interested in performing just one of " "these tasks, then the other argument can be specified as NULL." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I type used to type the arguments of this function is defined " "as follows:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "typedef struct {\n" " void *ss_sp; /* Base address of stack */\n" " int ss_flags; /* Flags */\n" " size_t ss_size; /* Number of bytes in stack */\n" "} stack_t;\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "To establish a new alternate signal stack, the fields of this structure are " "set as follows:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "I" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "This field contains either 0, or the following flag:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.7)" msgstr "" #. commit 2a74213838104a41588d86fd5e8d344972891ace #. See tools/testing/selftests/sigaltstack/sas.c in kernel sources #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Clear the alternate signal stack settings on entry to the signal handler. " "When the signal handler returns, the previous alternate signal stack " "settings are restored." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag was added in order to make it safe to switch away from the signal " "handler with B(3). Without this flag, a subsequently handled " "signal will corrupt the state of the switched-away signal handler. On " "kernels where this flag is not supported, B() fails with the " "error B when this flag is supplied." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "I" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This field specifies the starting address of the stack. When a signal " "handler is invoked on the alternate stack, the kernel automatically aligns " "the address given in I to a suitable address boundary for the " "underlying hardware architecture." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "I" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This field specifies the size of the stack. The constant B is " "defined to be large enough to cover the usual size requirements for an " "alternate signal stack, and the constant B defines the minimum " "size required to execute a signal handler." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "To disable an existing stack, specify I as B. In " "this case, the kernel ignores any other flags in I and the " "remaining fields in I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If I is not NULL, then it is used to return information about the " "alternate signal stack which was in effect prior to the call to " "B(). The I and I fields return " "the starting address and size of that stack. The I may " "return either of the following values:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The thread is currently executing on the alternate signal stack. (Note that " "it is not possible to change the alternate signal stack if the thread is " "currently executing on it.)" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "The alternate signal stack is currently disabled." msgstr "" #. FIXME Was it intended that one can set up a different alternative #. signal stack in this scenario? (In passing, if one does this, the #. sigaltstack(NULL, &old_ss) now returns old_ss.ss_flags==SS_AUTODISARM #. rather than old_ss.ss_flags==SS_DISABLE. The API design here seems #. confusing... #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Alternatively, this value is returned if the thread is currently executing " "on an alternate signal stack that was established using the B " "flag. In this case, it is safe to switch away from the signal handler with " "B(3). It is also possible to set up a different alternative " "signal stack using a further call to B()." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The alternate signal stack has been marked to be autodisarmed as described " "above." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "By specifying I as NULL, and I as a non-NULL value, one can " "obtain the current settings for the alternate signal stack without changing " "them." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RETURN VALUE" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() returns 0 on success, or -1 on failure with I set " "to indicate the error." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ERRORS" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Either I or I is not NULL and points to an area outside of the " "process's address space." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "I is not NULL and the I field contains an invalid flag." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The specified size of the new alternate signal stack I was less " "than B." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "An attempt was made to change the alternate signal stack while it was active " "(i.e., the thread was already executing on the current alternate signal " "stack)." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ATTRIBUTES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For an explanation of the terms used in this section, see B(7)." msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Interface" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Attribute" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Value" msgstr "" #. type: tbl table #: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed #, no-wrap msgid ".na\n" msgstr "" #. type: tbl table #: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed #, no-wrap msgid ".nh\n" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Thread safety" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "MT-Safe" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-leap-15-6 #: opensuse-tumbleweed msgid "POSIX.1-2008." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-leap-15-6 #: opensuse-tumbleweed msgid "B is a Linux extension." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-leap-15-6 #: opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-leap-15-6 #: opensuse-tumbleweed msgid "POSIX.1-2001, SUSv2, SVr4." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The most common usage of an alternate signal stack is to handle the " "B signal that is generated if the space available for the standard " "stack is exhausted: in this case, a signal handler for B cannot be " "invoked on the standard stack; if we wish to handle it, we must use an " "alternate signal stack." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed msgid "" "Establishing an alternate signal stack is useful if a thread expects that it " "may exhaust its standard stack. This may occur, for example, because the " "stack grows so large that it encounters the upwardly growing heap, or it " "reaches a limit established by a call to B<\\%setrlimit(RLIMIT_STACK, " "&rlim)>. If the standard stack is exhausted, the kernel sends the thread a " "B signal. In these circumstances the only way to catch this signal " "is on an alternate signal stack." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On most hardware architectures supported by Linux, stacks grow downward. " "B() automatically takes account of the direction of stack " "growth." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Functions called from a signal handler executing on an alternate signal " "stack will also use the alternate signal stack. (This also applies to any " "handlers invoked for other signals while the thread is executing on the " "alternate signal stack.) Unlike the standard stack, the system does not " "automatically extend the alternate signal stack. Exceeding the allocated " "size of the alternate signal stack will lead to unpredictable results." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A successful call to B(2) removes any existing alternate signal " "stack. A child process created via B(2) inherits a copy of its " "parent's alternate signal stack settings. The same is also true for a child " "process created using B(2), unless the clone flags include " "B and do not include B, in which case any alternate " "signal stack that was established in the parent is disabled in the child " "process." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() supersedes the older B() call. For backward " "compatibility, glibc also provides B(). All new applications " "should be written using B()." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "History" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "4.2BSD had a B() system call. It used a slightly different " "struct, and had the major disadvantage that the caller had to know the " "direction of stack growth." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BUGS" msgstr "" #. Linux 2.3.40 #. After quite a bit of web and mail archive searching, #. I could not find the patch on any mailing list, and I #. could find no place where the rationale for this change #. explained -- mtk #. See the source code of Illumos and FreeBSD, for example. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In Linux 2.2 and earlier, the only flag that could be specified in I was B. In the lead up to the release of the Linux 2.4 " "kernel, a change was made to allow B() to allow I with the same meaning as I (i.e., the " "inclusion of B in I is a no-op). On other " "implementations, and according to POSIX.1, B appears only as a " "reported flag in I. On Linux, there is no need ever to " "specify B in I, and indeed doing so should be " "avoided on portability grounds: various other systems give an error if " "B is specified in I." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The following code segment demonstrates the use of B() (and " "B(2)) to install an alternate signal stack that is employed by a " "handler for the B signal:" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed #, no-wrap msgid "" "stack_t ss;\n" "\\&\n" "ss.ss_sp = malloc(SIGSTKSZ);\n" "if (ss.ss_sp == NULL) {\n" " perror(\"malloc\");\n" " exit(EXIT_FAILURE);\n" "}\n" "\\&\n" "ss.ss_size = SIGSTKSZ;\n" "ss.ss_flags = 0;\n" "if (sigaltstack(&ss, NULL) == -1) {\n" " perror(\"sigaltstack\");\n" " exit(EXIT_FAILURE);\n" "}\n" "\\&\n" "sa.sa_flags = SA_ONSTACK;\n" "sa.sa_handler = handler(); /* Address of a signal handler */\n" "sigemptyset(&sa.sa_mask);\n" "if (sigaction(SIGSEGV, &sa, NULL) == -1) {\n" " perror(\"sigaction\");\n" " exit(EXIT_FAILURE);\n" "}\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(2), B(2), B(2), B(3), " "B(3), B(7)" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2023-02-05" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: Plain text #: debian-bookworm msgid "POSIX.1-2001, POSIX.1-2008, SUSv2, SVr4." msgstr "" #. type: Plain text #: debian-bookworm msgid "The B flag is a Linux extension." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 msgid "" "Establishing an alternate signal stack is useful if a thread expects that it " "may exhaust its standard stack. This may occur, for example, because the " "stack grows so large that it encounters the upwardly growing heap, or it " "reaches a limit established by a call to B. " "If the standard stack is exhausted, the kernel sends the thread a B " "signal. In these circumstances the only way to catch this signal is on an " "alternate signal stack." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "stack_t ss;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "ss.ss_sp = malloc(SIGSTKSZ);\n" "if (ss.ss_sp == NULL) {\n" " perror(\"malloc\");\n" " exit(EXIT_FAILURE);\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "ss.ss_size = SIGSTKSZ;\n" "ss.ss_flags = 0;\n" "if (sigaltstack(&ss, NULL) == -1) {\n" " perror(\"sigaltstack\");\n" " exit(EXIT_FAILURE);\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "sa.sa_flags = SA_ONSTACK;\n" "sa.sa_handler = handler(); /* Address of a signal handler */\n" "sigemptyset(&sa.sa_mask);\n" "if (sigaction(SIGSEGV, &sa, NULL) == -1) {\n" " perror(\"sigaction\");\n" " exit(EXIT_FAILURE);\n" "}\n" msgstr "" #. type: TH #: debian-unstable opensuse-tumbleweed #, no-wrap msgid "2023-07-20" msgstr "" #. type: TH #: debian-unstable opensuse-tumbleweed #, no-wrap msgid "Linux man-pages 6.05.01" msgstr "" #. type: TH #: mageia-cauldron #, no-wrap msgid "SIGALTSTACK" msgstr "" #. type: TH #: mageia-cauldron #, no-wrap msgid "20 September 1999" msgstr "" #. type: TH #: mageia-cauldron #, no-wrap msgid "Red Hat Linux 6.1" msgstr "" #. type: TH #: mageia-cauldron #, no-wrap msgid "Linux Programmer's Manual" msgstr "" #. type: Plain text #: mageia-cauldron msgid "sigaltstack - get or set alternate signal stack content" msgstr "" #. type: Plain text #: mageia-cauldron msgid "B<#include Esignal.hE>" msgstr "" #. type: Plain text #: mageia-cauldron msgid "BIB< stack_t *>IB<);>" msgstr "" #. type: Plain text #: mageia-cauldron msgid "where:" msgstr "" #. type: TP #: mageia-cauldron #, no-wrap msgid "I" msgstr "" #. type: Plain text #: mageia-cauldron msgid "" "points to a signalstack structure defined in Esignal.hE containing " "stack content after the call." msgstr "" #. type: TP #: mageia-cauldron #, no-wrap msgid "I" msgstr "" #. type: Plain text #: mageia-cauldron msgid "" "if not NULL, points to a signalstack structure containing stack content " "before the call." msgstr "" #. type: Plain text #: mageia-cauldron msgid "" "I(2) may indicate that a signal should execute on an alternate " "stack. Where this is the case, B(2) stores the signal in an " "alternate stack structure I where its execution status may be examined " "prior to processing." msgstr "" #. type: Plain text #: mageia-cauldron msgid "The sigaltstack struct is defined in Esignal.hE as follows:" msgstr "" #. type: Plain text #: mageia-cauldron #, no-wrap msgid "" " void *ss_sp /* SVID3 uses caddr_t ss_sp\n" " int ss_flags\n" " size_t ss_size\n" msgstr "" #. type: TP #: mageia-cauldron #, no-wrap msgid "I" msgstr "" #. type: Plain text #: mageia-cauldron msgid "points to the stack structure." msgstr "" #. type: TP #: mageia-cauldron #, no-wrap msgid "I" msgstr "" #. type: Plain text #: mageia-cauldron msgid "specifies the stack state to SS_DISABLE or SS_ONSTACK as follows:" msgstr "" #. type: Plain text #: mageia-cauldron msgid "" "If I is not NULL,the new state may be set to SS_DISABLE, which specifies " "that the stack is to be disabled and ss_sp and ss_size are ignored. If " "SS_DISABLE is not set, the stack will be enabled." msgstr "" #. type: Plain text #: mageia-cauldron msgid "" "If I is not NULL, the stack state may be either SS_ONSTACK or " "SS_DISABLE. The value SS_ONSTACK indicates that the process is currently " "executing on the alternate stack and that any attempt to modify it during " "execution will fail. The value SS_DISABLE indicates that the current signal " "stack is disabled." msgstr "" #. type: TP #: mageia-cauldron #, no-wrap msgid "I" msgstr "" #. type: Plain text #: mageia-cauldron msgid "specifies the size of the stack." msgstr "" #. type: Plain text #: mageia-cauldron msgid "" "The value SIGSTKSZ defines the average number of bytes used when allocating " "an alternate stack area. The value MINSIGSTKSZ defines the minimum stack " "size for a signal handler. When processing an alternate stack size, your " "program should include these values in the stack requirement to plan for the " "overhead of the operating system." msgstr "" #. type: SH #: mageia-cauldron #, no-wrap msgid "RETURN VALUES" msgstr "" #. type: Plain text #: mageia-cauldron msgid "B(2) returns 0 on success and -1 on failure." msgstr "" #. type: Plain text #: mageia-cauldron msgid "B(2) sets errno for the following conditions:" msgstr "" #. type: TP #: mageia-cauldron #, no-wrap msgid "EINVAL" msgstr "" #. type: Plain text #: mageia-cauldron msgid "" "I is not a null pointer the I member pointed to by I " "contains flags other than SS_DISABLE." msgstr "" #. type: TP #: mageia-cauldron #, no-wrap msgid "ENOMEM" msgstr "" #. type: Plain text #: mageia-cauldron msgid "The size of the alternate stack area is less than MINSIGSTKSZ." msgstr "" #. type: TP #: mageia-cauldron #, no-wrap msgid "EPERM" msgstr "" #. type: Plain text #: mageia-cauldron msgid "An attempt was made to modify an active stack." msgstr "" #. type: Plain text #: mageia-cauldron msgid "This function comforms to: XPG4-UNIX." msgstr "" #. Add ucontext(5) and standards(5) if/when they're written. #. type: Plain text #: mageia-cauldron msgid "B(2), B(2), B(3)." msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-03-30" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr ""