summaryrefslogtreecommitdiff
path: root/static/netbsd/man9/signal.9 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man9/signal.9 3.html')
-rw-r--r--static/netbsd/man9/signal.9 3.html482
1 files changed, 0 insertions, 482 deletions
diff --git a/static/netbsd/man9/signal.9 3.html b/static/netbsd/man9/signal.9 3.html
deleted file mode 100644
index 6cfaf949..00000000
--- a/static/netbsd/man9/signal.9 3.html
+++ /dev/null
@@ -1,482 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">SIGNAL(9)</td>
- <td class="head-vol">Kernel Developer's Manual</td>
- <td class="head-rtitle">SIGNAL(9)</td>
- </tr>
-</table>
-<div class="manual-text">
-<section class="Sh">
-<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
-<p class="Pp"><code class="Nm">signal</code>, <code class="Nm">siginit</code>,
- <code class="Nm">sigactsinit</code>, <code class="Nm">sigactsunshare</code>,
- <code class="Nm">sigactsfree</code>, <code class="Nm">execsigs</code>,
- <code class="Nm">sigaction1</code>, <code class="Nm">sigprocmask1</code>,
- <code class="Nm">sigpending1</code>, <code class="Nm">sigsuspend1</code>,
- <code class="Nm">sigaltstack1</code>, <code class="Nm">pgsignal</code>,
- <code class="Nm">kpgsignal</code>, <code class="Nm">psignal</code>,
- <code class="Nm">kpsignal</code>, <code class="Nm">issignal</code>,
- <code class="Nm">postsig</code>, <code class="Nm">killproc</code>,
- <code class="Nm">sigexit</code>, <code class="Nm">trapsignal</code>,
- <code class="Nm">sendsig</code>, <code class="Nm">sigcode</code>,
- <code class="Nm">sigtramp</code> &#x2014; <span class="Nd">software signal
- facilities</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<p class="Pp"><code class="In">#include
- &lt;<a class="In">sys/signal.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">sys/signalvar.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">siginit</code>(<var class="Fa" style="white-space: nowrap;">struct
- proc *p</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">sigactsinit</code>(<var class="Fa" style="white-space: nowrap;">struct
- proc *pp</var>, <var class="Fa" style="white-space: nowrap;">int
- share</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">sigactsunshare</code>(<var class="Fa" style="white-space: nowrap;">struct
- proc *p</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">sigactsfree</code>(<var class="Fa" style="white-space: nowrap;">struct
- proc *p</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">execsigs</code>(<var class="Fa" style="white-space: nowrap;">struct
- proc *p</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">sigaction1</code>(<var class="Fa" style="white-space: nowrap;">struct
- lwp *l</var>, <var class="Fa" style="white-space: nowrap;">int signum</var>,
- <var class="Fa" style="white-space: nowrap;">const struct sigaction
- *nsa</var>, <var class="Fa" style="white-space: nowrap;">struct sigaction
- *osa</var>, <var class="Fa" style="white-space: nowrap;">void *tramp</var>,
- <var class="Fa" style="white-space: nowrap;">int vers</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">sigprocmask1</code>(<var class="Fa" style="white-space: nowrap;">struct
- lwp *l</var>, <var class="Fa" style="white-space: nowrap;">int how</var>,
- <var class="Fa" style="white-space: nowrap;">const sigset_t *nss</var>,
- <var class="Fa" style="white-space: nowrap;">sigset_t *oss</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">sigpending1</code>(<var class="Fa" style="white-space: nowrap;">struct
- lwp *l</var>, <var class="Fa" style="white-space: nowrap;">sigset_t
- *ss</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">sigsuspend1</code>(<var class="Fa" style="white-space: nowrap;">struct
- lwp *l</var>, <var class="Fa" style="white-space: nowrap;">const sigset_t
- *ss</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">sigaltstack1</code>(<var class="Fa" style="white-space: nowrap;">struct
- lwp *l</var>, <var class="Fa" style="white-space: nowrap;">const struct
- sigaltstack *nss</var>, <var class="Fa" style="white-space: nowrap;">struct
- sigaltstack *oss</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pgsignal</code>(<var class="Fa" style="white-space: nowrap;">struct
- pgrp *pgrp</var>, <var class="Fa" style="white-space: nowrap;">int
- signum</var>, <var class="Fa" style="white-space: nowrap;">int
- checkctty</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">kpgsignal</code>(<var class="Fa" style="white-space: nowrap;">struct
- pgrp *pgrp</var>, <var class="Fa" style="white-space: nowrap;">ksiginfo_t
- *ks</var>, <var class="Fa" style="white-space: nowrap;">void *data</var>,
- <var class="Fa" style="white-space: nowrap;">int checkctty</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">psignal</code>(<var class="Fa" style="white-space: nowrap;">struct
- proc *p</var>, <var class="Fa" style="white-space: nowrap;">int
- signum</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">kpsignal</code>(<var class="Fa" style="white-space: nowrap;">struct
- proc *p</var>, <var class="Fa" style="white-space: nowrap;">ksiginfo_t
- *ks</var>, <var class="Fa" style="white-space: nowrap;">void
- *data</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">issignal</code>(<var class="Fa" style="white-space: nowrap;">struct
- lwp *l</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">postsig</code>(<var class="Fa" style="white-space: nowrap;">int
- signum</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">killproc</code>(<var class="Fa" style="white-space: nowrap;">struct
- proc *p</var>, <var class="Fa" style="white-space: nowrap;">const char
- *why</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">sigexit</code>(<var class="Fa" style="white-space: nowrap;">struct
- lwp *l</var>, <var class="Fa" style="white-space: nowrap;">int
- signum</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">trapsignal</code>(<var class="Fa" style="white-space: nowrap;">struct
- lwp *l</var>, <var class="Fa" style="white-space: nowrap;">const ksiginfo_t
- *ks</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">sendsig</code>(<var class="Fa" style="white-space: nowrap;">const
- ksiginfo_t *ks</var>, <var class="Fa" style="white-space: nowrap;">const
- sigset_t *mask</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The system defines a set of signals that may be delivered to a
- process. These functions implement the kernel portion of the signal
- facility.</p>
-<p class="Pp">Signal numbers used throughout the kernel signal facilities should
- always be within the range of [1-NSIG].</p>
-<p class="Pp">Most of the kernel's signal infrastructure is implemented in
- machine-independent code. Machine-dependent code provides support for
- invoking a process's signal handler, restoring context when the signal
- handler returns, generating signals when hardware traps occur, triggering
- the delivery of signals when a process is about to return from the kernel to
- userspace.</p>
-<p class="Pp">The signal state for a process is contained in
- <var class="Fa">struct sigctx</var>. This includes the list of signals with
- delivery pending, information about the signal handler stack, the signal
- mask, and the address of the signal trampoline.</p>
-<p class="Pp">The registered signal handlers for a process are recorded in
- <var class="Fa">struct sigacts</var>. This structure may be shared by
- multiple processes.</p>
-<p class="Pp">The kernel's signal facilities are implemented by the following
- functions:</p>
-<dl class="Bl-tag">
- <dt id="siginit"><a class="permalink" href="#siginit"><code class="Fn">siginit</code></a>(<var class="Fa">p</var>)</dt>
- <dd>
- <p class="Pp">This function initializes the signal state of
- <var class="Va">proc0</var> to the system default. This signal state is
- then inherited by <a class="Xr">init(8)</a> when it is started by the
- kernel.</p>
- </dd>
- <dt id="sigactsinit"><a class="permalink" href="#sigactsinit"><code class="Fn">sigactsinit</code></a>(<var class="Fa">pp</var>,
- <var class="Fa">share</var>)</dt>
- <dd>
- <p class="Pp">This function creates an initial <var class="Fa">struct
- sigacts</var> for the process <var class="Fa">pp</var>. If the
- <var class="Fa">share</var> argument is non-zero, then
- <var class="Fa">pp</var> shares the <var class="Fa">struct sigacts</var>
- by holding a reference. Otherwise, <var class="Fa">pp</var> receives a
- new <var class="Fa">struct sigacts</var> which is copied from the
- parent.</p>
- </dd>
- <dt id="sigactsunshare"><a class="permalink" href="#sigactsunshare"><code class="Fn">sigactsunshare</code></a>(<var class="Fa">p</var>)</dt>
- <dd>
- <p class="Pp">This function causes the process <var class="Fa">p</var> to no
- longer share its <var class="Fa">struct sigacts</var> The current state
- of the signal actions is maintained in the new copy.</p>
- </dd>
- <dt id="sigactsfree"><a class="permalink" href="#sigactsfree"><code class="Fn">sigactsfree</code></a>(<var class="Fa">p</var>)</dt>
- <dd>
- <p class="Pp">This function decrements the reference count on the
- <var class="Fa">struct sigacts</var> of process <var class="Fa">p</var>.
- If the reference count reaches zero, the <var class="Fa">struct
- sigacts</var> is freed.</p>
- </dd>
- <dt id="execsigs"><a class="permalink" href="#execsigs"><code class="Fn">execsigs</code></a>(<var class="Fa">p</var>)</dt>
- <dd>
- <p class="Pp">This function is used to reset the signal state of the process
- <var class="Fa">p</var> to the system defaults when the process execs a
- new program image.</p>
- </dd>
- <dt id="sigaction1"><a class="permalink" href="#sigaction1"><code class="Fn">sigaction1</code></a>(<var class="Fa">l</var>,
- <var class="Fa">signum</var>, <var class="Fa">nsa</var>,
- <var class="Fa">osa</var>, <var class="Fa">tramp</var>,
- <var class="Fa">vers</var>)</dt>
- <dd>
- <p class="Pp" id="sendsig">This function implements the
- <a class="Xr">sigaction(2)</a> system call. The
- <var class="Fa">tramp</var> and <var class="Fa">vers</var> arguments
- provide support for userspace signal trampolines. Trampoline version 0
- is reserved for the legacy kernel-provided signal trampoline;
- <var class="Fa">tramp</var> must be <code class="Dv">NULL</code> in this
- case. Otherwise, <var class="Fa">vers</var> specifies the ABI of the
- trampoline specified by <var class="Fa">tramp</var>. The signal
- trampoline ABI is machine-dependent, and must be coordinated with the
- <a class="permalink" href="#sendsig"><code class="Fn">sendsig</code></a>()
- function.</p>
- </dd>
- <dt id="sigprocmask1"><a class="permalink" href="#sigprocmask1"><code class="Fn">sigprocmask1</code></a>(<var class="Fa">l</var>,
- <var class="Fa">how</var>, <var class="Fa">nss</var>,
- <var class="Fa">oss</var>)</dt>
- <dd>
- <p class="Pp">This function implements the <a class="Xr">sigprocmask(2)</a>
- system call.</p>
- </dd>
- <dt id="sigpending1"><a class="permalink" href="#sigpending1"><code class="Fn">sigpending1</code></a>(<var class="Fa">l</var>,
- <var class="Fa">ss</var>)</dt>
- <dd>
- <p class="Pp">This function implements the <a class="Xr">sigpending(2)</a>
- system call.</p>
- </dd>
- <dt id="sigsuspend1"><a class="permalink" href="#sigsuspend1"><code class="Fn">sigsuspend1</code></a>(<var class="Fa">l</var>,
- <var class="Fa">ss</var>)</dt>
- <dd>
- <p class="Pp">This function implements the <a class="Xr">sigsuspend(2)</a>
- system call.</p>
- </dd>
- <dt id="sigaltstack1"><a class="permalink" href="#sigaltstack1"><code class="Fn">sigaltstack1</code></a>(<var class="Fa">l</var>,
- <var class="Fa">nss</var>, <var class="Fa">oss</var>)</dt>
- <dd>
- <p class="Pp">This function implements the <a class="Xr">sigaltstack(2)</a>
- system call.</p>
- </dd>
- <dt id="pgsignal"><a class="permalink" href="#pgsignal"><code class="Fn">pgsignal</code></a>(<var class="Fa">pgrp</var>,
- <var class="Fa">signum</var>, <var class="Fa">checkctty</var>)</dt>
- <dd>
- <p class="Pp" id="kpgsignal">This is a wrapper function for
- <a class="permalink" href="#kpgsignal"><code class="Fn">kpgsignal</code></a>()
- which is described below.</p>
- </dd>
- <dt><code class="Fn">kpgsignal</code>(<var class="Fa">pgrp</var>,
- <var class="Fa">ks</var>, <var class="Fa">data</var>,
- <var class="Fa">checkctty</var>)</dt>
- <dd>
- <p class="Pp" id="kpsignal">Schedule the signal
- <var class="Fa">ks-&gt;ksi_signo</var> to be delivered to all members of
- the process group <var class="Fa">pgrp</var>. If
- <var class="Fa">checkctty</var> is non-zero, the signal is only sent to
- processes which have a controlling terminal. The
- <var class="Fa">data</var> argument and the complete signal scheduling
- semantics are described in the
- <a class="permalink" href="#kpsignal"><code class="Fn">kpsignal</code></a>()
- function below.</p>
- </dd>
- <dt id="trapsignal"><a class="permalink" href="#trapsignal"><code class="Fn">trapsignal</code></a>(<var class="Fa">l</var>,
- <var class="Fa">ks</var>)</dt>
- <dd>
- <p class="Pp">Sends the signal <var class="Fa">ks-&gt;ksi_signo</var> caused
- by a hardware trap to the current process.</p>
- </dd>
- <dt id="psignal"><a class="permalink" href="#psignal"><code class="Fn">psignal</code></a>(<var class="Fa">p</var>,
- <var class="Fa">signum</var>)</dt>
- <dd>
- <p class="Pp" id="kpsignal~2">This is a wrapper function for
- <a class="permalink" href="#kpsignal~2"><code class="Fn">kpsignal</code></a>()
- which is described below.</p>
- </dd>
- <dt><code class="Fn">kpsignal</code>(<var class="Fa">p</var>,
- <var class="Fa">ks</var>, <var class="Fa">data</var>)</dt>
- <dd>
- <p class="Pp">Schedule the signal <var class="Fa">ks-&gt;ksi_signo</var> to
- be delivered to the process <var class="Fa">p</var>. The
- <var class="Fa">data</var> argument, if not
- <code class="Dv">NULL</code>, points to the file descriptor data that
- caused the signal to be generated in the <code class="Li">SIGIO</code>
- case.</p>
- <p class="Pp" id="issignal">With a few exceptions noted below, the target
- process signal disposition is updated and is marked as runnable, so
- further handling of the signal is done in the context of the target
- process after a context switch; see
- <a class="permalink" href="#issignal"><code class="Fn">issignal</code></a>()
- below. Note that <code class="Fn">kpsignal</code>() does not by itself
- cause a context switch to happen.</p>
- <p class="Pp">The target process is not marked as runnable in the following
- cases:</p>
- <ul class="Bl-bullet Bd-indent">
- <li>The target process is sleeping uninterruptibly. The signal will be
- noticed when the process returns from the system call or trap.</li>
- <li>The target process is currently ignoring the signal.</li>
- <li>If a stop signal is sent to a sleeping process that takes the default
- action (see <a class="Xr">sigaction(2)</a>), the process is stopped
- without awakening it.</li>
- <li>SIGCONT restarts a stopped process (or puts them back to sleep)
- regardless of the signal action (e.g., blocked or ignored).</li>
- </ul>
- <p class="Pp" id="kpsignal~3">If the target process is being traced,
- <a class="permalink" href="#kpsignal~3"><code class="Fn">kpsignal</code></a>()
- behaves as if the target process were taking the default action for
- <var class="Fa">signum</var>. This allows the tracing process to be
- notified of the signal.</p>
- </dd>
- <dt><code class="Fn">issignal</code>(<var class="Fa">l</var>)</dt>
- <dd>
- <p class="Pp">This function determines which signal, if any, is to be posted
- to the current process. A signal is to be posted if:</p>
- <ul class="Bl-bullet Bd-indent">
- <li>The signal has a handler provided by the program image.</li>
- <li>The signal should cause the process to dump core and/or
- terminate.</li>
- <li>The signal should interrupt the current system call.</li>
- </ul>
- <p class="Pp" id="issignal~2">Signals which cause the process to be stopped
- are handled within
- <a class="permalink" href="#issignal~2"><code class="Fn">issignal</code></a>()
- directly.</p>
- <p class="Pp" id="issignal~3"><a class="permalink" href="#issignal~3"><code class="Fn">issignal</code></a>()
- should be called by machine-dependent code when returning to userspace
- from a system call or other trap or interrupt by using the following
- code:</p>
- <div class="Bd Pp Bd-indent Li">
- <pre>while (signum = CURSIG(curproc))
- postsig(signum);</pre>
- </div>
- </dd>
- <dt id="postsig"><a class="permalink" href="#postsig"><code class="Fn">postsig</code></a>(<var class="Fa">signum</var>)</dt>
- <dd>
- <p class="Pp" id="postsig~2">The
- <a class="permalink" href="#postsig~2"><code class="Fn">postsig</code></a>()
- function is used to invoke the action for the signal
- <var class="Fa">signum</var> in the current process. If the default
- action of a signal is to terminate the process, and the signal does not
- have a registered handler, the process exits using
- <code class="Fn">sigexit</code>(), dumping a core image if
- necessary.</p>
- </dd>
- <dt id="killproc"><a class="permalink" href="#killproc"><code class="Fn">killproc</code></a>(<var class="Fa">p</var>,
- <var class="Fa">why</var>)</dt>
- <dd>
- <p class="Pp">This function sends a SIGKILL signal to the specified process.
- The message provided by <var class="Fa">why</var> is sent to the system
- log and is also displayed on the process's controlling terminal.</p>
- </dd>
- <dt id="sigexit"><a class="permalink" href="#sigexit"><code class="Fn">sigexit</code></a>(<var class="Fa">l</var>,
- <var class="Fa">signum</var>)</dt>
- <dd>
- <p class="Pp">This function forces the current process to exit with the
- signal <var class="Fa">signum</var>, generating a core file if
- appropriate. No checks are made for masked or caught signals; the
- process always exits.</p>
- </dd>
- <dt id="sendsig~2"><a class="permalink" href="#sendsig~2"><code class="Fn">sendsig</code></a>(<var class="Fa">ks</var>,
- <var class="Fa">mask</var>)</dt>
- <dd>
- <p class="Pp" id="sendsig~3">This function is provided by machine-dependent
- code, and is used to invoke a signal handler for the current process.
- <a class="permalink" href="#sendsig~3"><code class="Fn">sendsig</code></a>()
- must prepare the registers and stack of the current process to invoke
- the signal handler stored in the process's <var class="Fa">struct
- sigacts</var>. This may include switching to an alternate signal stack
- specified by the process. The previous register, stack, and signal state
- are stored in a <var class="Fa">ucontext_t</var>, which is then copied
- out to the user's stack.</p>
- <p class="Pp">The registers and stack must be set up to invoke the signal
- handler as follows:</p>
- <div class="Bd Pp Bd-indent Li">
- <pre>(*handler)(int signum, siginfo_t *info, void *ctx)</pre>
- </div>
- <p class="Pp">where <var class="Fa">signum</var> is the signal number,
- <var class="Fa">info</var> contains additional signal specific
- information when <code class="Li">SA_SIGINFO</code> is specified when
- setting up the signal handler. <var class="Fa">ctx</var> is the pointer
- to <var class="Fa">ucontext_t</var> on the user's stack. The registers
- and stack must also arrange for the signal handler to return to the
- signal trampoline. The trampoline is then used to return to the code
- which was executing when the signal was delivered using the
- <a class="Xr">setcontext(2)</a> system call.</p>
- <p class="Pp" id="sendsig~4">For performance reasons, it is recommended that
- <a class="permalink" href="#sendsig~4"><code class="Fn">sendsig</code></a>()
- arrange for the signal handler to be invoked directly on architectures
- where it is convenient to do so. In this case, the trampoline is used
- only for the signal return path. If it is not feasible to directly
- invoke the signal handler, the trampoline is also used to invoke the
- handler, performing any final set up that was not possible for
- <code class="Fn">sendsig</code>() to perform.</p>
- <p class="Pp" id="sendsig~5"><a class="permalink" href="#sendsig~5"><code class="Fn">sendsig</code></a>()
- must invoke the signal trampoline with the correct ABI. The ABI of the
- signal trampoline is specified on a per-signal basis in the
- <a class="permalink" href="#sigacts"><code class="Fn" id="sigacts">sigacts</code></a>()
- structure for the process. Trampoline version 0 is reserved for the
- legacy kernel-provided, on-stack signal trampoline. All other trampoline
- versions indicate a specific trampoline ABI. This ABI is coordinated
- with machine-dependent code in the system C library.</p>
- </dd>
-</dl>
-<section class="Ss">
-<h2 class="Ss" id="SIGNAL_TRAMPOLINE"><a class="permalink" href="#SIGNAL_TRAMPOLINE">SIGNAL
- TRAMPOLINE</a></h2>
-<p class="Pp">The signal trampoline is a special piece of code which provides
- support for invoking the signal handlers for a process. The trampoline is
- used to return from the signal handler back to the code which was executing
- when the signal was delivered, and is also used to invoke the handler itself
- on architectures where it is not feasible to have the kernel invoke the
- handler directly.</p>
-<p class="Pp">In traditional <span class="Ux">UNIX</span> systems, the signal
- trampoline, also referred to as the &#x201C;sigcode&#x201D;, is provided by
- the kernel and copied to the top of the user's stack when a new process is
- created or a new program image is exec'd. Starting in
- <span class="Ux">NetBSD 2.0</span>, the signal trampoline is provided by the
- system C library. This allows for more flexibility when the signal facility
- is extended, makes dealing with signals easier in debuggers, such as
- <a class="Xr">gdb(1)</a>, and may also enhance system security by allowing
- the kernel to disallow execution of code on the stack.</p>
-<p class="Pp">The signal trampoline is specified on a per-signal basis. The
- correct trampoline is selected automatically by the C library when a signal
- handler is registered by a process.</p>
-<p class="Pp">Signal trampolines have a special naming convention which enables
- debuggers to determine the characteristics of the signal handler and its
- arguments. Trampoline functions are named like so:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>__sigtramp_&lt;flavor&gt;_&lt;version&gt;</pre>
-</div>
-<p class="Pp">where:</p>
-<dl class="Bl-tag">
- <dt>&#x27E8;flavor&#x27E9;</dt>
- <dd>The flavor of the signal handler. The following flavors are valid:
- <dl class="Bl-tag">
- <dt>sigcontext</dt>
- <dd>Specifies a traditional BSD-style (deprecated) signal handler with the
- following signature:
- <div class="Bd Pp Li">
- <pre>void (*handler)(int signum,
- int code,
- struct sigcontext *scp);</pre>
- </div>
- </dd>
- <dt>siginfo</dt>
- <dd>Specifies a POSIX-style signal handler with the following signature:
- <div class="Bd Pp Li">
- <pre>void (*handler)(int signum,
- siginfo_t *si,
- void *uc);</pre>
- </div>
- <p class="Pp">Note: sigcontext style signal handlers are deprecated, and
- retained only for compatibility with older binaries.</p>
- </dd>
- </dl>
- </dd>
- <dt id="sendsig~6">&#x27E8;version&#x27E9;</dt>
- <dd>Specifies the ABI version of the signal trampoline. The trampoline ABI is
- coordinated with the machine-dependent kernel
- <a class="permalink" href="#sendsig~6"><code class="Fn">sendsig</code></a>()
- function. The trampoline version needs to be unique even across different
- trampoline flavors, in order to simplify trampoline selection in the
- kernel.</dd>
-</dl>
-<p class="Pp">The following is an example if a signal trampoline name which
- indicates that the trampoline is used for traditional BSD-style signal
- handlers and implements version 1 of the signal trampoline ABI:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>__sigtramp_sigcontext_1</pre>
-</div>
-<p class="Pp">The current signal trampoline is:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>__sigtramp_siginfo_2</pre>
-</div>
-</section>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
- ALSO</a></h1>
-<p class="Pp"><a class="Xr">sigaction(2)</a>, <a class="Xr">signal(7)</a>,
- <a class="Xr">condvar(9)</a></p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 29, 2010</td>
- <td class="foot-os">NetBSD 10.1</td>
- </tr>
-</table>