diff options
Diffstat (limited to 'static/freebsd/man3/siginfo.3 3.html')
| -rw-r--r-- | static/freebsd/man3/siginfo.3 3.html | 528 |
1 files changed, 528 insertions, 0 deletions
diff --git a/static/freebsd/man3/siginfo.3 3.html b/static/freebsd/man3/siginfo.3 3.html new file mode 100644 index 00000000..fb0a09d2 --- /dev/null +++ b/static/freebsd/man3/siginfo.3 3.html @@ -0,0 +1,528 @@ +<table class="head"> + <tr> + <td class="head-ltitle">SIGINFO(3)</td> + <td class="head-vol">Library Functions Manual</td> + <td class="head-rtitle">SIGINFO(3)</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">siginfo</code> — <span class="Nd">signal + generation information</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 + <<a class="In">signal.h</a>></code></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> +<p class="Pp">A process may request signal information when it is catching a + signal. The information specifies why the system generated that signal. To + request signal information in a signal handler, the user can set + <code class="Dv">SA_SIGINFO</code> in <var class="Va">sa_flags</var> before + <a class="Xr">sigaction(2)</a> is called, otherwise the user can use + <a class="Xr">sigwaitinfo(2)</a> and <a class="Xr">sigtimedwait(2)</a> to + get signal information. In either case, the system returns the information + in a structure of type <var class="Vt">siginfo_t</var>, which includes the + following information:</p> +<table class="Bl-column"> + <tr id="Type"> + <td><a class="permalink" href="#Type"><b class="Sy">Type</b></a></td> + <td><a class="permalink" href="#Member"><b class="Sy" id="Member">Member</b></a></td> + <td><a class="permalink" href="#Description"><b class="Sy" id="Description">Description</b></a></td> + </tr> + <tr id="si_signo"> + <td><var class="Vt">int</var></td> + <td><var class="Va">si_signo</var></td> + <td>signal number</td> + </tr> + <tr id="si_errno"> + <td><var class="Vt">int</var></td> + <td><var class="Va">si_errno</var></td> + <td>error number</td> + </tr> + <tr id="si_code"> + <td><var class="Vt">int</var></td> + <td><var class="Va">si_code</var></td> + <td>signal code</td> + </tr> + <tr id="si_value"> + <td><var class="Vt">union sigval</var></td> + <td><var class="Va">si_value</var></td> + <td>signal value</td> + </tr> + <tr id="si_pid"> + <td><var class="Vt">pid_t</var></td> + <td><var class="Va">si_pid</var></td> + <td>sending process ID</td> + </tr> + <tr id="si_uid"> + <td><var class="Vt">uid_t</var></td> + <td><var class="Va">si_uid</var></td> + <td>sending process's real user ID</td> + </tr> + <tr id="*si_addr"> + <td><var class="Vt">void</var></td> + <td><var class="Va">*si_addr</var></td> + <td>virtual address</td> + </tr> + <tr id="si_status"> + <td><var class="Vt">int</var></td> + <td><var class="Va">si_status</var></td> + <td>exit value or signal</td> + </tr> + <tr id="si_band"> + <td><var class="Vt">long</var></td> + <td><var class="Va">si_band</var></td> + <td>band event for <code class="Dv">SIGPOLL</code></td> + </tr> + <tr id="si_trapno"> + <td><var class="Vt">int</var></td> + <td><var class="Va">si_trapno</var></td> + <td>machine trap code</td> + </tr> + <tr id="si_timerid"> + <td><var class="Vt">int</var></td> + <td><var class="Va">si_timerid</var></td> + <td>POSIX timer ID</td> + </tr> + <tr id="si_overrun"> + <td><var class="Vt">int</var></td> + <td><var class="Va">si_overrun</var></td> + <td>POSIX timer overrun count</td> + </tr> + <tr id="si_mqd"> + <td><var class="Vt">int</var></td> + <td><var class="Va">si_mqd</var></td> + <td>POSIX message queue ID</td> + </tr> + <tr id="si_syscall"> + <td><var class="Vt">int</var></td> + <td><var class="Va">si_syscall</var></td> + <td>system-call number for system calls blocked by Capsicum</td> + </tr> +</table> +<p class="Pp">The <var class="Va">si_signo</var> member contains the signal + number.</p> +<p class="Pp">The <var class="Va">si_errno</var> member contains an error number + defined in the file + <code class="In"><<a class="In">errno.h</a>></code>.</p> +<p class="Pp">The <var class="Va">si_code</var> member contains a code which + describes the cause of the signal. The macros specified in the + <b class="Sy">Code</b> column of the following table are defined for use as + values of <var class="Va">si_code</var> that are signal-specific or + non-signal-specific reasons why the signal was generated:</p> +<table class="Bl-column"> + <tr id="Signal"> + <td><a class="permalink" href="#Signal"><b class="Sy">Signal</b></a></td> + <td><a class="permalink" href="#Code"><b class="Sy" id="Code">Code</b></a></td> + <td><a class="permalink" href="#Reason"><b class="Sy" id="Reason">Reason</b></a></td> + </tr> + <tr id="SIGILL"> + <td><a class="permalink" href="#SIGILL"><code class="Dv">SIGILL</code></a></td> + <td><a class="permalink" href="#ILL_ILLOPC"><code class="Dv" id="ILL_ILLOPC">ILL_ILLOPC</code></a></td> + <td>illegal opcode</td> + </tr> + <tr id="ILL_ILLOPN"> + <td></td> + <td><a class="permalink" href="#ILL_ILLOPN"><code class="Dv">ILL_ILLOPN</code></a></td> + <td>illegal operand</td> + </tr> + <tr id="ILL_ILLADR"> + <td></td> + <td><a class="permalink" href="#ILL_ILLADR"><code class="Dv">ILL_ILLADR</code></a></td> + <td>illegal addressing mode</td> + </tr> + <tr id="ILL_ILLTRP"> + <td></td> + <td><a class="permalink" href="#ILL_ILLTRP"><code class="Dv">ILL_ILLTRP</code></a></td> + <td>illegal trap</td> + </tr> + <tr id="ILL_PRVOPC"> + <td></td> + <td><a class="permalink" href="#ILL_PRVOPC"><code class="Dv">ILL_PRVOPC</code></a></td> + <td>illegal privileged opcode</td> + </tr> + <tr id="ILL_PRVREG"> + <td></td> + <td><a class="permalink" href="#ILL_PRVREG"><code class="Dv">ILL_PRVREG</code></a></td> + <td>illegal privileged register</td> + </tr> + <tr id="ILL_COPROC"> + <td></td> + <td><a class="permalink" href="#ILL_COPROC"><code class="Dv">ILL_COPROC</code></a></td> + <td>coprocessor error</td> + </tr> + <tr id="ILL_BADSTK"> + <td></td> + <td><a class="permalink" href="#ILL_BADSTK"><code class="Dv">ILL_BADSTK</code></a></td> + <td>internal stack error</td> + </tr> + <tr id="SIGFPE"> + <td><a class="permalink" href="#SIGFPE"><code class="Dv">SIGFPE</code></a></td> + <td><a class="permalink" href="#FPE_INTDIV"><code class="Dv" id="FPE_INTDIV">FPE_INTDIV</code></a></td> + <td>integer divide by zero</td> + </tr> + <tr id="FPE_INTOVF"> + <td></td> + <td><a class="permalink" href="#FPE_INTOVF"><code class="Dv">FPE_INTOVF</code></a></td> + <td>integer overflow</td> + </tr> + <tr id="FPE_FLTDIV"> + <td></td> + <td><a class="permalink" href="#FPE_FLTDIV"><code class="Dv">FPE_FLTDIV</code></a></td> + <td>floating-point divide by zero</td> + </tr> + <tr id="FPE_FLTOVF"> + <td></td> + <td><a class="permalink" href="#FPE_FLTOVF"><code class="Dv">FPE_FLTOVF</code></a></td> + <td>floating-point overflow</td> + </tr> + <tr id="FPE_FLTUND"> + <td></td> + <td><a class="permalink" href="#FPE_FLTUND"><code class="Dv">FPE_FLTUND</code></a></td> + <td>floating-point underflow</td> + </tr> + <tr id="FPE_FLTRES"> + <td></td> + <td><a class="permalink" href="#FPE_FLTRES"><code class="Dv">FPE_FLTRES</code></a></td> + <td>floating-point inexact result</td> + </tr> + <tr id="FPE_FLTINV"> + <td></td> + <td><a class="permalink" href="#FPE_FLTINV"><code class="Dv">FPE_FLTINV</code></a></td> + <td>invalid floating-point operation</td> + </tr> + <tr id="FPE_FLTSUB"> + <td></td> + <td><a class="permalink" href="#FPE_FLTSUB"><code class="Dv">FPE_FLTSUB</code></a></td> + <td>subscript out of range</td> + </tr> + <tr id="SIGSEGV"> + <td><a class="permalink" href="#SIGSEGV"><code class="Dv">SIGSEGV</code></a></td> + <td><a class="permalink" href="#SEGV_MAPERR"><code class="Dv" id="SEGV_MAPERR">SEGV_MAPERR</code></a></td> + <td>address not mapped to object</td> + </tr> + <tr id="SEGV_ACCERR"> + <td></td> + <td><a class="permalink" href="#SEGV_ACCERR"><code class="Dv">SEGV_ACCERR</code></a></td> + <td>invalid permissions for mapped object</td> + </tr> + <tr id="SIGBUS"> + <td><a class="permalink" href="#SIGBUS"><code class="Dv">SIGBUS</code></a></td> + <td><a class="permalink" href="#BUS_ADRALN"><code class="Dv" id="BUS_ADRALN">BUS_ADRALN</code></a></td> + <td>invalid address alignment</td> + </tr> + <tr id="BUS_ADRERR"> + <td></td> + <td><a class="permalink" href="#BUS_ADRERR"><code class="Dv">BUS_ADRERR</code></a></td> + <td>nonexistent physical address</td> + </tr> + <tr id="BUS_OBJERR"> + <td></td> + <td><a class="permalink" href="#BUS_OBJERR"><code class="Dv">BUS_OBJERR</code></a></td> + <td>object-specific hardware error</td> + </tr> + <tr id="BUS_OOMERR"> + <td></td> + <td><a class="permalink" href="#BUS_OOMERR"><code class="Dv">BUS_OOMERR</code></a></td> + <td>cannot alloc a page to map at fault</td> + </tr> + <tr id="SIGTRAP"> + <td><a class="permalink" href="#SIGTRAP"><code class="Dv">SIGTRAP</code></a></td> + <td><a class="permalink" href="#TRAP_BRKPT"><code class="Dv" id="TRAP_BRKPT">TRAP_BRKPT</code></a></td> + <td>process breakpoint</td> + </tr> + <tr id="TRAP_TRACE"> + <td></td> + <td><a class="permalink" href="#TRAP_TRACE"><code class="Dv">TRAP_TRACE</code></a></td> + <td>process trace trap</td> + </tr> + <tr id="TRAP_DTRACE"> + <td></td> + <td><a class="permalink" href="#TRAP_DTRACE"><code class="Dv">TRAP_DTRACE</code></a></td> + <td>DTrace induced trap</td> + </tr> + <tr id="TRAP_CAP"> + <td></td> + <td><a class="permalink" href="#TRAP_CAP"><code class="Dv">TRAP_CAP</code></a></td> + <td>capabilities protective trap</td> + </tr> + <tr id="SIGCHLD"> + <td><a class="permalink" href="#SIGCHLD"><code class="Dv">SIGCHLD</code></a></td> + <td><a class="permalink" href="#CLD_EXITED"><code class="Dv" id="CLD_EXITED">CLD_EXITED</code></a></td> + <td>child has exited</td> + </tr> + <tr id="CLD_KILLED"> + <td></td> + <td><a class="permalink" href="#CLD_KILLED"><code class="Dv">CLD_KILLED</code></a></td> + <td>child has terminated abnormally and did not create a core file</td> + </tr> + <tr id="CLD_DUMPED"> + <td></td> + <td><a class="permalink" href="#CLD_DUMPED"><code class="Dv">CLD_DUMPED</code></a></td> + <td>child has terminated abnormally and created a core file</td> + </tr> + <tr id="CLD_TRAPPED"> + <td></td> + <td><a class="permalink" href="#CLD_TRAPPED"><code class="Dv">CLD_TRAPPED</code></a></td> + <td>traced child has trapped</td> + </tr> + <tr id="CLD_STOPPED"> + <td></td> + <td><a class="permalink" href="#CLD_STOPPED"><code class="Dv">CLD_STOPPED</code></a></td> + <td>child has stopped</td> + </tr> + <tr id="CLD_CONTINUED"> + <td></td> + <td><a class="permalink" href="#CLD_CONTINUED"><code class="Dv">CLD_CONTINUED</code></a></td> + <td>stopped child has continued</td> + </tr> + <tr id="SIGPOLL"> + <td><a class="permalink" href="#SIGPOLL"><code class="Dv">SIGPOLL</code></a></td> + <td><a class="permalink" href="#POLL_IN"><code class="Dv" id="POLL_IN">POLL_IN</code></a></td> + <td>data input available</td> + </tr> + <tr id="POLL_OUT"> + <td></td> + <td><a class="permalink" href="#POLL_OUT"><code class="Dv">POLL_OUT</code></a></td> + <td>output buffers available</td> + </tr> + <tr id="POLL_MSG"> + <td></td> + <td><a class="permalink" href="#POLL_MSG"><code class="Dv">POLL_MSG</code></a></td> + <td>input message available</td> + </tr> + <tr id="POLL_ERR"> + <td></td> + <td><a class="permalink" href="#POLL_ERR"><code class="Dv">POLL_ERR</code></a></td> + <td>I/O error</td> + </tr> + <tr id="POLL_PRI"> + <td></td> + <td><a class="permalink" href="#POLL_PRI"><code class="Dv">POLL_PRI</code></a></td> + <td>high priority input available</td> + </tr> + <tr id="POLL_HUP"> + <td></td> + <td><a class="permalink" href="#POLL_HUP"><code class="Dv">POLL_HUP</code></a></td> + <td>device disconnected</td> + </tr> + <tr id="SI_NOINFO"> + <td>Any</td> + <td><a class="permalink" href="#SI_NOINFO"><code class="Dv">SI_NOINFO</code></a></td> + <td>Only the <var class="Va">si_signo</var> member is meaningful; the value + of all other members is unspecified.</td> + </tr> + <tr id="SI_USER"> + <td></td> + <td><a class="permalink" href="#SI_USER"><code class="Dv">SI_USER</code></a></td> + <td>signal sent by <a class="Xr">kill(2)</a></td> + </tr> + <tr id="SI_QUEUE"> + <td></td> + <td><a class="permalink" href="#SI_QUEUE"><code class="Dv">SI_QUEUE</code></a></td> + <td>signal sent by <a class="Xr">sigqueue(2)</a></td> + </tr> + <tr id="SI_TIMER"> + <td></td> + <td><a class="permalink" href="#SI_TIMER"><code class="Dv">SI_TIMER</code></a></td> + <td>signal generated by expiration of a timer set by + <a class="Xr">timer_settime(2)</a></td> + </tr> + <tr id="SI_ASYNCIO"> + <td></td> + <td><a class="permalink" href="#SI_ASYNCIO"><code class="Dv">SI_ASYNCIO</code></a></td> + <td>signal generated by completion of an asynchronous I/O request</td> + </tr> + <tr id="SI_MESGQ"> + <td></td> + <td><a class="permalink" href="#SI_MESGQ"><code class="Dv">SI_MESGQ</code></a></td> + <td>signal generated by arrival of a message on an empty message queue</td> + </tr> + <tr id="SI_KERNEL"> + <td></td> + <td><a class="permalink" href="#SI_KERNEL"><code class="Dv">SI_KERNEL</code></a></td> + <td>signal generated by miscellaneous parts of the kernel</td> + </tr> + <tr id="SI_LWP"> + <td></td> + <td><a class="permalink" href="#SI_LWP"><code class="Dv">SI_LWP</code></a></td> + <td>signal sent by <a class="Xr">pthread_kill(3)</a></td> + </tr> +</table> +<p class="Pp">For synchronous signals, <var class="Va">si_addr</var> is + generally set to the address of the faulting instruction. However, + synchronous signals raised by a faulting memory access such as + <code class="Dv">SIGSEGV</code> and <code class="Dv">SIGBUS</code> may + report the address of the faulting memory access (if available) in + <var class="Va">si_addr</var> instead. Additionally + <code class="Dv">SIGTRAP</code> raised by a hardware watchpoint exception + may report the data address that triggered the watchpoint in + <var class="Va">si_addr</var>.</p> +<p class="Pp">Synchronous signals set <var class="Va">si_trapno</var> to a + machine-dependent trap number.</p> +<p class="Pp">In addition, the following signal-specific information is + available:</p> +<table class="Bl-column"> + <tr id="Signal~2"> + <td><a class="permalink" href="#Signal~2"><b class="Sy">Signal</b></a></td> + <td><a class="permalink" href="#Member~2"><b class="Sy" id="Member~2">Member</b></a></td> + <td><a class="permalink" href="#Value"><b class="Sy" id="Value">Value</b></a></td> + </tr> + <tr id="SIGCHLD~2"> + <td><a class="permalink" href="#SIGCHLD~2"><code class="Dv">SIGCHLD</code></a></td> + <td><var class="Va">si_pid</var></td> + <td>child process ID</td> + </tr> + <tr id="si_status~2"> + <td></td> + <td><var class="Va">si_status</var></td> + <td>exit value or signal; if <var class="Va">si_code</var> is equal to + <code class="Dv">CLD_EXITED</code>, then it is equal to the exit value of + the child process, otherwise, it is equal to a signal that caused the + child process to change state.</td> + </tr> + <tr id="si_uid~2"> + <td></td> + <td><var class="Va">si_uid</var></td> + <td>real user ID of the process that sent the signal</td> + </tr> + <tr id="SIGPOLL~2"> + <td><a class="permalink" href="#SIGPOLL~2"><code class="Dv">SIGPOLL</code></a></td> + <td><var class="Va">si_band</var></td> + <td>band event for <code class="Dv">POLL_IN</code>, + <code class="Dv">POLL_OUT</code>, or <code class="Dv">POLL_MSG</code></td> + </tr> +</table> +<p class="Pp">Finally, the following code-specific information is available:</p> +<table class="Bl-column"> + <tr id="Code~2"> + <td><a class="permalink" href="#Code~2"><b class="Sy">Code</b></a></td> + <td><a class="permalink" href="#Member~3"><b class="Sy" id="Member~3">Member</b></a></td> + <td><a class="permalink" href="#Value~2"><b class="Sy" id="Value~2">Value</b></a></td> + </tr> + <tr id="SI_USER~2"> + <td><a class="permalink" href="#SI_USER~2"><code class="Dv">SI_USER</code></a></td> + <td><var class="Va">si_pid</var></td> + <td>the process ID that sent the signal</td> + </tr> + <tr id="si_uid~3"> + <td></td> + <td><var class="Va">si_uid</var></td> + <td>real user ID of the process that sent the signal</td> + </tr> + <tr id="SI_QUEUE~2"> + <td><a class="permalink" href="#SI_QUEUE~2"><code class="Dv">SI_QUEUE</code></a></td> + <td><var class="Va">si_value</var></td> + <td>the value passed to <a class="Xr">sigqueue(2)</a> system call</td> + </tr> + <tr id="si_pid~2"> + <td></td> + <td><var class="Va">si_pid</var></td> + <td>the process ID that sent the signal</td> + </tr> + <tr id="si_uid~4"> + <td></td> + <td><var class="Va">si_uid</var></td> + <td>real user ID of the process that sent the signal</td> + </tr> + <tr id="SI_TIMER~2"> + <td><a class="permalink" href="#SI_TIMER~2"><code class="Dv">SI_TIMER</code></a></td> + <td><var class="Va">si_value</var></td> + <td>the value passed to <a class="Xr">timer_create(2)</a> system call</td> + </tr> + <tr id="si_timerid~2"> + <td></td> + <td><var class="Va">si_timerid</var></td> + <td>the timer ID returned by <a class="Xr">timer_create(2)</a> system + call</td> + </tr> + <tr id="si_overrun~2"> + <td></td> + <td><var class="Va">si_overrun</var></td> + <td>timer overrun count corresponding to the signal</td> + </tr> + <tr id="si_errno~2"> + <td></td> + <td><var class="Va">si_errno</var></td> + <td>If timer overrun will be {<code class="Dv">DELAYTIMER_MAX</code>}, an + error code defined in + <code class="In"><<a class="In">errno.h</a>></code> is set</td> + </tr> + <tr id="SI_ASYNCIO~2"> + <td><a class="permalink" href="#SI_ASYNCIO~2"><code class="Dv">SI_ASYNCIO</code></a></td> + <td><var class="Va">si_value</var></td> + <td>the value passed to aio system calls</td> + </tr> + <tr id="SI_MESGQ~2"> + <td><a class="permalink" href="#SI_MESGQ~2"><code class="Dv">SI_MESGQ</code></a></td> + <td><var class="Va">si_value</var></td> + <td>the value passed to <a class="Xr">mq_notify(2)</a> system call</td> + </tr> + <tr id="si_mqd~2"> + <td></td> + <td><var class="Va">si_mqd</var></td> + <td>the ID of the message queue which generated the signal</td> + </tr> + <tr id="SI_LWP~2"> + <td><a class="permalink" href="#SI_LWP~2"><code class="Dv">SI_LWP</code></a></td> + <td><var class="Va">si_pid</var></td> + <td>the process ID that sent the signal</td> + </tr> + <tr id="si_uid~5"> + <td></td> + <td><var class="Va">si_uid</var></td> + <td>real user ID of the process that sent the signal</td> + </tr> +</table> +</section> +<section class="Sh"> +<h1 class="Sh" id="NOTES"><a class="permalink" href="#NOTES">NOTES</a></h1> +<p class="Pp">Currently, the kernel never generates the + <code class="Dv">SIGPOLL</code> signal. <code class="Dv">SIGCHLD</code> + signal is queued when a process changed its status or exited. POSIX Realtime + Extensions like aio, timer, and message queue also queue signals. Signals + with code <code class="Dv">SI_USER</code>, <code class="Dv">SI_KERNEL</code> + or <code class="Dv">SI_LWP</code> are only queued if there are sufficient + resources; otherwise, <code class="Dv">SI_NOINFO</code> results. For some + hardware architectures, the exact value of <var class="Va">si_addr</var> + might not be available.</p> +</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">aio_read(2)</a>, <a class="Xr">kill(2)</a>, + <a class="Xr">mq_notify(2)</a>, <a class="Xr">sigaction(2)</a>, + <a class="Xr">sigqueue(2)</a>, <a class="Xr">sigwaitinfo(2)</a>, + <a class="Xr">timer_create(2)</a>, <a class="Xr">timer_settime(2)</a>, + <a class="Xr">waitpid(2)</a>, <a class="Xr">pthread_kill(3)</a></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1> +<p class="Pp">The <var class="Vt">siginfo_t</var> type conforms to + <span class="St">IEEE Std 1003.1-2004 (“POSIX.1”)</span>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> +<p class="Pp">Full support for POSIX signal information first appeared in + <span class="Ux">FreeBSD 7.0</span>. The codes + <code class="Dv">SI_USER</code> and <code class="Dv">SI_KERNEL</code> can be + generated as of <span class="Ux">FreeBSD 8.1</span>. The code + <code class="Dv">SI_LWP</code> can be generated as of + <span class="Ux">FreeBSD 9.0</span>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1> +<p class="Pp">This manual page was written by <span class="An">David Xu</span> + <<a class="Mt" href="mailto:davidxu@FreeBSD.org">davidxu@FreeBSD.org</a>>.</p> +</section> +</div> +<table class="foot"> + <tr> + <td class="foot-date">February 17, 2021</td> + <td class="foot-os">FreeBSD 15.0</td> + </tr> +</table> |
