summaryrefslogtreecommitdiff
path: root/static/freebsd/man3
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:59:05 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:59:05 -0400
commit1f19f33e45791ea59aed048796fc68672c6723a5 (patch)
tree54625fba89e91d1c2177801ec635e8528bba937f /static/freebsd/man3
parentac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (diff)
docs: Removed Precompiled HTML
Diffstat (limited to 'static/freebsd/man3')
-rw-r--r--static/freebsd/man3/ATOMIC_VAR_INIT.3 3.html315
-rw-r--r--static/freebsd/man3/CMSG_DATA.3 3.html211
-rw-r--r--static/freebsd/man3/Q_FRAWMASK.3 3.html101
-rw-r--r--static/freebsd/man3/Q_IFRAWMASK.3 3.html133
-rw-r--r--static/freebsd/man3/Q_INI.3 3.html216
-rw-r--r--static/freebsd/man3/Q_IRAWMASK.3 3.html101
-rw-r--r--static/freebsd/man3/Q_QABS.3 4.html84
-rw-r--r--static/freebsd/man3/Q_QADDI.3 3.html113
-rw-r--r--static/freebsd/man3/Q_QADDQ.3 3.html144
-rw-r--r--static/freebsd/man3/Q_SIGNED.3 3.html158
-rw-r--r--static/freebsd/man3/Q_SIGNSHFT.3 3.html120
-rw-r--r--static/freebsd/man3/alloca.3 3.html84
-rw-r--r--static/freebsd/man3/arb.3 3.html550
-rw-r--r--static/freebsd/man3/assert.3 3.html109
-rw-r--r--static/freebsd/man3/bitstring.3 3.html380
-rw-r--r--static/freebsd/man3/end.3 4.html61
-rw-r--r--static/freebsd/man3/fpgetround.3 4.html161
-rw-r--r--static/freebsd/man3/intro.3 3.html262
-rw-r--r--static/freebsd/man3/makedev.3 3.html88
-rw-r--r--static/freebsd/man3/offsetof.3 4.html46
-rw-r--r--static/freebsd/man3/pthread.3 3.html466
-rw-r--r--static/freebsd/man3/pthread_affinity_np.3 3.html138
-rw-r--r--static/freebsd/man3/pthread_atfork.3 3.html95
-rw-r--r--static/freebsd/man3/pthread_attr.3 3.html272
-rw-r--r--static/freebsd/man3/pthread_attr_affinity_np.3 3.html140
-rw-r--r--static/freebsd/man3/pthread_attr_get_np.3 3.html122
-rw-r--r--static/freebsd/man3/pthread_attr_setcreatesuspend_np.3 3.html77
-rw-r--r--static/freebsd/man3/pthread_barrier_destroy.3 3.html131
-rw-r--r--static/freebsd/man3/pthread_barrierattr.3 3.html126
-rw-r--r--static/freebsd/man3/pthread_cancel.3 3.html94
-rw-r--r--static/freebsd/man3/pthread_cleanup_pop.3 4.html71
-rw-r--r--static/freebsd/man3/pthread_cleanup_push.3 4.html72
-rw-r--r--static/freebsd/man3/pthread_cond_broadcast.3 4.html73
-rw-r--r--static/freebsd/man3/pthread_cond_destroy.3 4.html80
-rw-r--r--static/freebsd/man3/pthread_cond_init.3 3.html82
-rw-r--r--static/freebsd/man3/pthread_cond_signal.3 4.html73
-rw-r--r--static/freebsd/man3/pthread_cond_timedwait.3 3.html93
-rw-r--r--static/freebsd/man3/pthread_cond_wait.3 3.html92
-rw-r--r--static/freebsd/man3/pthread_condattr.3 3.html154
-rw-r--r--static/freebsd/man3/pthread_create.3 3.html118
-rw-r--r--static/freebsd/man3/pthread_detach.3 3.html77
-rw-r--r--static/freebsd/man3/pthread_equal.3 4.html65
-rw-r--r--static/freebsd/man3/pthread_exit.3 3.html94
-rw-r--r--static/freebsd/man3/pthread_getconcurrency.3 3.html98
-rw-r--r--static/freebsd/man3/pthread_getcpuclockid.3 4.html83
-rw-r--r--static/freebsd/man3/pthread_getspecific.3 3.html80
-rw-r--r--static/freebsd/man3/pthread_getthreadid_np.3 4.html63
-rw-r--r--static/freebsd/man3/pthread_join.3 3.html155
-rw-r--r--static/freebsd/man3/pthread_key_create.3 3.html96
-rw-r--r--static/freebsd/man3/pthread_key_delete.3 3.html86
-rw-r--r--static/freebsd/man3/pthread_kill.3 4.html74
-rw-r--r--static/freebsd/man3/pthread_main_np.3 4.html63
-rw-r--r--static/freebsd/man3/pthread_multi_np.3 4.html68
-rw-r--r--static/freebsd/man3/pthread_mutex_consistent.3 3.html88
-rw-r--r--static/freebsd/man3/pthread_mutex_destroy.3 4.html72
-rw-r--r--static/freebsd/man3/pthread_mutex_init.3 3.html76
-rw-r--r--static/freebsd/man3/pthread_mutex_lock.3 3.html83
-rw-r--r--static/freebsd/man3/pthread_mutex_timedlock.3 3.html103
-rw-r--r--static/freebsd/man3/pthread_mutex_trylock.3 3.html83
-rw-r--r--static/freebsd/man3/pthread_mutex_unlock.3 3.html81
-rw-r--r--static/freebsd/man3/pthread_mutexattr.3 3.html307
-rw-r--r--static/freebsd/man3/pthread_mutexattr_getkind_np.3 3.html82
-rw-r--r--static/freebsd/man3/pthread_np.3 3.html179
-rw-r--r--static/freebsd/man3/pthread_once.3 3.html84
-rw-r--r--static/freebsd/man3/pthread_resume_all_np.3 4.html54
-rw-r--r--static/freebsd/man3/pthread_resume_np.3 3.html76
-rw-r--r--static/freebsd/man3/pthread_rwlock_destroy.3 4.html82
-rw-r--r--static/freebsd/man3/pthread_rwlock_init.3 3.html96
-rw-r--r--static/freebsd/man3/pthread_rwlock_rdlock.3 3.html119
-rw-r--r--static/freebsd/man3/pthread_rwlock_timedrdlock.3 3.html112
-rw-r--r--static/freebsd/man3/pthread_rwlock_timedwrlock.3 3.html104
-rw-r--r--static/freebsd/man3/pthread_rwlock_unlock.3 3.html82
-rw-r--r--static/freebsd/man3/pthread_rwlock_wrlock.3 3.html106
-rw-r--r--static/freebsd/man3/pthread_rwlockattr_destroy.3 3.html74
-rw-r--r--static/freebsd/man3/pthread_rwlockattr_getpshared.3 3.html86
-rw-r--r--static/freebsd/man3/pthread_rwlockattr_init.3 4.html75
-rw-r--r--static/freebsd/man3/pthread_rwlockattr_setpshared.3 3.html89
-rw-r--r--static/freebsd/man3/pthread_schedparam.3 3.html99
-rw-r--r--static/freebsd/man3/pthread_self.3 4.html61
-rw-r--r--static/freebsd/man3/pthread_set_name_np.3 3.html110
-rw-r--r--static/freebsd/man3/pthread_setspecific.3 3.html91
-rw-r--r--static/freebsd/man3/pthread_sigmask.3 3.html88
-rw-r--r--static/freebsd/man3/pthread_signals_block_np.3 3.html94
-rw-r--r--static/freebsd/man3/pthread_sigqueue.3 3.html85
-rw-r--r--static/freebsd/man3/pthread_spin_init.3 3.html104
-rw-r--r--static/freebsd/man3/pthread_spin_lock.3 3.html122
-rw-r--r--static/freebsd/man3/pthread_suspend_all_np.3 4.html61
-rw-r--r--static/freebsd/man3/pthread_suspend_np.3 3.html82
-rw-r--r--static/freebsd/man3/pthread_testcancel.3 3.html302
-rw-r--r--static/freebsd/man3/pthread_yield.3 4.html51
-rw-r--r--static/freebsd/man3/qmath.3 3.html606
-rw-r--r--static/freebsd/man3/queue.3 3.html1187
-rw-r--r--static/freebsd/man3/sigevent.3 3.html134
-rw-r--r--static/freebsd/man3/siginfo.3 3.html528
-rw-r--r--static/freebsd/man3/snl.3 3.html395
-rw-r--r--static/freebsd/man3/stats.3 3.html725
-rw-r--r--static/freebsd/man3/stdarg.3 3.html182
-rw-r--r--static/freebsd/man3/stdbit.3 4.html136
-rw-r--r--static/freebsd/man3/stdckdint.3 3.html106
-rw-r--r--static/freebsd/man3/sysexits.3 3.html136
-rw-r--r--static/freebsd/man3/tgmath.3 3.html262
-rw-r--r--static/freebsd/man3/timeradd.3 4.html152
-rw-r--r--static/freebsd/man3/tree.3 3.html818
103 files changed, 0 insertions, 16218 deletions
diff --git a/static/freebsd/man3/ATOMIC_VAR_INIT.3 3.html b/static/freebsd/man3/ATOMIC_VAR_INIT.3 3.html
deleted file mode 100644
index 5149c119..00000000
--- a/static/freebsd/man3/ATOMIC_VAR_INIT.3 3.html
+++ /dev/null
@@ -1,315 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">ATOMIC_VAR_INIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">ATOMIC_VAR_INIT(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">ATOMIC_VAR_INIT</code>,
- <code class="Nm">atomic_init</code>, <code class="Nm">atomic_load</code>,
- <code class="Nm">atomic_store</code>,
- <code class="Nm">atomic_exchange</code>,
- <code class="Nm">atomic_compare_exchange_strong</code>,
- <code class="Nm">atomic_compare_exchange_weak</code>,
- <code class="Nm">atomic_fetch_add</code>,
- <code class="Nm">atomic_fetch_and</code>,
- <code class="Nm">atomic_fetch_or</code>,
- <code class="Nm">atomic_fetch_sub</code>,
- <code class="Nm">atomic_fetch_xor</code>,
- <code class="Nm">atomic_is_lock_free</code> &#x2014;
- <span class="Nd">type-generic atomic operations</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">stdatomic.h</a>&gt;</code></p>
-<p class="Pp">_Atomic(T) <var class="Fa">v</var> = ATOMIC_VAR_INIT(c);
- <br/>
- <var class="Ft">void</var>
- <br/>
- <code class="Fn">atomic_init</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- value</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_load</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_load_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">memory_order
- order</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">atomic_store</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- desired</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">atomic_store_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T desired</var>,
- <var class="Fa" style="white-space: nowrap;">memory_order order</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_exchange</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- desired</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_exchange_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T desired</var>,
- <var class="Fa" style="white-space: nowrap;">memory_order order</var>);</p>
-<p class="Pp"><var class="Ft">_Bool</var>
- <br/>
- <code class="Fn">atomic_compare_exchange_strong</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- *expected</var>, <var class="Fa" style="white-space: nowrap;">T
- desired</var>);</p>
-<p class="Pp"><var class="Ft">_Bool</var>
- <br/>
- <code class="Fn">atomic_compare_exchange_strong_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- *expected</var>, <var class="Fa" style="white-space: nowrap;">T
- desired</var>, <var class="Fa" style="white-space: nowrap;">memory_order
- success</var>, <var class="Fa" style="white-space: nowrap;">memory_order
- failure</var>);</p>
-<p class="Pp"><var class="Ft">_Bool</var>
- <br/>
- <code class="Fn">atomic_compare_exchange_weak</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- *expected</var>, <var class="Fa" style="white-space: nowrap;">T
- desired</var>);</p>
-<p class="Pp"><var class="Ft">_Bool</var>
- <br/>
- <code class="Fn">atomic_compare_exchange_weak_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- *expected</var>, <var class="Fa" style="white-space: nowrap;">T
- desired</var>, <var class="Fa" style="white-space: nowrap;">memory_order
- success</var>, <var class="Fa" style="white-space: nowrap;">memory_order
- failure</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_add</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- operand</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_add_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T operand</var>,
- <var class="Fa" style="white-space: nowrap;">memory_order order</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_and</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- operand</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_and_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T operand</var>,
- <var class="Fa" style="white-space: nowrap;">memory_order order</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_or</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- operand</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_or_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T operand</var>,
- <var class="Fa" style="white-space: nowrap;">memory_order order</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_sub</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- operand</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_sub_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T operand</var>,
- <var class="Fa" style="white-space: nowrap;">memory_order order</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_xor</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T
- operand</var>);</p>
-<p class="Pp"><var class="Ft">T</var>
- <br/>
- <code class="Fn">atomic_fetch_xor_explicit</code>(<var class="Fa" style="white-space: nowrap;">_Atomic(T)
- *object</var>, <var class="Fa" style="white-space: nowrap;">T operand</var>,
- <var class="Fa" style="white-space: nowrap;">memory_order order</var>);</p>
-<p class="Pp"><var class="Ft">_Bool</var>
- <br/>
- <code class="Fn">atomic_is_lock_free</code>(<var class="Fa" style="white-space: nowrap;">const
- _Atomic(T) *object</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The header
- <code class="In">&lt;<a class="In">stdatomic.h</a>&gt;</code> provides
- type-generic macros for atomic operations. Atomic operations can be used by
- multithreaded programs to provide shared variables between threads that in
- most cases may be modified without acquiring locks.</p>
-<p class="Pp" id="_Atomic">Atomic variables are declared using the
- <a class="permalink" href="#_Atomic"><code class="Fn">_Atomic</code></a>()
- type specifier. These variables are not type-compatible with their
- non-atomic counterparts. Depending on the compiler used, atomic variables
- may be opaque and can therefore only be influenced using the macros
- described.</p>
-<p class="Pp" id="atomic_init">The
- <a class="permalink" href="#atomic_init"><code class="Fn">atomic_init</code></a>()
- macro initializes the atomic variable <var class="Fa">object</var> with a
- <var class="Fa">value</var>. Atomic variables can be initialized while being
- declared using
- <a class="permalink" href="#ATOMIC_VAR_INIT"><code class="Fn" id="ATOMIC_VAR_INIT">ATOMIC_VAR_INIT</code></a>().</p>
-<p class="Pp" id="atomic_load">The
- <a class="permalink" href="#atomic_load"><code class="Fn">atomic_load</code></a>()
- macro returns the value of atomic variable <var class="Fa">object</var>. The
- <a class="permalink" href="#atomic_store"><code class="Fn" id="atomic_store">atomic_store</code></a>()
- macro sets the atomic variable <var class="Fa">object</var> to its
- <var class="Fa">desired</var> value.</p>
-<p class="Pp" id="atomic_exchange">The
- <a class="permalink" href="#atomic_exchange"><code class="Fn">atomic_exchange</code></a>()
- macro combines the behaviour of <code class="Fn">atomic_load</code>() and
- <code class="Fn">atomic_store</code>(). It sets the atomic variable
- <var class="Fa">object</var> to its desired <var class="Fa">value</var> and
- returns the original contents of the atomic variable.</p>
-<p class="Pp" id="atomic_compare_exchange_strong">The
- <a class="permalink" href="#atomic_compare_exchange_strong"><code class="Fn">atomic_compare_exchange_strong</code></a>()
- macro stores a <var class="Fa">desired</var> value into atomic variable
- <var class="Fa">object</var>, only if the atomic variable is equal to its
- <var class="Fa">expected</var> value. Upon success, the macro returns
- <code class="Dv">true</code>. Upon failure, the
- <var class="Fa">desired</var> value is overwritten with the value of the
- atomic variable and <code class="Dv">false</code> is returned. The
- <a class="permalink" href="#atomic_compare_exchange_weak"><code class="Fn" id="atomic_compare_exchange_weak">atomic_compare_exchange_weak</code></a>()
- macro is identical to
- <code class="Fn">atomic_compare_exchange_strong</code>(), but is allowed to
- fail even if atomic variable <var class="Fa">object</var> is equal to its
- <var class="Fa">expected</var> value.</p>
-<p class="Pp" id="atomic_fetch_add">The
- <a class="permalink" href="#atomic_fetch_add"><code class="Fn">atomic_fetch_add</code></a>()
- macro adds the value <var class="Fa">operand</var> to atomic variable
- <var class="Fa">object</var> and returns the original contents of the atomic
- variable.</p>
-<p class="Pp" id="atomic_fetch_and">The
- <a class="permalink" href="#atomic_fetch_and"><code class="Fn">atomic_fetch_and</code></a>()
- macro applies the
- <a class="permalink" href="#and"><i class="Em" id="and">and</i></a> operator
- to atomic variable <var class="Fa">object</var> and
- <var class="Fa">operand</var> and stores the value into
- <var class="Fa">object</var>, while returning the original contents of the
- atomic variable.</p>
-<p class="Pp" id="atomic_fetch_or">The
- <a class="permalink" href="#atomic_fetch_or"><code class="Fn">atomic_fetch_or</code></a>()
- macro applies the
- <a class="permalink" href="#or"><i class="Em" id="or">or</i></a> operator to
- atomic variable <var class="Fa">object</var> and
- <var class="Fa">operand</var> and stores the value into
- <var class="Fa">object</var>, while returning the original contents of the
- atomic variable.</p>
-<p class="Pp" id="atomic_fetch_sub">The
- <a class="permalink" href="#atomic_fetch_sub"><code class="Fn">atomic_fetch_sub</code></a>()
- macro subtracts the value <var class="Fa">operand</var> from atomic variable
- <var class="Fa">object</var> and returns the original contents of the atomic
- variable.</p>
-<p class="Pp" id="atomic_fetch_xor">The
- <a class="permalink" href="#atomic_fetch_xor"><code class="Fn">atomic_fetch_xor</code></a>()
- macro applies the
- <a class="permalink" href="#xor"><i class="Em" id="xor">xor</i></a> operator
- to atomic variable <var class="Fa">object</var> and
- <var class="Fa">operand</var> and stores the value into
- <var class="Fa">object</var>, while returning the original contents of the
- atomic variable.</p>
-<p class="Pp" id="atomic_is_lock_free">The
- <a class="permalink" href="#atomic_is_lock_free"><code class="Fn">atomic_is_lock_free</code></a>()
- macro returns whether atomic variable <var class="Fa">object</var> uses
- locks when using atomic operations.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="BARRIERS"><a class="permalink" href="#BARRIERS">BARRIERS</a></h1>
-<p class="Pp">The atomic operations described previously are implemented in such
- a way that they disallow both the compiler and the executing processor to
- re-order any nearby memory operations across the atomic operation. In
- certain cases this behaviour may cause suboptimal performance. To mitigate
- this, every atomic operation has an <code class="Fn">_explicit</code>()
- version that allows the re-ordering to be configured.</p>
-<p class="Pp" id="_explicit">The <var class="Fa">order</var> parameter of these
- <a class="permalink" href="#_explicit"><code class="Fn">_explicit</code></a>()
- macros can have one of the following values.</p>
-<dl class="Bl-tag">
- <dt id="memory_order_relaxed"><a class="permalink" href="#memory_order_relaxed"><code class="Dv">memory_order_relaxed</code></a></dt>
- <dd>No operation orders memory.</dd>
- <dt id="memory_order_consume"><a class="permalink" href="#memory_order_consume"><code class="Dv">memory_order_consume</code></a></dt>
- <dd>Perform consume operation.</dd>
- <dt id="memory_order_acquire"><a class="permalink" href="#memory_order_acquire"><code class="Dv">memory_order_acquire</code></a></dt>
- <dd>Acquire fence.</dd>
- <dt id="memory_order_release"><a class="permalink" href="#memory_order_release"><code class="Dv">memory_order_release</code></a></dt>
- <dd>Release fence.</dd>
- <dt id="memory_order_acq_rel"><a class="permalink" href="#memory_order_acq_rel"><code class="Dv">memory_order_acq_rel</code></a></dt>
- <dd>Acquire and release fence.</dd>
- <dt id="memory_order_seq_cst"><a class="permalink" href="#memory_order_seq_cst"><code class="Dv">memory_order_seq_cst</code></a></dt>
- <dd>Sequentially consistent acquire and release fence.</dd>
-</dl>
-<p class="Pp" id="_explicit~2">The previously described macros are identical to
- the
- <a class="permalink" href="#_explicit~2"><code class="Fn">_explicit</code></a>()
- macros, when <var class="Fa">order</var> is
- <code class="Dv">memory_order_seq_cst</code>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="COMPILER_SUPPORT"><a class="permalink" href="#COMPILER_SUPPORT">COMPILER
- SUPPORT</a></h1>
-<p class="Pp">These atomic operations are typically implemented by the compiler,
- as they must be implemented type-generically and must often use special
- hardware instructions. As this interface has not been adopted by most
- compilers yet, the
- <code class="In">&lt;<a class="In">stdatomic.h</a>&gt;</code> header
- implements these macros on top of existing compiler intrinsics to provide
- forward compatibility.</p>
-<p class="Pp">This means that certain aspects of the interface, such as support
- for different barrier types may simply be ignored. When using GCC, all
- atomic operations are executed as if they are using
- <code class="Dv">memory_order_seq_cst</code>.</p>
-<p class="Pp">Instead of using the atomic operations provided by this interface,
- <span class="St">ISO/IEC 9899:2011 (&#x201C;ISO&#x00A0;C11&#x201D;)</span>
- allows the atomic variables to be modified directly using built-in language
- operators. This behaviour cannot be emulated for older compilers. To prevent
- unintended non-atomic access to these variables, this header file places the
- atomic variable in a structure when using an older compiler.</p>
-<p class="Pp">When using GCC on architectures on which it lacks support for
- built-in atomic intrinsics, these macros may emit function calls to fallback
- routines. These fallback routines are only implemented for 32-bits and
- 64-bits datatypes, if supported by the CPU.</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">pthread(3)</a>, <a class="Xr">atomic(9)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">These macros attempt to conform to <span class="St">ISO/IEC
- 9899:2011 (&#x201C;ISO&#x00A0;C11&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">These macros appeared in <span class="Ux">FreeBSD 10.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp"><span class="An">Ed Schouten</span>
- &lt;<a class="Mt" href="mailto:ed@FreeBSD.org">ed@FreeBSD.org</a>&gt;
- <br/>
- <span class="An">David Chisnall</span>
- &lt;<a class="Mt" href="mailto:theraven@FreeBSD.org">theraven@FreeBSD.org</a>&gt;</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">December 27, 2011</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/CMSG_DATA.3 3.html b/static/freebsd/man3/CMSG_DATA.3 3.html
deleted file mode 100644
index bbc6823b..00000000
--- a/static/freebsd/man3/CMSG_DATA.3 3.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">CMSG_DATA(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">CMSG_DATA(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">CMSG_DATA</code>,
- <code class="Nm">CMSG_FIRSTHDR</code>, <code class="Nm">CMSG_LEN</code>,
- <code class="Nm">CMSG_NXTHDR</code>, <code class="Nm">CMSG_SPACE</code>
- &#x2014; <span class="Nd">socket control message routines for ancillary data
- access</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/socket.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">unsigned char *</var>
- <br/>
- <code class="Fn">CMSG_DATA</code>(<var class="Fa" style="white-space: nowrap;">struct
- cmsghdr *</var>);</p>
-<p class="Pp"><var class="Ft">struct cmsghdr *</var>
- <br/>
- <code class="Fn">CMSG_FIRSTHDR</code>(<var class="Fa" style="white-space: nowrap;">struct
- msghdr *</var>);</p>
-<p class="Pp"><var class="Ft">size_t</var>
- <br/>
- <code class="Fn">CMSG_LEN</code>(<var class="Fa" style="white-space: nowrap;">size_t</var>);</p>
-<p class="Pp"><var class="Ft">struct cmsghdr *</var>
- <br/>
- <code class="Fn">CMSG_NXTHDR</code>(<var class="Fa" style="white-space: nowrap;">struct
- msghdr *</var>, <var class="Fa" style="white-space: nowrap;">struct cmsghdr
- *</var>);</p>
-<p class="Pp"><var class="Ft">size_t</var>
- <br/>
- <code class="Fn">CMSG_SPACE</code>(<var class="Fa" style="white-space: nowrap;">size_t</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The control message API is used to construct ancillary data
- objects for use in control messages sent and received across sockets.</p>
-<p class="Pp">Control messages are passed around by the
- <a class="Xr">recvmsg(2)</a> and <a class="Xr">sendmsg(2)</a> system calls.
- The <var class="Vt">cmsghdr</var> structure, described in
- <a class="Xr">recvmsg(2)</a>, is used to specify a chain of control
- messages.</p>
-<p class="Pp">These routines should be used instead of directly accessing the
- control message header members and data buffers as they ensure that
- necessary alignment constraints are met.</p>
-<p class="Pp">The following routines are provided:</p>
-<dl class="Bl-tag">
- <dt id="CMSG_DATA"><a class="permalink" href="#CMSG_DATA"><code class="Fn">CMSG_DATA</code></a>(<var class="Fa">cmsg</var>)</dt>
- <dd>This routine accesses the data portion of the control message header
- <var class="Fa">cmsg</var>. It ensures proper alignment constraints on the
- beginning of ancillary data are met.</dd>
- <dt id="CMSG_FIRSTHDR"><a class="permalink" href="#CMSG_FIRSTHDR"><code class="Fn">CMSG_FIRSTHDR</code></a>(<var class="Fa">msghdr</var>)</dt>
- <dd>This routine accesses the first control message attached to the message
- <var class="Fa">msghdr</var>. If no control messages are attached to the
- message, this routine returns <code class="Dv">NULL</code>.</dd>
- <dt id="CMSG_LEN"><a class="permalink" href="#CMSG_LEN"><code class="Fn">CMSG_LEN</code></a>(<var class="Fa">len</var>)</dt>
- <dd>This routine determines the size in bytes of a control message, which
- includes the control message header. <var class="Fa">len</var> specifies
- the length of the data held by the control message. This value is what is
- normally stored in the <var class="Fa">cmsg_len</var> of each control
- message. This routine accounts for any alignment constraints on the
- beginning of ancillary data.</dd>
- <dt id="CMSG_NXTHDR"><a class="permalink" href="#CMSG_NXTHDR"><code class="Fn">CMSG_NXTHDR</code></a>(<var class="Fa">msghdr</var>,
- <var class="Fa">cmsg</var>)</dt>
- <dd>This routine returns the location of the control message following
- <var class="Fa">cmsg</var> in the message <var class="Fa">msghdr</var>. If
- <var class="Fa">cmsg</var> is the last control message in the chain, this
- routine returns <code class="Dv">NULL</code>.</dd>
- <dt id="CMSG_SPACE"><a class="permalink" href="#CMSG_SPACE"><code class="Fn">CMSG_SPACE</code></a>(<var class="Fa">len</var>)</dt>
- <dd>This routine determines the size in bytes needed to hold a control message
- and its contents of length <var class="Fa">len</var>, which includes the
- control message header. This value is what is normally stored in
- <var class="Fa">msg_msgcontrollen</var>. This routine accounts for any
- alignment constraints on the beginning of ancillary data as well as any
- needed to pad the next control message.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<p class="Pp">The following example constructs a control message containing a
- file descriptor in the parent process and passes it over a pre-shared socket
- over the child process. Then the child process sends a &quot;hello&quot;
- string to the parent process using the received file descriptor.</p>
-<div class="Bd Pp Li">
-<pre>#include &lt;sys/socket.h&gt;
-
-#include &lt;err.h&gt;
-#include &lt;stdio.h&gt;
-#include &lt;string.h&gt;
-#include &lt;sysexits.h&gt;
-#include &lt;unistd.h&gt;
-
-#define HELLOLEN sizeof(&quot;hello&quot;)
-
-int
-main()
-{
- struct msghdr msg;
- union {
- struct cmsghdr hdr;
- unsigned char buf[CMSG_SPACE(sizeof(int))];
- } cmsgbuf;
- char buf[HELLOLEN];
- int hellofd[2];
- int presharedfd[2];
- struct cmsghdr *cmsg;
-
- if (socketpair(PF_LOCAL, SOCK_STREAM, 0, presharedfd) == -1)
- err(EX_OSERR, &quot;failed to create a pre-shared socket pair&quot;);
-
- memset(&amp;msg, 0, sizeof(msg));
- msg.msg_control = &amp;cmsgbuf.buf;
- msg.msg_controllen = sizeof(cmsgbuf.buf);
- msg.msg_iov = NULL;
- msg.msg_iovlen = 0;
-
- switch (fork()) {
- case -1:
- err(EX_OSERR, &quot;fork&quot;);
- case 0:
- close(presharedfd[0]);
- strlcpy(buf, &quot;hello&quot;, HELLOLEN);
-
- if (recvmsg(presharedfd[1], &amp;msg, 0) == -1)
- err(EX_IOERR, &quot;failed to receive a message&quot;);
- if (msg.msg_flags &amp; (MSG_CTRUNC | MSG_TRUNC))
- errx(EX_IOERR, &quot;control message truncated&quot;);
- for (cmsg = CMSG_FIRSTHDR(&amp;msg); cmsg != NULL;
- cmsg = CMSG_NXTHDR(&amp;msg, cmsg)) {
- if (cmsg-&gt;cmsg_len == CMSG_LEN(sizeof(int)) &amp;&amp;
- cmsg-&gt;cmsg_level == SOL_SOCKET &amp;&amp;
- cmsg-&gt;cmsg_type == SCM_RIGHTS) {
- hellofd[1] = *(int *)CMSG_DATA(cmsg);
- printf(&quot;child: sending '%s'\n&quot;, buf);
- if (write(hellofd[1], buf, HELLOLEN) == -1)
- err(EX_IOERR, &quot;failed to send 'hello'&quot;);
- }
- }
- break;
- default:
- close(presharedfd[1]);
-
- if (socketpair(PF_LOCAL, SOCK_STREAM, 0, hellofd) == -1)
- err(EX_OSERR, &quot;failed to create a 'hello' socket pair&quot;);
-
- cmsg = CMSG_FIRSTHDR(&amp;msg);
- cmsg-&gt;cmsg_len = CMSG_LEN(sizeof(int));
- cmsg-&gt;cmsg_level = SOL_SOCKET;
- cmsg-&gt;cmsg_type = SCM_RIGHTS;
- *(int *)CMSG_DATA(cmsg) = hellofd[1];
-
- if (sendmsg(presharedfd[0], &amp;msg, 0) == -1)
- err(EX_IOERR, &quot;sendmsg&quot;);
- close(hellofd[1]);
-
- if (read(hellofd[0], buf, HELLOLEN) == -1)
- err(EX_IOERR, &quot;failed to receive 'hello'&quot;);
- printf(&quot;parent: received '%s'\n&quot;, buf);
- break;
- }
-
- return (0);
-}</pre>
-</div>
-</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">recvmsg(2)</a>, <a class="Xr">sendmsg(2)</a>,
- <a class="Xr">socket(2)</a>, <a class="Xr">ip(4)</a>,
- <a class="Xr">ip6(4)</a>, <a class="Xr">unix(4)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<ul class="Bl-item">
- <li><cite class="Rs"><span class="RsA">W. Stevens</span> and
- <span class="RsA">M. Thomas</span>, <span class="RsT">Advanced Sockets API
- for IPv6</span>, <span class="RsR">RFC 2292</span>,
- <span class="RsD">February 1998</span>.</cite></li>
- <li><cite class="Rs"><span class="RsA">W. Stevens</span>, <span class="RsA">M.
- Thomas</span>, <span class="RsA">E. Nordmark</span>, and
- <span class="RsA">T. Jinmei</span>, <span class="RsT">Advanced Sockets
- Application Program Interface (API) for IPv6</span>, <span class="RsR">RFC
- 3542</span>, <span class="RsD">May 2003</span>.</cite></li>
-</ul>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The control message API first appeared in
- <span class="Ux">4.2BSD</span>. This manual page was originally written by
- <span class="An">Jared Yanovich</span>
- &lt;<a class="Mt" href="mailto:jaredy@OpenBSD.org">jaredy@OpenBSD.org</a>&gt;
- for <span class="Ux">OpenBSD 3.8</span> and eventually brought to
- <span class="Ux">FreeBSD 12.0</span> by <span class="An">Mateusz
- Piotrowski</span>
- &lt;<a class="Mt" href="mailto:0mp@FreeBSD.org">0mp@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">March 13, 2020</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/Q_FRAWMASK.3 3.html b/static/freebsd/man3/Q_FRAWMASK.3 3.html
deleted file mode 100644
index 841a9deb..00000000
--- a/static/freebsd/man3/Q_FRAWMASK.3 3.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">Q_FRAWMASK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">Q_FRAWMASK(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">Q_FRAWMASK</code>,
- <code class="Nm">Q_GFRAW</code>, <code class="Nm">Q_GFABSVAL</code>,
- <code class="Nm">Q_GFVAL</code>, <code class="Nm">Q_SFVAL</code> &#x2014;
- <span class="Nd">fixed-point math functions which manipulate the fractional
- data bits</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/qmath.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_FRAWMASK</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GFRAW</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GFABSVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GFVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_SFVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE fv</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp"><a class="permalink" href="#Q_FRAWMASK"><code class="Fn" id="Q_FRAWMASK">Q_FRAWMASK</code></a>()
- returns a <var class="Fa">q</var>-specific bit mask for
- <var class="Fa">q</var>'s fractional data bits.</p>
-<p class="Pp" id="Q_GFRAW"><a class="permalink" href="#Q_GFRAW"><code class="Fn">Q_GFRAW</code></a>()
- returns <var class="Fa">q</var>'s raw masked fractional data bits.</p>
-<p class="Pp" id="Q_GFABSVAL"><a class="permalink" href="#Q_GFABSVAL"><code class="Fn">Q_GFABSVAL</code></a>()
- and
- <a class="permalink" href="#Q_GFVAL"><code class="Fn" id="Q_GFVAL">Q_GFVAL</code></a>()
- return the absolute and real values of <var class="Fa">q</var>'s fractional
- data bits respectively.</p>
-<p class="Pp" id="Q_SFVAL"><a class="permalink" href="#Q_SFVAL"><code class="Fn">Q_SFVAL</code></a>()
- sets <var class="Fa">q</var>'s fractional data bits to the value
- <var class="Fa">fv</var>.</p>
-<p class="Pp">All of those functions operate on the following data types:
- <var class="Vt">s8q_t</var>, <var class="Vt">u8q_t</var>,
- <var class="Vt">s16q_t</var>, <var class="Vt">u16q_t</var>,
- <var class="Vt">s32q_t</var>, <var class="Vt">u32q_t</var>,
- <var class="Vt">s64q_t</var>, and <var class="Vt">u64q_t</var>, which are
- referred to generically as <var class="Fa">QTYPE</var>. The
- <var class="Fa">ITYPE</var> refers to the <a class="Xr">stdint(7)</a>
- integer types.</p>
-<p class="Pp">For more details, see <a class="Xr">qmath(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp"><code class="Fn">Q_FRAWMASK</code>(),
- <code class="Fn">Q_GFRAW</code>(), <code class="Fn">Q_GFABSVAL</code>() and
- <code class="Fn">Q_GFVAL</code>() return their respective values as integers
- of the same underlying ITYPE as <var class="Fa">q</var>.</p>
-<p class="Pp"><code class="Fn">Q_SFVAL</code>() returns the value of
- <var class="Fa">q</var> post set.</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">errno(2)</a>, <a class="Xr">qmath(3)</a>,
- <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions and this manual page were
- written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 8, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/Q_IFRAWMASK.3 3.html b/static/freebsd/man3/Q_IFRAWMASK.3 3.html
deleted file mode 100644
index 1605bcdf..00000000
--- a/static/freebsd/man3/Q_IFRAWMASK.3 3.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">Q_IFRAWMASK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">Q_IFRAWMASK(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">Q_IFRAWMASK</code>,
- <code class="Nm">Q_IFVALIMASK</code>, <code class="Nm">Q_IFVALFMASK</code>,
- <code class="Nm">Q_GIFRAW</code>, <code class="Nm">Q_GIFABSVAL</code>,
- <code class="Nm">Q_GIFVAL</code>, <code class="Nm">Q_SIFVAL</code>,
- <code class="Nm">Q_SIFVALS</code> &#x2014; <span class="Nd">fixed-point math
- functions which manipulate the combined integer/fractional data
- bits</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/qmath.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_IFRAWMASK</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_IFVALIMASK</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_IFVALFMASK</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GIFRAW</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GIFABSVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GIFVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_SIFVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE ifv</var>);</p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_SIFVALS</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE iv</var>,
- <var class="Fa" style="white-space: nowrap;">ITYPE fv</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp"><a class="permalink" href="#Q_IFRAWMASK"><code class="Fn" id="Q_IFRAWMASK">Q_IFRAWMASK</code></a>()
- returns a <var class="Fa">q</var>-specific bit mask for
- <var class="Fa">q</var>'s combined integer and fractional data bits.</p>
-<p class="Pp" id="Q_IFVALIMASK"><a class="permalink" href="#Q_IFVALIMASK"><code class="Fn">Q_IFVALIMASK</code></a>()
- and
- <a class="permalink" href="#Q_IFVALFMASK"><code class="Fn" id="Q_IFVALFMASK">Q_IFVALFMASK</code></a>()
- return <var class="Fa">q</var>-specific bit masks for the integer and
- fractional bits of <var class="Fa">q</var>'s combined integer and fractional
- data bits value, i.e., are applicable to the values returned by
- <code class="Fn">Q_GIFABSVAL</code>() and
- <code class="Fn">Q_GIFVAL</code>().</p>
-<p class="Pp" id="Q_GIFRAW"><a class="permalink" href="#Q_GIFRAW"><code class="Fn">Q_GIFRAW</code></a>()
- returns <var class="Fa">q</var>'s raw masked integer/fractional data
- bits.</p>
-<p class="Pp" id="Q_GIFABSVAL"><a class="permalink" href="#Q_GIFABSVAL"><code class="Fn">Q_GIFABSVAL</code></a>()
- and
- <a class="permalink" href="#Q_GIFVAL"><code class="Fn" id="Q_GIFVAL">Q_GIFVAL</code></a>()
- return the absolute and real values of <var class="Fa">q</var>'s
- integer/fractional data bits respectively.</p>
-<p class="Pp" id="Q_SIFVAL"><a class="permalink" href="#Q_SIFVAL"><code class="Fn">Q_SIFVAL</code></a>()
- sets <var class="Fa">q</var>'s combined integer/fractional data bits to the
- value <var class="Fa">ifv</var>, whereas
- <a class="permalink" href="#Q_SIFVALS"><code class="Fn" id="Q_SIFVALS">Q_SIFVALS</code></a>()
- independently sets <var class="Fa">q</var>'s integer and fractional data
- bits to the separate values <var class="Fa">iv</var> and
- <var class="Fa">fv</var>.</p>
-<p class="Pp">All of those functions operate on the following data types:
- <var class="Vt">s8q_t</var>, <var class="Vt">u8q_t</var>,
- <var class="Vt">s16q_t</var>, <var class="Vt">u16q_t</var>,
- <var class="Vt">s32q_t</var>, <var class="Vt">u32q_t</var>,
- <var class="Vt">s64q_t</var>, and <var class="Vt">u64q_t</var>, which are
- referred to generically as <var class="Fa">QTYPE</var>. The
- <var class="Fa">ITYPE</var> refers to the <a class="Xr">stdint(7)</a>
- integer types.</p>
-<p class="Pp">For more details, see <a class="Xr">qmath(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp"><code class="Fn">Q_IFRAWMASK</code>(),
- <code class="Fn">Q_IFVALIMASK</code>(),
- <code class="Fn">Q_IFVALFMASK</code>(),
- <code class="Fn">Q_GIFABSVAL</code>(), <code class="Fn">Q_GIFVAL</code>(),
- <code class="Fn">Q_GIFRAW</code>(), <code class="Fn">Q_GIFABSVAL</code>()
- and <code class="Fn">Q_GIFVAL</code>() return their respective values as
- integers of the same underlying ITYPE as <var class="Fa">q</var>.</p>
-<p class="Pp"><code class="Fn">Q_SIFVAL</code>() and
- <code class="Fn">Q_SIFVALS</code>() return the value of
- <var class="Fa">q</var> post change.</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">errno(2)</a>, <a class="Xr">qmath(3)</a>,
- <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions and this manual page were
- written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 8, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/Q_INI.3 3.html b/static/freebsd/man3/Q_INI.3 3.html
deleted file mode 100644
index b02de100..00000000
--- a/static/freebsd/man3/Q_INI.3 3.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">Q_INI(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">Q_INI(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">Q_INI</code>, <code class="Nm">Q_NCBITS</code>,
- <code class="Nm">Q_BT</code>, <code class="Nm">Q_TC</code>,
- <code class="Nm">Q_NTBITS</code>, <code class="Nm">Q_NFCBITS</code>,
- <code class="Nm">Q_MAXNFBITS</code>, <code class="Nm">Q_NFBITS</code>,
- <code class="Nm">Q_NIBITS</code>, <code class="Nm">Q_RPSHFT</code>,
- <code class="Nm">Q_ABS</code>, <code class="Nm">Q_MAXSTRLEN</code>,
- <code class="Nm">Q_TOSTR</code>, <code class="Nm">Q_SHL</code>,
- <code class="Nm">Q_SHR</code>, <code class="Nm">Q_DEBUG</code> &#x2014;
- <span class="Nd">fixed-point math miscellaneous
- functions/variables</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/qmath.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_INI</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE iv</var>,
- <var class="Fa" style="white-space: nowrap;">ITYPE dfv</var>,
- <var class="Fa" style="white-space: nowrap;">int rpshft</var>);</p>
-<p class="Pp"><code class="Fd">Q_NCBITS</code></p>
-<p class="Pp"><var class="Ft">__typeof(q)</var>
- <br/>
- <code class="Fn">Q_BT</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_TC</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE v</var>);</p>
-<p class="Pp"><var class="Ft">uint32_t</var>
- <br/>
- <code class="Fn">Q_NTBITS</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">uint32_t</var>
- <br/>
- <code class="Fn">Q_NFCBITS</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">uint32_t</var>
- <br/>
- <code class="Fn">Q_MAXNFBITS</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">uint32_t</var>
- <br/>
- <code class="Fn">Q_NFBITS</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">uint32_t</var>
- <br/>
- <code class="Fn">Q_NIBITS</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">uint32_t</var>
- <br/>
- <code class="Fn">Q_RPSHFT</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">NTYPE</var>
- <br/>
- <code class="Fn">Q_ABS</code>(<var class="Fa" style="white-space: nowrap;">NTYPE
- n</var>);</p>
-<p class="Pp"><var class="Ft">uint32_t</var>
- <br/>
- <code class="Fn">Q_MAXSTRLEN</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">int base</var>);</p>
-<p class="Pp"><var class="Ft">char *</var>
- <br/>
- <code class="Fn">Q_TOSTR</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">int prec</var>,
- <var class="Fa" style="white-space: nowrap;">int base</var>,
- <var class="Fa" style="white-space: nowrap;">char *s</var>,
- <var class="Fa" style="white-space: nowrap;">int slen</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_SHL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE iv</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_SHR</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE iv</var>);</p>
-<p class="Pp"><var class="Ft">char *, ...</var>
- <br/>
- <code class="Fn">Q_DEBUG</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">char *prefmt</var>,
- <var class="Fa" style="white-space: nowrap;">char *postfmt</var>,
- <var class="Fa" style="white-space: nowrap;">incfmt</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_DFV2BFV</code>(<var class="Fa" style="white-space: nowrap;">ITYPE
- dfv</var>, <var class="Fa" style="white-space: nowrap;">int
- nfbits</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp"><a class="permalink" href="#Q_INI"><code class="Fn" id="Q_INI">Q_INI</code></a>()
- initialises a Q number with the supplied integral value
- <var class="Fa">iv</var> and decimal fractional value
- <var class="Fa">dfv</var>, with appropriate control bits based on the
- requested radix shift point <var class="Fa">rpshft</var>.
- <var class="Fa">dfv</var> must be passed as a preprocessor literal to
- preserve leading zeroes.</p>
-<p class="Pp">The <code class="Dv">Q_NCBITS</code> defined constant specifies
- the number of reserved control bits, currently 3.</p>
-<p class="Pp" id="Q_NTBITS"><a class="permalink" href="#Q_NTBITS"><code class="Fn">Q_NTBITS</code></a>(),
- <a class="permalink" href="#Q_NFCBITS"><code class="Fn" id="Q_NFCBITS">Q_NFCBITS</code></a>(),
- <a class="permalink" href="#Q_MAXNFBITS"><code class="Fn" id="Q_MAXNFBITS">Q_MAXNFBITS</code></a>(),
- <a class="permalink" href="#Q_NFBITS"><code class="Fn" id="Q_NFBITS">Q_NFBITS</code></a>()
- and
- <a class="permalink" href="#Q_NIBITS"><code class="Fn" id="Q_NIBITS">Q_NIBITS</code></a>()
- return the <var class="Fa">q</var>-specific count of total, control-encoded
- fractional, maximum fractional, effective fractional, and integer bits
- applicable to <var class="Fa">q</var> respectively.</p>
-<p class="Pp" id="Q_BT"><a class="permalink" href="#Q_BT"><code class="Fn">Q_BT</code></a>()
- returns the C data type of <var class="Fa">q</var>, while
- <a class="permalink" href="#Q_TC"><code class="Fn" id="Q_TC">Q_TC</code></a>()
- returns <var class="Fa">v</var> type casted to the C data type of
- <var class="Fa">q</var>.</p>
-<p class="Pp" id="Q_RPSHFT"><a class="permalink" href="#Q_RPSHFT"><code class="Fn">Q_RPSHFT</code></a>()
- returns the bit position of <var class="Fa">q</var>'s binary radix point
- relative to bit zero.</p>
-<p class="Pp" id="Q_ABS"><a class="permalink" href="#Q_ABS"><code class="Fn">Q_ABS</code></a>()
- returns the absolute value of any standard numeric type (that uses the MSB
- as a sign bit, but not Q numbers) passed in as <var class="Fa">n</var>. The
- function is signed/unsigned type safe.</p>
-<p class="Pp" id="Q_SHL"><a class="permalink" href="#Q_SHL"><code class="Fn">Q_SHL</code></a>()
- and
- <a class="permalink" href="#Q_SHR"><code class="Fn" id="Q_SHR">Q_SHR</code></a>()
- return the integral value <var class="Fa">v</var> left or right shifted by
- the appropriate amount for <var class="Fa">q</var>.</p>
-<p class="Pp" id="Q_MAXSTRLEN"><a class="permalink" href="#Q_MAXSTRLEN"><code class="Fn">Q_MAXSTRLEN</code></a>()
- calculates the maximum number of characters that may be required to render
- the C-string representation of <var class="Fa">q</var> with numeric base
- <var class="Fa">base</var>.</p>
-<p class="Pp" id="Q_TOSTR"><a class="permalink" href="#Q_TOSTR"><code class="Fn">Q_TOSTR</code></a>()
- renders the C-string representation of <var class="Fa">q</var> with numeric
- base <var class="Fa">base</var> and fractional precision
- <var class="Fa">prec</var> into <var class="Fa">s</var> which has an
- available capacity of <var class="Fa">slen</var> characters.
- <var class="Fa">base</var> must be in range [2,16]. Specifying
- <var class="Fa">prec</var> as -1 renders the number's fractional component
- with maximum precision. If <var class="Fa">slen</var> is greater than zero
- but insufficient to hold the complete C-string, the '\0' C-string terminator
- will be written to <var class="Fa">*s</var>, thereby returning a zero length
- C-string.</p>
-<p class="Pp" id="Q_DEBUG"><a class="permalink" href="#Q_DEBUG"><code class="Fn">Q_DEBUG</code></a>()
- returns a format string and associated data suitable for printf-like
- rendering of debugging information pertaining to <var class="Fa">q</var>. If
- either <var class="Fa">prefmt</var> and/or <var class="Fa">postfmt</var> are
- specified, they are prepended and appended to the resulting format string
- respectively. The <var class="Fa">incfmt</var> boolean specifies whether to
- include (<var class="Vt">true</var>) or exclude
- (<var class="Vt">false</var>) the raw format string itself in the debugging
- output.</p>
-<p class="Pp" id="Q_DFV2BFV"><a class="permalink" href="#Q_DFV2BFV"><code class="Fn">Q_DFV2BFV</code></a>()
- converts decimal fractional value <var class="Fa">dfv</var> to its
- binary-encoded representation with <var class="Fa">nfbits</var> of binary
- precision. <var class="Fa">dfv</var> must be passed as a preprocessor
- literal to preserve leading zeroes. The returned value can be used to set a
- Q number's fractional bits, for example using
- <a class="permalink" href="#Q_SFVAL"><code class="Fn" id="Q_SFVAL">Q_SFVAL</code></a>().</p>
-<p class="Pp">All of those functions operate on the following data types:
- <var class="Vt">s8q_t</var>, <var class="Vt">u8q_t</var>,
- <var class="Vt">s16q_t</var>, <var class="Vt">u16q_t</var>,
- <var class="Vt">s32q_t</var>, <var class="Vt">u32q_t</var>,
- <var class="Vt">s64q_t</var>, and <var class="Vt">u64q_t</var>, which are
- referred to generically as <var class="Fa">QTYPE</var>. The
- <var class="Fa">ITYPE</var> refers to the <a class="Xr">stdint(7)</a>
- integer types. <var class="Fa">NTYPE</var> is used to refer to any numeric
- type and is therefore a superset of <var class="Fa">QTYPE</var> and
- <var class="Fa">ITYPE</var>.</p>
-<p class="Pp">For more details, see <a class="Xr">qmath(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp"><code class="Fn">Q_INI</code>() returns the initialised Q number
- which can be used to chain initialise additional Q numbers.</p>
-<p class="Pp"><code class="Fn">Q_TOSTR</code>() returns a pointer to the '\0'
- C-string terminator appended to <var class="Fa">s</var> after the rendered
- numeric data, or NULL on buffer overflow.</p>
-<p class="Pp"><code class="Fn">Q_DFV2BFV</code>() returns the binary-encoded
- representation of decimal fractional value <var class="Fa">dfv</var> with
- <var class="Fa">nfbits</var> of binary precision.</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">errno(2)</a>, <a class="Xr">qmath(3)</a>,
- <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions and this manual page were
- written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 8, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/Q_IRAWMASK.3 3.html b/static/freebsd/man3/Q_IRAWMASK.3 3.html
deleted file mode 100644
index 54f410ac..00000000
--- a/static/freebsd/man3/Q_IRAWMASK.3 3.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">Q_IRAWMASK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">Q_IRAWMASK(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">Q_IRAWMASK</code>,
- <code class="Nm">Q_GIRAW</code>, <code class="Nm">Q_GIABSVAL</code>,
- <code class="Nm">Q_GIVAL</code>, <code class="Nm">Q_SIVAL</code> &#x2014;
- <span class="Nd">fixed-point math functions which manipulate the integer
- data bits</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/qmath.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_IRAWMASK</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GIRAW</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GIABSVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GIVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_SIVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE iv</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp"><a class="permalink" href="#Q_IRAWMASK"><code class="Fn" id="Q_IRAWMASK">Q_IRAWMASK</code></a>()
- returns a <var class="Fa">q</var>-specific bit mask for
- <var class="Fa">q</var>'s integer data bits.</p>
-<p class="Pp" id="Q_GIRAW"><a class="permalink" href="#Q_GIRAW"><code class="Fn">Q_GIRAW</code></a>()
- returns <var class="Fa">q</var>'s raw masked integer data bits.</p>
-<p class="Pp" id="Q_GIABSVAL"><a class="permalink" href="#Q_GIABSVAL"><code class="Fn">Q_GIABSVAL</code></a>()
- and
- <a class="permalink" href="#Q_GIVAL"><code class="Fn" id="Q_GIVAL">Q_GIVAL</code></a>()
- return the absolute and real values of <var class="Fa">q</var>'s integer
- data bits respectively.</p>
-<p class="Pp" id="Q_SIVAL"><a class="permalink" href="#Q_SIVAL"><code class="Fn">Q_SIVAL</code></a>()
- sets <var class="Fa">q</var>'s integer data bits to the value
- <var class="Fa">iv</var>.</p>
-<p class="Pp">All of those functions operate on the following data types:
- <var class="Vt">s8q_t</var>, <var class="Vt">u8q_t</var>,
- <var class="Vt">s16q_t</var>, <var class="Vt">u16q_t</var>,
- <var class="Vt">s32q_t</var>, <var class="Vt">u32q_t</var>,
- <var class="Vt">s64q_t</var>, and <var class="Vt">u64q_t</var>, which are
- referred to generically as <var class="Fa">QTYPE</var>. The
- <var class="Fa">ITYPE</var> refers to the <a class="Xr">stdint(7)</a>
- integer types.</p>
-<p class="Pp">For more details, see <a class="Xr">qmath(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp"><code class="Fn">Q_IRAWMASK</code>(),
- <code class="Fn">Q_GIRAW</code>(), <code class="Fn">Q_GIABSVAL</code>() and
- <code class="Fn">Q_GIVAL</code>() return their respective values as integers
- of the same underlying ITYPE as <var class="Fa">q</var>.</p>
-<p class="Pp"><code class="Fn">Q_SIVAL</code>() returns the value of
- <var class="Fa">q</var> post change.</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">errno(2)</a>, <a class="Xr">qmath(3)</a>,
- <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions and this manual page were
- written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 8, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/Q_QABS.3 4.html b/static/freebsd/man3/Q_QABS.3 4.html
deleted file mode 100644
index 210c2ce5..00000000
--- a/static/freebsd/man3/Q_QABS.3 4.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">Q_QABS(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">Q_QABS(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">Q_QABS</code>, <code class="Nm">Q_Q2S</code>,
- <code class="Nm">Q_Q2F</code> &#x2014; <span class="Nd">fixed-point math
- functions which operate on a single Q number</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/qmath.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_QABS</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">double</var>
- <br/>
- <code class="Fn">Q_Q2D</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">float</var>
- <br/>
- <code class="Fn">Q_Q2F</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#Q_QABS"><code class="Fn" id="Q_QABS">Q_QABS</code></a>()
- function returns an absolute value representation of
- <var class="Fa">q</var>.</p>
-<p class="Pp" id="Q_Q2D">The
- <a class="permalink" href="#Q_Q2D"><code class="Fn">Q_Q2D</code></a>() and
- <a class="permalink" href="#Q_Q2F"><code class="Fn" id="Q_Q2F">Q_Q2F</code></a>()
- functions return the double and float representations of
- <var class="Fa">q</var> respectively.</p>
-<p class="Pp">All of those functions operate on the following data types:
- <var class="Vt">s8q_t</var>, <var class="Vt">u8q_t</var>,
- <var class="Vt">s16q_t</var>, <var class="Vt">u16q_t</var>,
- <var class="Vt">s32q_t</var>, <var class="Vt">u32q_t</var>,
- <var class="Vt">s64q_t</var>, and <var class="Vt">u64q_t</var>, which are
- referred to generically as <var class="Fa">QTYPE</var>.</p>
-<p class="Pp">For more details, see <a class="Xr">qmath(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp"><code class="Fn">Q_QABS</code>() function returns a QTYPE that is
- identical to that of <var class="Fa">q</var>.</p>
-<p class="Pp">The <code class="Fn">Q_Q2D</code>() and
- <code class="Fn">Q_Q2F</code>() functions return the double and float
- representations of <var class="Fa">q</var> respectively.</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">errno(2)</a>, <a class="Xr">qmath(3)</a>,
- <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions and this manual page were
- written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 8, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/Q_QADDI.3 3.html b/static/freebsd/man3/Q_QADDI.3 3.html
deleted file mode 100644
index 67faa1cf..00000000
--- a/static/freebsd/man3/Q_QADDI.3 3.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">Q_QADDI(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">Q_QADDI(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">Q_QADDI</code>, <code class="Nm">Q_QDIVI</code>,
- <code class="Nm">Q_QMULI</code>, <code class="Nm">Q_QSUBI</code>,
- <code class="Nm">Q_QFRACI</code>, <code class="Nm">Q_QCPYVALI</code>
- &#x2014; <span class="Nd">fixed-point math functions which apply integers to
- a Q number</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/qmath.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QADDI</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *a</var>, <var class="Fa" style="white-space: nowrap;">ITYPE b</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QDIVI</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *a</var>, <var class="Fa" style="white-space: nowrap;">ITYPE b</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QMULI</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *a</var>, <var class="Fa" style="white-space: nowrap;">ITYPE b</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QSUBI</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *a</var>, <var class="Fa" style="white-space: nowrap;">ITYPE b</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QFRACI</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE n</var>,
- <var class="Fa" style="white-space: nowrap;">ITYPE d</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QCPYVALI</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE i</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#Q_QADDI"><code class="Fn" id="Q_QADDI">Q_QADDI</code></a>(),
- <a class="permalink" href="#Q_QDIVI"><code class="Fn" id="Q_QDIVI">Q_QDIVI</code></a>(),
- <a class="permalink" href="#Q_QMULI"><code class="Fn" id="Q_QMULI">Q_QMULI</code></a>()
- and
- <a class="permalink" href="#Q_QSUBI"><code class="Fn" id="Q_QSUBI">Q_QSUBI</code></a>()
- functions add, divide, multiply or subtract <var class="Fa">b</var>
- to/by/from <var class="Fa">a</var> respectively, storing the result in
- <var class="Fa">a</var>.</p>
-<p class="Pp" id="Q_QFRACI">The
- <a class="permalink" href="#Q_QFRACI"><code class="Fn">Q_QFRACI</code></a>()
- function computes the fraction <var class="Fa">n</var> divided by
- <var class="Fa">d</var> and stores the fixed-point result in
- <var class="Fa">q</var>.</p>
-<p class="Pp" id="Q_QCPYVALI">The
- <a class="permalink" href="#Q_QCPYVALI"><code class="Fn">Q_QCPYVALI</code></a>()
- function overwrites <var class="Fa">q</var>'s integer and fractional bits
- with the Q representation of integer value <var class="Fa">i</var>.</p>
-<p class="Pp">All of those functions operate on the following data types:
- <var class="Vt">s8q_t</var>, <var class="Vt">u8q_t</var>,
- <var class="Vt">s16q_t</var>, <var class="Vt">u16q_t</var>,
- <var class="Vt">s32q_t</var>, <var class="Vt">u32q_t</var>,
- <var class="Vt">s64q_t</var>, and <var class="Vt">u64q_t</var>, which are
- referred to generically as <var class="Fa">QTYPE</var>. The
- <var class="Fa">ITYPE</var> refers to the <a class="Xr">stdint(7)</a>
- integer types.</p>
-<p class="Pp">For more details, see <a class="Xr">qmath(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp"><code class="Fn">Q_QADDI</code>(),
- <code class="Fn">Q_QDIVI</code>(), <code class="Fn">Q_QMULI</code>(),
- <code class="Fn">Q_QSUBI</code>(), <code class="Fn">Q_QFRACI</code>() and
- <code class="Fn">Q_QCPYVALI</code>() functions return 0 on success, or an
- errno on failure. <code class="Er">EINVAL</code> is returned for
- divide-by-zero. <code class="Er">EOVERFLOW</code> and
- <code class="Er">ERANGE</code> are returned for overflow and underflow
- respectively.</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">errno(2)</a>, <a class="Xr">qmath(3)</a>,
- <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions and this manual page were
- written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 8, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/Q_QADDQ.3 3.html b/static/freebsd/man3/Q_QADDQ.3 3.html
deleted file mode 100644
index 8306c7af..00000000
--- a/static/freebsd/man3/Q_QADDQ.3 3.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">Q_QADDQ(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">Q_QADDQ(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">Q_QADDQ</code>, <code class="Nm">Q_QDIVQ</code>,
- <code class="Nm">Q_QMULQ</code>, <code class="Nm">Q_QSUBQ</code>,
- <code class="Nm">Q_NORMPREC</code>, <code class="Nm">Q_QMAXQ</code>,
- <code class="Nm">Q_QMINQ</code>, <code class="Nm">Q_QCLONEQ</code>,
- <code class="Nm">Q_CPYVALQ</code> &#x2014; <span class="Nd">fixed-point math
- functions which operate on two Q numbers</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/qmath.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QADDQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QDIVQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QMULQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QSUBQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_NORMPREC</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE *b</var>);</p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_QMAXQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_QMINQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QCLONEQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *l</var>, <var class="Fa" style="white-space: nowrap;">QTYPE r</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_QCPYVALQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- *l</var>, <var class="Fa" style="white-space: nowrap;">QTYPE r</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#Q_QADDQ"><code class="Fn" id="Q_QADDQ">Q_QADDQ</code></a>(),
- <a class="permalink" href="#Q_QDIVQ"><code class="Fn" id="Q_QDIVQ">Q_QDIVQ</code></a>(),
- <a class="permalink" href="#Q_QMULQ"><code class="Fn" id="Q_QMULQ">Q_QMULQ</code></a>(),
- and
- <a class="permalink" href="#Q_QSUBQ"><code class="Fn" id="Q_QSUBQ">Q_QSUBQ</code></a>()
- functions add, divide, multiply or subtract <var class="Fa">b</var>
- to/by/from <var class="Fa">a</var> respectively, storing the result in
- <var class="Fa">a</var>. Both arguments must be initialized with the same
- fractional radix point.</p>
-<p class="Pp" id="Q_NORMPREC">The
- <a class="permalink" href="#Q_NORMPREC"><code class="Fn">Q_NORMPREC</code></a>()
- function attempts to normalise the precision of <var class="Fa">a</var> and
- <var class="Fa">b</var> if they differ. The greater of the two precisions is
- preferred if possible, unless that would truncate integer component data for
- the other operand, in which case the highest precision that preserves the
- integer component of both <var class="Fa">a</var> and
- <var class="Fa">b</var> is selected.</p>
-<p class="Pp" id="Q_QMAXQ">The
- <a class="permalink" href="#Q_QMAXQ"><code class="Fn">Q_QMAXQ</code></a>()
- and
- <a class="permalink" href="#Q_QMINQ"><code class="Fn" id="Q_QMINQ">Q_QMINQ</code></a>()
- functions return the larger or smaller of <var class="Fa">a</var> and
- <var class="Fa">b</var> respectively.</p>
-<p class="Pp" id="Q_QCLONEQ">The
- <a class="permalink" href="#Q_QCLONEQ"><code class="Fn">Q_QCLONEQ</code></a>()
- and
- <a class="permalink" href="#Q_QCPYVALQ"><code class="Fn" id="Q_QCPYVALQ">Q_QCPYVALQ</code></a>()
- functions attempt to store identical or representational copies of
- <var class="Fa">r</var>, in <var class="Fa">l</var> respectively. An
- identical Q number produced by cloning copies the control bits as well as
- the verbatim integer/fractional bits. A representational copy only copies
- the values of <var class="Fa">r</var>'s integer and fractional bits,
- representing them in the bits available per <var class="Fa">l</var>'s Q
- format.</p>
-<p class="Pp">All of those functions operate on the following data types:
- <var class="Vt">s8q_t</var>, <var class="Vt">u8q_t</var>,
- <var class="Vt">s16q_t</var>, <var class="Vt">u16q_t</var>,
- <var class="Vt">s32q_t</var>, <var class="Vt">u32q_t</var>,
- <var class="Vt">s64q_t</var>, and <var class="Vt">u64q_t</var>, which are
- referred to generically as <var class="Fa">QTYPE</var>.</p>
-<p class="Pp">For more details, see <a class="Xr">qmath(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">Q_QADDQ</code>(),
- <code class="Fn">Q_QDIVQ</code>(), <code class="Fn">Q_QMULQ</code>(),
- <code class="Fn">Q_QSUBQ</code>() <code class="Fn">Q_NORMPREC</code>(),
- <code class="Fn">Q_QCLONEQ</code>() and <code class="Fn">Q_QCPYVALQ</code>()
- functions return 0 on success, or an errno on failure.
- <code class="Er">EINVAL</code> is returned for divide-by-zero.
- <code class="Er">EOVERFLOW</code> and <code class="Er">ERANGE</code> are
- returned for overflow and underflow respectively. <code class="Er">ERANGE is
- also returned when the precision of arguments</code> does not match.</p>
-<p class="Pp">The <code class="Fn">Q_QMAXQ</code>() and
- <code class="Fn">Q_QMINQ</code>() functions return the numerically larger or
- smaller of their two inputs respectively.</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">errno(2)</a>, <a class="Xr">qmath(3)</a>,
- <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions and this manual page were
- written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 8, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/Q_SIGNED.3 3.html b/static/freebsd/man3/Q_SIGNED.3 3.html
deleted file mode 100644
index 7a85a17f..00000000
--- a/static/freebsd/man3/Q_SIGNED.3 3.html
+++ /dev/null
@@ -1,158 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">Q_SIGNED(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">Q_SIGNED(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">Q_SIGNED</code>, <code class="Nm">Q_LTZ</code>,
- <code class="Nm">Q_PRECEQ</code>, <code class="Nm">Q_QLTQ</code>,
- <code class="Nm">Q_QLEQ</code>, <code class="Nm">Q_QGTQ</code>,
- <code class="Nm">Q_QGEQ</code>, <code class="Nm">Q_QEQ</code>,
- <code class="Nm">Q_QNEQ</code>, <code class="Nm">Q_OFLOW</code>,
- <code class="Nm">Q_RELPREC</code> &#x2014; <span class="Nd">fixed-point math
- comparison and logic functions</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/qmath.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_SIGNED</code>(<var class="Fa" style="white-space: nowrap;">NTYPE
- n</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_LTZ</code>(<var class="Fa" style="white-space: nowrap;">NTYPE
- n</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_PRECEQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_QLTQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_QLEQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_QGTQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_QGEQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_QEQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_QNEQ</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">Q_OFLOW</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE iv</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">Q_RELPREC</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- a</var>, <var class="Fa" style="white-space: nowrap;">QTYPE b</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp"><a class="permalink" href="#Q_SIGNED"><code class="Fn" id="Q_SIGNED">Q_SIGNED</code></a>()
- returns <var class="Ft">true</var> if the numeric data type passed in as
- <var class="Fa">n</var> is signed, or <var class="Ft">false</var>
- otherwise.</p>
-<p class="Pp" id="Q_LTZ"><a class="permalink" href="#Q_LTZ"><code class="Fn">Q_LTZ</code></a>()
- returns <var class="Ft">true</var> if the numeric value passed in as
- <var class="Fa">n</var> is negative (requires types which use the MSB as the
- sign bit), or <var class="Ft">false</var> otherwise.</p>
-<p class="Pp" id="Q_PRECEQ"><a class="permalink" href="#Q_PRECEQ"><code class="Fn">Q_PRECEQ</code></a>()
- returns <var class="Ft">true</var> if the number of <var class="Fa">a</var>
- and <var class="Fa">b</var> fractional bits is the same,
- <var class="Ft">false</var> otherwise.</p>
-<p class="Pp" id="Q_QLTQ">The
- <a class="permalink" href="#Q_QLTQ"><code class="Fn">Q_QLTQ</code></a>(),
- <a class="permalink" href="#Q_QLEQ"><code class="Fn" id="Q_QLEQ">Q_QLEQ</code></a>(),
- <a class="permalink" href="#Q_QGTQ"><code class="Fn" id="Q_QGTQ">Q_QGTQ</code></a>(),
- <a class="permalink" href="#Q_QGEQ"><code class="Fn" id="Q_QGEQ">Q_QGEQ</code></a>(),
- <a class="permalink" href="#Q_QEQ"><code class="Fn" id="Q_QEQ">Q_QEQ</code></a>()
- and
- <a class="permalink" href="#Q_QNEQ"><code class="Fn" id="Q_QNEQ">Q_QNEQ</code></a>()
- functions compare two Q numbers, returning <var class="Ft">true</var> if
- <var class="Fa">a</var> is less than, less than or equal to, greater than,
- greater than or equal to, equal to, or not equal to <var class="Fa">b</var>
- respectively, or <var class="Ft">false</var> otherwise. The integral and
- fractional values are used to perform the comparison, without explicit
- concern for the underlying number of integer versus fractional bits.</p>
-<p class="Pp" id="Q_OFLOW"><a class="permalink" href="#Q_OFLOW"><code class="Fn">Q_OFLOW</code></a>()
- returns <var class="Ft">true</var> if integer value <var class="Fa">iv</var>
- cannot be stored in <var class="Fa">q</var> without truncation, or false
- otherwise.</p>
-<p class="Pp" id="Q_RELPREC"><a class="permalink" href="#Q_RELPREC"><code class="Fn">Q_RELPREC</code></a>()
- returns the relative precision of <var class="Fa">a</var> versus
- <var class="Fa">b</var>. In terms of
- <a class="permalink" href="#Qm.n"><i class="Em" id="Qm.n">Qm.n</i></a>
- notation, this function returns the difference between the
- <a class="permalink" href="#n"><i class="Em" id="n">n</i></a> values of
- <var class="Fa">a</var> and <var class="Fa">b</var>. For example, a return
- value of +4 means that <var class="Fa">a</var> has an additional 4 bits of
- fractional precision compared to <var class="Fa">b</var>.</p>
-<p class="Pp">All of those functions operate on the following data types:
- <var class="Vt">s8q_t</var>, <var class="Vt">u8q_t</var>,
- <var class="Vt">s16q_t</var>, <var class="Vt">u16q_t</var>,
- <var class="Vt">s32q_t</var>, <var class="Vt">u32q_t</var>,
- <var class="Vt">s64q_t</var>, and <var class="Vt">u64q_t</var>, which are
- referred to generically as <var class="Fa">QTYPE</var>. The
- <var class="Fa">ITYPE</var> refers to the <a class="Xr">stdint(7)</a>
- integer types. <var class="Fa">NTYPE</var> is used to refer to any numeric
- type and is therefore a superset of <var class="Fa">QTYPE</var> and
- <var class="Fa">ITYPE</var>.</p>
-<p class="Pp">For more details, see <a class="Xr">qmath(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">Q_SIGNED</code>(),
- <code class="Fn">Q_LTZ</code>(), <code class="Fn">Q_PRECEQ</code>(),
- <code class="Fn">Q_QLTQ</code>(), <code class="Fn">Q_QLEQ</code>(),
- <code class="Fn">Q_QGTQ</code>(), <code class="Fn">Q_QGEQ</code>(),
- <code class="Fn">Q_QEQ</code>(), <code class="Fn">Q_QNEQ</code>() and
- <code class="Fn">Q_OFLOW</code>() functions return expressions that evaluate
- to boolean <var class="Vt">true</var> or <var class="Vt">false</var>.</p>
-<p class="Pp"><code class="Fn">Q_RELPREC</code>() returns the relative precision
- difference as a signed integer.</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">errno(2)</a>, <a class="Xr">qmath(3)</a>,
- <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions and this manual page were
- written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 8, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/Q_SIGNSHFT.3 3.html b/static/freebsd/man3/Q_SIGNSHFT.3 3.html
deleted file mode 100644
index abc0eca2..00000000
--- a/static/freebsd/man3/Q_SIGNSHFT.3 3.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">Q_SIGNSHFT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">Q_SIGNSHFT(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">Q_SIGNSHFT</code>,
- <code class="Nm">Q_SSIGN</code>, <code class="Nm">Q_CRAWMASK</code>,
- <code class="Nm">Q_SRAWMASK</code>, <code class="Nm">Q_GCRAW</code>,
- <code class="Nm">Q_GCVAL</code>, <code class="Nm">Q_SCVAL</code> &#x2014;
- <span class="Nd">fixed-point math functions which manipulate the
- control/sign data bits</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/qmath.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">uint32_t</var>
- <br/>
- <code class="Fn">Q_SIGNSHFT</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_SSIGN</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">bool isneg</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_CRAWMASK</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_SRAWMASK</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GCRAW</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">ITYPE</var>
- <br/>
- <code class="Fn">Q_GCVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>);</p>
-<p class="Pp"><var class="Ft">QTYPE</var>
- <br/>
- <code class="Fn">Q_SCVAL</code>(<var class="Fa" style="white-space: nowrap;">QTYPE
- q</var>, <var class="Fa" style="white-space: nowrap;">ITYPE cv</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp"><a class="permalink" href="#Q_SIGNSHFT"><code class="Fn" id="Q_SIGNSHFT">Q_SIGNSHFT</code></a>()
- gets the bit position of <var class="Fa">q</var>'s sign bit relative to bit
- zero.</p>
-<p class="Pp" id="Q_SSIGN"><a class="permalink" href="#Q_SSIGN"><code class="Fn">Q_SSIGN</code></a>()
- sets the sign bit of <var class="Fa">q</var> based on the boolean
- <var class="Fa">isneg</var>.</p>
-<p class="Pp" id="Q_CRAWMASK"><a class="permalink" href="#Q_CRAWMASK"><code class="Fn">Q_CRAWMASK</code></a>()
- and
- <a class="permalink" href="#Q_SRAWMASK"><code class="Fn" id="Q_SRAWMASK">Q_SRAWMASK</code></a>()
- return <var class="Fa">q</var>-specific bit masks for
- <var class="Fa">q</var>'s control bits and sign bit respectively.</p>
-<p class="Pp" id="Q_GCRAW"><a class="permalink" href="#Q_GCRAW"><code class="Fn">Q_GCRAW</code></a>()
- and
- <a class="permalink" href="#Q_GCVAL"><code class="Fn" id="Q_GCVAL">Q_GCVAL</code></a>()
- get the raw masked control bits and value of <var class="Fa">q</var>'s
- control bits respectively.</p>
-<p class="Pp" id="Q_SCVAL"><a class="permalink" href="#Q_SCVAL"><code class="Fn">Q_SCVAL</code></a>()
- sets <var class="Fa">q</var>'s control bits to the value
- <var class="Fa">cv</var>.</p>
-<p class="Pp">All of those functions operate on the following data types:
- <var class="Vt">s8q_t</var>, <var class="Vt">u8q_t</var>,
- <var class="Vt">s16q_t</var>, <var class="Vt">u16q_t</var>,
- <var class="Vt">s32q_t</var>, <var class="Vt">u32q_t</var>,
- <var class="Vt">s64q_t</var>, and <var class="Vt">u64q_t</var>, which are
- referred to generically as <var class="Fa">QTYPE</var>. The
- <var class="Fa">ITYPE</var> refers to the <a class="Xr">stdint(7)</a>
- integer types.</p>
-<p class="Pp">For more details, see <a class="Xr">qmath(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp"><code class="Fn">Q_SIGNSHFT</code>() returns the sign bit's
- position as an integer.</p>
-<p class="Pp"><code class="Fn">Q_SSIGN</code>() returns the value of
- <var class="Fa">q</var> post change.</p>
-<p class="Pp"><code class="Fn">Q_CRAWMASK</code>(),
- <code class="Fn">Q_SRAWMASK</code>(), <code class="Fn">Q_GCRAW</code>() and
- <code class="Fn">Q_GCVAL</code>() return their respective values as integers
- of the same underlying ITYPE as <var class="Fa">q</var>.</p>
-<p class="Pp"><code class="Fn">Q_SCVAL</code>() returns the value of
- <var class="Fa">q</var> post change.</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">errno(2)</a>, <a class="Xr">qmath(3)</a>,
- <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <a class="Xr">qmath(3)</a> functions and this manual page were
- written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 8, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/alloca.3 3.html b/static/freebsd/man3/alloca.3 3.html
deleted file mode 100644
index ae0dd6bf..00000000
--- a/static/freebsd/man3/alloca.3 3.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">ALLOCA(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">ALLOCA(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">alloca</code> &#x2014; <span class="Nd">memory
- allocator</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">stdlib.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void *</var>
- <br/>
- <code class="Fn">alloca</code>(<var class="Fa" style="white-space: nowrap;">size_t
- size</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#alloca"><code class="Fn" id="alloca">alloca</code></a>()
- function or macro allocates <var class="Fa">size</var> bytes of space in the
- stack frame of the caller. This temporary space is automatically freed on
- return.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp"><code class="Fn">alloca</code>() returns a pointer to the
- beginning of the allocated space.</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">brk(2)</a>, <a class="Xr">calloc(3)</a>,
- <a class="Xr">getpagesize(3)</a>, <a class="Xr">malloc(3)</a>,
- <a class="Xr">realloc(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp"><code class="Fn">alloca</code>() appeared in
- <span class="Ux">Version&#x00A0;7 AT&amp;T UNIX/32V</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
-<p class="Pp"><code class="Fn">alloca</code>() is machine and compiler
- dependent; its use is discouraged.</p>
-<p class="Pp"><code class="Fn">alloca</code>() is slightly unsafe because it
- cannot ensure that the pointer returned points to a valid and usable block
- of memory. The allocation made may exceed the bounds of the stack, or even
- go further into other objects in memory, and
- <code class="Fn">alloca</code>() cannot determine such an error. Avoid
- <code class="Fn">alloca</code>() with large unbounded allocations.</p>
-<p class="Pp">The use of C99 variable-length arrays and
- <code class="Fn">alloca</code>() in the same function will cause the
- lifetime of <code class="Fn">alloca</code>()'s storage to be limited to the
- block containing the <code class="Fn">alloca</code>(). For example, in the
- following snippet, <var class="Va">p</var>'s lifetime does not extend
- outside of the block, whereas it would've if <var class="Va">vla</var>
- hadn't been defined or had been defined as a fixed-length array:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>char *p;
-{
- const int n = 100;
- int vla[n];
- p = alloca(32);
- strcpy(p, &quot;Hello, world!&quot;);
- printf(&quot;Inside: %s\n&quot;, p); /* Valid. */
-}
-printf(&quot;Outside: %s\n&quot;, p); /* Undefined. */</pre>
-</div>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">February 19, 2026</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/arb.3 3.html b/static/freebsd/man3/arb.3 3.html
deleted file mode 100644
index f8219d50..00000000
--- a/static/freebsd/man3/arb.3 3.html
+++ /dev/null
@@ -1,550 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">ARB(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">ARB(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">ARB_PROTOTYPE</code>,
- <code class="Nm">ARB_PROTOTYPE_STATIC</code>,
- <code class="Nm">ARB_PROTOTYPE_INSERT</code>,
- <code class="Nm">ARB_PROTOTYPE_INSERT_COLOR</code>,
- <code class="Nm">ARB_PROTOTYPE_REMOVE</code>,
- <code class="Nm">ARB_PROTOTYPE_REMOVE_COLOR</code>,
- <code class="Nm">ARB_PROTOTYPE_FIND</code>,
- <code class="Nm">ARB_PROTOTYPE_NFIND</code>,
- <code class="Nm">ARB_PROTOTYPE_NEXT</code>,
- <code class="Nm">ARB_PROTOTYPE_PREV</code>,
- <code class="Nm">ARB_PROTOTYPE_MINMAX</code>,
- <code class="Nm">ARB_PROTOTYPE_REINSERT</code>,
- <code class="Nm">ARB_GENERATE</code>,
- <code class="Nm">ARB_GENERATE_STATIC</code>,
- <code class="Nm">ARB_GENERATE_INSERT</code>,
- <code class="Nm">ARB_GENERATE_INSERT_COLOR</code>,
- <code class="Nm">ARB_GENERATE_REMOVE</code>,
- <code class="Nm">ARB_GENERATE_REMOVE_COLOR</code>,
- <code class="Nm">ARB_GENERATE_FIND</code>,
- <code class="Nm">ARB_GENERATE_NFIND</code>,
- <code class="Nm">ARB_GENERATE_NEXT</code>,
- <code class="Nm">ARB_GENERATE_PREV</code>,
- <code class="Nm">ARB_GENERATE_MINMAX</code>,
- <code class="Nm">ARB_GENERATE_REINSERT</code>,
- <code class="Nm">ARB8_ENTRY</code>, <code class="Nm">ARB16_ENTRY</code>,
- <code class="Nm">ARB32_ENTRY</code>, <code class="Nm">ARB8_HEAD</code>,
- <code class="Nm">ARB16_HEAD</code>, <code class="Nm">ARB32_HEAD</code>,
- <code class="Nm">ARB_ALLOCSIZE</code>,
- <code class="Nm">ARB_INITIALIZER</code>, <code class="Nm">ARB_ROOT</code>,
- <code class="Nm">ARB_EMPTY</code>, <code class="Nm">ARB_FULL</code>,
- <code class="Nm">ARB_CURNODES</code>, <code class="Nm">ARB_MAXNODES</code>,
- <code class="Nm">ARB_NEXT</code>, <code class="Nm">ARB_PREV</code>,
- <code class="Nm">ARB_MIN</code>, <code class="Nm">ARB_MAX</code>,
- <code class="Nm">ARB_FIND</code>, <code class="Nm">ARB_NFIND</code>,
- <code class="Nm">ARB_LEFT</code>, <code class="Nm">ARB_LEFTIDX</code>,
- <code class="Nm">ARB_RIGHT</code>, <code class="Nm">ARB_RIGHTIDX</code>,
- <code class="Nm">ARB_PARENT</code>, <code class="Nm">ARB_PARENTIDX</code>,
- <code class="Nm">ARB_GETFREE</code>, <code class="Nm">ARB_FREEIDX</code>,
- <code class="Nm">ARB_FOREACH</code>,
- <code class="Nm">ARB_FOREACH_FROM</code>,
- <code class="Nm">ARB_FOREACH_SAFE</code>,
- <code class="Nm">ARB_FOREACH_REVERSE</code>,
- <code class="Nm">ARB_FOREACH_REVERSE_FROM</code>,
- <code class="Nm">ARB_FOREACH_REVERSE_SAFE</code>,
- <code class="Nm">ARB_INIT</code>, <code class="Nm">ARB_INSERT</code>,
- <code class="Nm">ARB_REMOVE</code>, <code class="Nm">ARB_REINSERT</code>,
- <code class="Nm">ARB_RESET_TREE</code> &#x2014; <span class="Nd">array-based
- red-black trees</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/arb.h</a>&gt;</code></p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_STATIC</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_INSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_INSERT_COLOR</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_REMOVE_COLOR</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_FIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_NFIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_NEXT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_PREV</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_MINMAX</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_PROTOTYPE_REINSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_STATIC</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_INSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_INSERT_COLOR</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_REMOVE_COLOR</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_FIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_NFIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_NEXT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_PREV</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_MINMAX</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB_GENERATE_REINSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">ARB&lt;8|16|32&gt;_ENTRY</code>();</p>
-<p class="Pp"><code class="Fn">ARB&lt;8|16|32&gt;_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><var class="Ft">size_t</var>
- <br/>
- <code class="Fn">ARB_ALLOCSIZE</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>,
- <var class="Fa" style="white-space: nowrap;">int&lt;8|16|32&gt;_t
- maxnodes</var>, <var class="Fa" style="white-space: nowrap;">struct TYPE
- *elm</var>);</p>
-<p class="Pp"><code class="Fn">ARB_INITIALIZER</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>,
- <var class="Fa" style="white-space: nowrap;">int&lt;8|16|32&gt;_t
- maxnodes</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_ROOT</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">ARB_EMPTY</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">ARB_FULL</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">int&lt;8|16|32&gt;_t</var>
- <br/>
- <code class="Fn">ARB_CURNODES</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">int&lt;8|16|32&gt;_t</var>
- <br/>
- <code class="Fn">ARB_MAXNODES</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_NEXT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_PREV</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_MIN</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_MAX</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_FIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_NFIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_LEFT</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">ARB_ENTRY
- NAME</var>);</p>
-<p class="Pp"><var class="Ft">int&lt;8|16|32&gt;_t</var>
- <br/>
- <code class="Fn">ARB_LEFTIDX</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">ARB_ENTRY
- NAME</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_RIGHT</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">ARB_ENTRY
- NAME</var>);</p>
-<p class="Pp"><var class="Ft">int&lt;8|16|32&gt;_t</var>
- <br/>
- <code class="Fn">ARB_RIGHTIDX</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">ARB_ENTRY
- NAME</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_PARENT</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">ARB_ENTRY
- NAME</var>);</p>
-<p class="Pp"><var class="Ft">int&lt;8|16|32&gt;_t</var>
- <br/>
- <code class="Fn">ARB_PARENTIDX</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">ARB_ENTRY
- NAME</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_GETFREE</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">FIELD</var>);</p>
-<p class="Pp"><var class="Ft">int&lt;8|16|32&gt;_t</var>
- <br/>
- <code class="Fn">ARB_FREEIDX</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">ARB_FOREACH</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>);</p>
-<p class="Pp"><code class="Fn">ARB_FOREACH_FROM</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">POS_VARNAME</var>);</p>
-<p class="Pp"><code class="Fn">ARB_FOREACH_SAFE</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">TEMP_VARNAME</var>);</p>
-<p class="Pp"><code class="Fn">ARB_FOREACH_REVERSE</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>);</p>
-<p class="Pp"><code class="Fn">ARB_FOREACH_REVERSE_FROM</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">POS_VARNAME</var>);</p>
-<p class="Pp"><code class="Fn">ARB_FOREACH_REVERSE_SAFE</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">TEMP_VARNAME</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">ARB_INIT</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">int&lt;8|16|32&gt;_t
- maxnodes</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_INSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">ARB_REINSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">ARB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">ARB_RESET_TREE</code>(<var class="Fa" style="white-space: nowrap;">ARB_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">int&lt;8|16|32&gt;_t
- maxnodes</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">These macros define data structures for and array-based red-black
- trees. They use a single, continuous chunk of memory, and are useful e.g.,
- when the tree needs to be transferred between userspace and kernel.</p>
-<p class="Pp" id="ARB_HEAD">In the macro definitions, <var class="Fa">TYPE</var>
- is the name tag of a user defined structure that must contain a field of
- type <var class="Vt">ARB_ENTRY</var>, named <var class="Fa">ENTRYNAME</var>.
- The argument <var class="Fa">HEADNAME</var> is the name tag of a user
- defined structure that must be declared using the
- <a class="permalink" href="#ARB_HEAD"><code class="Fn">ARB_HEAD</code></a>()
- macro. The argument <var class="Fa">NAME</var> has to be a unique name
- prefix for every tree that is defined.</p>
-<p class="Pp" id="ARB_PROTOTYPE">The function prototypes are declared with
- <a class="permalink" href="#ARB_PROTOTYPE"><code class="Fn">ARB_PROTOTYPE</code></a>(),
- or
- <a class="permalink" href="#ARB_PROTOTYPE_STATIC"><code class="Fn" id="ARB_PROTOTYPE_STATIC">ARB_PROTOTYPE_STATIC</code></a>().
- The function bodies are generated with
- <code class="Fn">ARB_GENERATE</code>(), or
- <code class="Fn">ARB_GENERATE_STATIC</code>(). See the examples below for
- further explanation of how these macros are used.</p>
-<p class="Pp">A red-black tree is a binary search tree with the node color as an
- extra attribute. It fulfills a set of conditions:</p>
-<ol class="Bl-enum Bd-indent">
- <li>Every search path from the root to a leaf consists of the same number of
- black nodes.</li>
- <li>Each red node (except for the root) has a black parent.</li>
- <li>Each leaf node is black.</li>
-</ol>
-<p class="Pp" id="O">Every operation on a red-black tree is bounded as
- <a class="permalink" href="#O"><code class="Fn">O</code></a>(<var class="Fa">lg
- n</var>). The maximum height of a red-black tree is
- <a class="permalink" href="#2lg"><code class="Fn" id="2lg">2lg</code></a>(<var class="Fa">n
- + 1</var>).</p>
-<p class="Pp" id="ARB_*"><a class="permalink" href="#ARB_*"><code class="Fn">ARB_*</code></a>()
- trees require entries to be allocated as an array, and uses array indices to
- link entries together. The maximum number of <code class="Fn">ARB_*</code>()
- tree entries is therefore constrained by the minimum of array size and
- choice of signed integer data type used to store array indices. Use
- <a class="permalink" href="#ARB_ALLOCSIZE"><code class="Fn" id="ARB_ALLOCSIZE">ARB_ALLOCSIZE</code></a>()
- to compute the size of memory chunk to allocate.</p>
-<p class="Pp" id="ARB_HEAD~2">A red-black tree is headed by a structure defined
- by the
- <a class="permalink" href="#ARB_HEAD~2"><code class="Fn">ARB_HEAD</code></a>()
- macro. A structure is declared with either of the following:</p>
-<div class="Bd Pp
- Bd-indent"><a class="permalink" href="#ARB_8_16_32__HEAD"><code class="Fn" id="ARB_8_16_32__HEAD">ARB&lt;8|16|32&gt;_HEAD</code></a>(<var class="Fa">HEADNAME</var>,
- <var class="Fa">TYPE</var>) <var class="Va">head</var>;</div>
-<p class="Pp">where <var class="Fa">HEADNAME</var> is the name of the structure
- to be defined, and struct <var class="Fa">TYPE</var> is the type of the
- elements to be inserted into the tree.</p>
-<p class="Pp" id="ARB_HEAD~3">The
- <a class="permalink" href="#ARB_HEAD~3"><code class="Fn">ARB_HEAD</code></a>()
- variant includes a suffix denoting the signed integer data type size (in
- bits) used to store array indices. For example,
- <a class="permalink" href="#ARB_HEAD8"><code class="Fn" id="ARB_HEAD8">ARB_HEAD8</code></a>()
- creates a red-black tree head structure with 8-bit signed array indices
- capable of indexing up to 128 entries.</p>
-<p class="Pp" id="ARB_ENTRY">The
- <a class="permalink" href="#ARB_ENTRY"><code class="Fn">ARB_ENTRY</code></a>()
- macro declares a structure that allows elements to be connected in the tree.
- Similarly to the
- <a class="permalink" href="#ARB_8_16_32__HEAD~2"><code class="Fn" id="ARB_8_16_32__HEAD~2">ARB&lt;8|16|32&gt;_HEAD</code></a>()
- macro, the <code class="Fn">ARB_ENTRY</code>() variant includes a suffix
- denoting the signed integer data type size (in bits) used to store array
- indices. Entries should use the same number of bits as the tree head
- structure they will be linked into.</p>
-<p class="Pp" id="ARB_PROTOTYPE~2">In order to use the functions that manipulate
- the tree structure, their prototypes need to be declared with the
- <a class="permalink" href="#ARB_PROTOTYPE~2"><code class="Fn">ARB_PROTOTYPE</code></a>()
- or
- <a class="permalink" href="#ARB_PROTOTYPE_STATIC~2"><code class="Fn" id="ARB_PROTOTYPE_STATIC~2">ARB_PROTOTYPE_STATIC</code></a>()
- macro, where <var class="Fa">NAME</var> is a unique identifier for this
- particular tree. The <var class="Fa">TYPE</var> argument is the type of the
- structure that is being managed by the tree. The <var class="Fa">FIELD</var>
- argument is the name of the element defined by
- <code class="Fn">ARB_ENTRY</code>(). Individual prototypes can be declared
- with
- <a class="permalink" href="#ARB_PROTOTYPE_INSERT"><code class="Fn" id="ARB_PROTOTYPE_INSERT">ARB_PROTOTYPE_INSERT</code></a>(),
- <a class="permalink" href="#ARB_PROTOTYPE_INSERT_COLOR"><code class="Fn" id="ARB_PROTOTYPE_INSERT_COLOR">ARB_PROTOTYPE_INSERT_COLOR</code></a>(),
- <a class="permalink" href="#ARB_PROTOTYPE_REMOVE"><code class="Fn" id="ARB_PROTOTYPE_REMOVE">ARB_PROTOTYPE_REMOVE</code></a>(),
- <a class="permalink" href="#ARB_PROTOTYPE_REMOVE_COLOR"><code class="Fn" id="ARB_PROTOTYPE_REMOVE_COLOR">ARB_PROTOTYPE_REMOVE_COLOR</code></a>(),
- <a class="permalink" href="#ARB_PROTOTYPE_FIND"><code class="Fn" id="ARB_PROTOTYPE_FIND">ARB_PROTOTYPE_FIND</code></a>(),
- <a class="permalink" href="#ARB_PROTOTYPE_NFIND"><code class="Fn" id="ARB_PROTOTYPE_NFIND">ARB_PROTOTYPE_NFIND</code></a>(),
- <a class="permalink" href="#ARB_PROTOTYPE_NEXT"><code class="Fn" id="ARB_PROTOTYPE_NEXT">ARB_PROTOTYPE_NEXT</code></a>(),
- <a class="permalink" href="#ARB_PROTOTYPE_PREV"><code class="Fn" id="ARB_PROTOTYPE_PREV">ARB_PROTOTYPE_PREV</code></a>(),
- <a class="permalink" href="#ARB_PROTOTYPE_MINMAX"><code class="Fn" id="ARB_PROTOTYPE_MINMAX">ARB_PROTOTYPE_MINMAX</code></a>(),
- and
- <a class="permalink" href="#ARB_PROTOTYPE_REINSERT"><code class="Fn" id="ARB_PROTOTYPE_REINSERT">ARB_PROTOTYPE_REINSERT</code></a>()
- in case not all functions are required. The individual prototype macros
- expect <var class="Fa">NAME</var>, <var class="Fa">TYPE</var>, and
- <var class="Fa">ATTR</var> arguments. The <var class="Fa">ATTR</var>
- argument must be empty for global functions or <var class="Fa">static</var>
- for static functions.</p>
-<p class="Pp" id="ARB_GENERATE">The function bodies are generated with the
- <a class="permalink" href="#ARB_GENERATE"><code class="Fn">ARB_GENERATE</code></a>()
- or
- <a class="permalink" href="#ARB_GENERATE_STATIC"><code class="Fn" id="ARB_GENERATE_STATIC">ARB_GENERATE_STATIC</code></a>()
- macro. These macros take the same arguments as the
- <code class="Fn">ARB_PROTOTYPE</code>() and
- <code class="Fn">ARB_PROTOTYPE_STATIC</code>() macros, but should be used
- only once. As an alternative individual function bodies are generated with
- the
- <a class="permalink" href="#ARB_GENERATE_INSERT"><code class="Fn" id="ARB_GENERATE_INSERT">ARB_GENERATE_INSERT</code></a>(),
- <a class="permalink" href="#ARB_GENERATE_INSERT_COLOR"><code class="Fn" id="ARB_GENERATE_INSERT_COLOR">ARB_GENERATE_INSERT_COLOR</code></a>(),
- <a class="permalink" href="#ARB_GENERATE_REMOVE"><code class="Fn" id="ARB_GENERATE_REMOVE">ARB_GENERATE_REMOVE</code></a>(),
- <a class="permalink" href="#ARB_GENERATE_REMOVE_COLOR"><code class="Fn" id="ARB_GENERATE_REMOVE_COLOR">ARB_GENERATE_REMOVE_COLOR</code></a>(),
- <a class="permalink" href="#ARB_GENERATE_FIND"><code class="Fn" id="ARB_GENERATE_FIND">ARB_GENERATE_FIND</code></a>(),
- <a class="permalink" href="#ARB_GENERATE_NFIND"><code class="Fn" id="ARB_GENERATE_NFIND">ARB_GENERATE_NFIND</code></a>(),
- <a class="permalink" href="#ARB_GENERATE_NEXT"><code class="Fn" id="ARB_GENERATE_NEXT">ARB_GENERATE_NEXT</code></a>(),
- <a class="permalink" href="#ARB_GENERATE_PREV"><code class="Fn" id="ARB_GENERATE_PREV">ARB_GENERATE_PREV</code></a>(),
- <a class="permalink" href="#ARB_GENERATE_MINMAX"><code class="Fn" id="ARB_GENERATE_MINMAX">ARB_GENERATE_MINMAX</code></a>(),
- and
- <a class="permalink" href="#ARB_GENERATE_REINSERT"><code class="Fn" id="ARB_GENERATE_REINSERT">ARB_GENERATE_REINSERT</code></a>()
- macros.</p>
-<p class="Pp">Finally, the <var class="Fa">CMP</var> argument is the name of a
- function used to compare tree nodes with each other. The function takes two
- arguments of type <var class="Vt">struct TYPE *</var>. If the first argument
- is smaller than the second, the function returns a value smaller than zero.
- If they are equal, the function returns zero. Otherwise, it should return a
- value greater than zero. The compare function defines the order of the tree
- elements.</p>
-<p class="Pp" id="ARB_INIT">The
- <a class="permalink" href="#ARB_INIT"><code class="Fn">ARB_INIT</code></a>()
- macro initializes the tree referenced by <var class="Fa">head</var>, with
- the array length of <var class="Fa">maxnodes</var>.</p>
-<p class="Pp" id="ARB_INITIALIZER">The red-black tree can also be initialized
- statically by using the
- <a class="permalink" href="#ARB_INITIALIZER"><code class="Fn">ARB_INITIALIZER</code></a>()
- macro:</p>
-<div class="Bd Pp
- Bd-indent"><a class="permalink" href="#ARB_8_16_32__HEAD~3"><code class="Fn" id="ARB_8_16_32__HEAD~3">ARB&lt;8|16|32&gt;_HEAD</code></a>(<var class="Fa">HEADNAME</var>,
- <var class="Fa">TYPE</var>) <var class="Va">head</var> =
- <code class="Fn">ARB_INITIALIZER</code>(<var class="Fa">&amp;head</var>,
- <var class="Fa">maxnodes</var>);</div>
-<p class="Pp" id="ARB_INSERT">The
- <a class="permalink" href="#ARB_INSERT"><code class="Fn">ARB_INSERT</code></a>()
- macro inserts the new element <var class="Fa">elm</var> into the tree.</p>
-<p class="Pp" id="ARB_REMOVE">The
- <a class="permalink" href="#ARB_REMOVE"><code class="Fn">ARB_REMOVE</code></a>()
- macro removes the element <var class="Fa">elm</var> from the tree pointed by
- <var class="Fa">head</var>.</p>
-<p class="Pp" id="ARB_FIND">The
- <a class="permalink" href="#ARB_FIND"><code class="Fn">ARB_FIND</code></a>()
- and
- <a class="permalink" href="#ARB_NFIND"><code class="Fn" id="ARB_NFIND">ARB_NFIND</code></a>()
- macros can be used to find a particular element in the tree.</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct TYPE find, *res;
-find.key = 30;
-res = ARB_FIND(NAME, head, &amp;find);</pre>
-</div>
-<p class="Pp" id="ARB_ROOT">The
- <a class="permalink" href="#ARB_ROOT"><code class="Fn">ARB_ROOT</code></a>(),
- <a class="permalink" href="#ARB_MIN"><code class="Fn" id="ARB_MIN">ARB_MIN</code></a>(),
- <a class="permalink" href="#ARB_MAX"><code class="Fn" id="ARB_MAX">ARB_MAX</code></a>(),
- <a class="permalink" href="#ARB_NEXT"><code class="Fn" id="ARB_NEXT">ARB_NEXT</code></a>(),
- and
- <a class="permalink" href="#ARB_PREV"><code class="Fn" id="ARB_PREV">ARB_PREV</code></a>()
- macros can be used to traverse the tree:</p>
-<p class="Pp"></p>
-<div class="Bd Bd-indent"><code class="Li">for (np = ARB_MIN(NAME, &amp;head);
- np != NULL; np = ARB_NEXT(NAME, &amp;head, np))</code></div>
-<p class="Pp" id="ARB_FOREACH">Or, for simplicity, one can use the
- <a class="permalink" href="#ARB_FOREACH"><code class="Fn">ARB_FOREACH</code></a>()
- or
- <a class="permalink" href="#ARB_FOREACH_REVERSE"><code class="Fn" id="ARB_FOREACH_REVERSE">ARB_FOREACH_REVERSE</code></a>()
- macro:</p>
-<div class="Bd Pp
- Bd-indent"><code class="Fn">ARB_FOREACH</code>(<var class="Fa">np</var>,
- <var class="Fa">NAME</var>, <var class="Fa">head</var>)</div>
-<p class="Pp" id="ARB_FOREACH_SAFE">The macros
- <a class="permalink" href="#ARB_FOREACH_SAFE"><code class="Fn">ARB_FOREACH_SAFE</code></a>()
- and
- <a class="permalink" href="#ARB_FOREACH_REVERSE_SAFE"><code class="Fn" id="ARB_FOREACH_REVERSE_SAFE">ARB_FOREACH_REVERSE_SAFE</code></a>()
- traverse the tree referenced by head in a forward or reverse direction
- respectively, assigning each element in turn to np. However, unlike their
- unsafe counterparts, they permit both the removal of np as well as freeing
- it from within the loop safely without interfering with the traversal.</p>
-<p class="Pp" id="ARB_FOREACH_FROM">Both
- <a class="permalink" href="#ARB_FOREACH_FROM"><code class="Fn">ARB_FOREACH_FROM</code></a>()
- and
- <a class="permalink" href="#ARB_FOREACH_REVERSE_FROM"><code class="Fn" id="ARB_FOREACH_REVERSE_FROM">ARB_FOREACH_REVERSE_FROM</code></a>()
- may be used to continue an interrupted traversal in a forward or reverse
- direction respectively. The head pointer is not required. The pointer to the
- node from where to resume the traversal should be passed as their last
- argument, and will be overwritten to provide safe traversal.</p>
-<p class="Pp" id="ARB_EMPTY">The
- <a class="permalink" href="#ARB_EMPTY"><code class="Fn">ARB_EMPTY</code></a>()
- macro should be used to check whether a red-black tree is empty.</p>
-<p class="Pp" id="ARB_FULL">Given that ARB trees have an intrinsic upper bound
- on the number of entries, some ARB-specific additional macros are defined.
- The
- <a class="permalink" href="#ARB_FULL"><code class="Fn">ARB_FULL</code></a>()
- macro returns a boolean indicating whether the current number of tree
- entries equals the tree's maximum. The
- <a class="permalink" href="#ARB_CURNODES"><code class="Fn" id="ARB_CURNODES">ARB_CURNODES</code></a>()
- and
- <a class="permalink" href="#ARB_MAXNODES"><code class="Fn" id="ARB_MAXNODES">ARB_MAXNODES</code></a>()
- macros return the current and maximum number of entries respectively. The
- <a class="permalink" href="#ARB_GETFREE"><code class="Fn" id="ARB_GETFREE">ARB_GETFREE</code></a>()
- macro returns a pointer to the next free entry in the array of entries,
- ready to be linked into the tree. The <code class="Fn">ARB_INSERT</code>()
- returns <code class="Dv">NULL</code> if the element was inserted in the tree
- successfully, otherwise they return a pointer to the element with the
- colliding key.</p>
-<p class="Pp" id="ARB_REMOVE~2">Accordingly,
- <a class="permalink" href="#ARB_REMOVE~2"><code class="Fn">ARB_REMOVE</code></a>()
- returns the pointer to the removed element otherwise they return
- <code class="Dv">NULL</code> to indicate an error.</p>
-<p class="Pp" id="ARB_REINSERT">The
- <a class="permalink" href="#ARB_REINSERT"><code class="Fn">ARB_REINSERT</code></a>()
- macro updates the position of the element <var class="Fa">elm</var> in the
- tree. This must be called if a member of a <code class="Nm">tree</code> is
- modified in a way that affects comparison, such as by modifying a node's
- key. This is a lower overhead alternative to removing the element and
- reinserting it again.</p>
-<p class="Pp" id="ARB_RESET_TREE">The
- <a class="permalink" href="#ARB_RESET_TREE"><code class="Fn">ARB_RESET_TREE</code></a>()
- macro discards the tree topology. It does not modify embedded object values
- or the free list.</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">queue(3)</a>, <a class="Xr">tree(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">ARB</code> macros first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <code class="Nm">ARB</code> macros were implemented by
- <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;,
- based on <a class="Xr">tree(3)</a> macros written by
- <br/>
- <span class="An">Niels Provos</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 14, 2019</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/assert.3 3.html b/static/freebsd/man3/assert.3 3.html
deleted file mode 100644
index b8d9739e..00000000
--- a/static/freebsd/man3/assert.3 3.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">ASSERT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">ASSERT(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">assert</code>,
- <code class="Nm">static_assert</code> &#x2014; <span class="Nd">expression
- verification macro</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">assert.h</a>&gt;</code></p>
-<p class="Pp"><code class="Fn">assert</code>(<var class="Fa" style="white-space: nowrap;">expression</var>);</p>
-<p class="Pp"><code class="Fn">static_assert</code>(<var class="Fa" style="white-space: nowrap;">expression</var>);</p>
-<p class="Pp"><code class="Fn">static_assert</code>(<var class="Fa" style="white-space: nowrap;">expression</var>,
- <var class="Fa" style="white-space: nowrap;">message</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#assert"><code class="Fn" id="assert">assert</code></a>()
- macro tests the given <var class="Ar">expression</var> and if it is false,
- the calling process is terminated. A diagnostic message is written to
- <code class="Dv">stderr</code> and the function <a class="Xr">abort(3)</a>
- is called, effectively terminating the program.</p>
-<p class="Pp" id="assert~2">If <var class="Ar">expression</var> is true, the
- <a class="permalink" href="#assert~2"><code class="Fn">assert</code></a>()
- macro does nothing.</p>
-<p class="Pp" id="assert~3">The
- <a class="permalink" href="#assert~3"><code class="Fn">assert</code></a>()
- macro may be removed at compile time by defining
- <code class="Dv">NDEBUG</code> as a macro (e.g., by using the
- <a class="Xr">cc(1)</a> option
- <code class="Fl">-D</code><code class="Dv">NDEBUG</code>). Unlike most other
- include files, <code class="In">&lt;<a class="In">assert.h</a>&gt;</code>
- may be included multiple times. Each time whether or not
- <code class="Dv">NDEBUG</code> is defined determines the behavior of assert
- from that point forward until the end of the unit or another include of
- <code class="In">&lt;<a class="In">assert.h</a>&gt;</code>.</p>
-<p class="Pp" id="assert~4">The
- <a class="permalink" href="#assert~4"><code class="Fn">assert</code></a>()
- macro should only be used for ensuring the developer's expectations hold
- true. It is not appropriate for regular run-time error detection.</p>
-<p class="Pp" id="static_assert">The
- <a class="permalink" href="#static_assert"><code class="Fn">static_assert</code></a>()
- macro expands to
- <a class="permalink" href="#_Static_assert"><code class="Fn" id="_Static_assert">_Static_assert</code></a>(),
- and, contrarily to <code class="Fn">assert</code>(), makes assertions at
- compile-time. Once the constraint is violated, the compiler produces a
- diagnostic message including the string literal message, if provided. The
- initial form of the <code class="Fn">_Static_assert</code>() containing a
- string literal message was introduced in C11 standard, and the other form
- with no string literal is to be implemented by C2x and some compilers may
- lack its adoption at present.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<p class="Pp">The assertion:</p>
-<div class="Bd Bd-indent"><code class="Li">assert(1 == 0);</code></div>
-generates a diagnostic message similar to the following:
-<div class="Bd Bd-indent"><code class="Li">Assertion failed: (1 == 0), function
- main, file main.c, line 100.</code></div>
-<p class="Pp">The following assert tries to assert there was no partial
- read:</p>
-<div class="Bd Bd-indent"><code class="Li">assert(read(fd, buf, nbytes) ==
- nbytes);</code></div>
-However, there are two problems. First, it checks for normal conditions, rather
- than conditions that indicate a bug. Second, the code will disappear if
- <code class="Dv">NDEBUG</code> is defined, changing the semantics of the
- program.
-<p class="Pp">The following asserts that the size of the S structure is 16.
- Otherwise, it produces a diagnostic message which points at the constraint
- and includes the provided string literal:</p>
-<div class="Bd Bd-indent"><code class="Li">static_assert(sizeof(struct S) == 16,
- &quot;size mismatch&quot;);</code></div>
-If none is provided, it only points at the constraint.
-</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">abort2(2)</a>, <a class="Xr">abort(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">assert</code>() macro conforms to
- <span class="St">ISO/IEC 9899:1999
- (&#x201C;ISO&#x00A0;C99&#x201D;)</span>.</p>
-<p class="Pp">The <code class="Fn">static_assert</code>() macro conforms to
- <span class="St">ISO/IEC 9899:2011
- (&#x201C;ISO&#x00A0;C11&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">An <code class="Nm">assert</code> macro appeared in
- <span class="Ux">Version&#x00A0;7 AT&amp;T UNIX</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 20, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/bitstring.3 3.html b/static/freebsd/man3/bitstring.3 3.html
deleted file mode 100644
index 9a6b8fdf..00000000
--- a/static/freebsd/man3/bitstring.3 3.html
+++ /dev/null
@@ -1,380 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">BITSTRING(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">BITSTRING(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">bit_alloc</code>,
- <code class="Nm">bit_clear</code>, <code class="Nm">bit_count</code>,
- <code class="Nm">bit_decl</code>, <code class="Nm">bit_ffc</code>,
- <code class="Nm">bit_ffs</code>, <code class="Nm">bit_ff_at</code>,
- <code class="Nm">bit_ffc_at</code>, <code class="Nm">bit_ffs_at</code>,
- <code class="Nm">bit_ffc_area</code>, <code class="Nm">bit_ffs_area</code>,
- <code class="Nm">bit_ff_area_at</code>,
- <code class="Nm">bit_ffc_area_at</code>,
- <code class="Nm">bit_ffs_area_at</code>, <code class="Nm">bit_nclear</code>,
- <code class="Nm">bit_nset</code>, <code class="Nm">bit_ntest</code>,
- <code class="Nm">bit_set</code>, <code class="Nm">bit_test</code>,
- <code class="Nm">bitstr_size</code> &#x2014; <span class="Nd">bit-string
- manipulation functions and macros</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">bitstring.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">bitstr_t *</var>
- <br/>
- <code class="Fn">bit_alloc</code>(<var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_decl</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_clear</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- bit</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_count</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- count</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">ssize_t
- *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ffc</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">ssize_t
- *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ffs</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">ssize_t
- *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ffc_at</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">ssize_t
- *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ffs_at</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">ssize_t
- *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ff_at</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">int match</var>,
- <var class="Fa" style="white-space: nowrap;">ssize_t *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ffc_area</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">size_t size</var>,
- <var class="Fa" style="white-space: nowrap;">ssize_t *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ffs_area</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">size_t size</var>,
- <var class="Fa" style="white-space: nowrap;">ssize_t *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ffc_area_at</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">size_t size</var>,
- <var class="Fa" style="white-space: nowrap;">ssize_t *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ffs_area_at</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">size_t size</var>,
- <var class="Fa" style="white-space: nowrap;">ssize_t *value</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_ff_area_at</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">size_t size</var>,
- <var class="Fa" style="white-space: nowrap;">int match</var>,
- <var class="Fa" style="white-space: nowrap;">ssize_t *value</var>);</p>
-<p class="Pp"><code class="Fn">bit_foreach</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">size_t
- var</var>);</p>
-<p class="Pp"><code class="Fn">bit_foreach_at</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">size_t
- var</var>);</p>
-<p class="Pp"><code class="Fn">bit_foreach_unset</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">size_t
- var</var>);</p>
-<p class="Pp"><code class="Fn">bit_foreach_unset_at</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>, <var class="Fa" style="white-space: nowrap;">size_t
- var</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_nclear</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- stop</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_nset</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t
- stop</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">bit_ntest</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- start</var>, <var class="Fa" style="white-space: nowrap;">size_t stop</var>,
- <var class="Fa" style="white-space: nowrap;">int match</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bit_set</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- bit</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">bitstr_size</code>(<var class="Fa" style="white-space: nowrap;">size_t
- nbits</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">bit_test</code>(<var class="Fa" style="white-space: nowrap;">bitstr_t
- *name</var>, <var class="Fa" style="white-space: nowrap;">size_t
- bit</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">These macros operate on strings of bits.</p>
-<p class="Pp" id="bit_alloc">The function
- <a class="permalink" href="#bit_alloc"><code class="Fn">bit_alloc</code></a>()
- returns a pointer of type &#x201C;<var class="Fa">bitstr_t *</var>&#x201D;
- to sufficient space to store <var class="Fa">nbits</var> bits, or
- <code class="Dv">NULL</code> if no space is available. If successful, the
- returned bit string is initialized with all bits cleared.</p>
-<p class="Pp" id="bit_decl">The macro
- <a class="permalink" href="#bit_decl"><code class="Fn">bit_decl</code></a>()
- declares a bit string with sufficient space to store
- <var class="Fa">nbits</var> bits. <code class="Fn">bit_decl</code>() may be
- used to include statically sized bit strings in structure definitions or to
- create bit strings on the stack. Users of this macro are responsible for
- initialization of the bit string, typically via a global initialization of
- the containing struct or use of the <code class="Fn">bit_nset</code>() or
- <a class="permalink" href="#bin_nclear"><code class="Fn" id="bin_nclear">bin_nclear</code></a>()
- functions.</p>
-<p class="Pp" id="bitstr_size">The macro
- <a class="permalink" href="#bitstr_size"><code class="Fn">bitstr_size</code></a>()
- returns the number of bytes necessary to store <var class="Fa">nbits</var>
- bits. This is useful for copying bit strings.</p>
-<p class="Pp" id="bit_clear">The functions
- <a class="permalink" href="#bit_clear"><code class="Fn">bit_clear</code></a>()
- and
- <a class="permalink" href="#bit_set"><code class="Fn" id="bit_set">bit_set</code></a>()
- clear or set the zero-based numbered bit <var class="Fa">bit</var>, in the
- bit string <var class="Ar">name</var>.</p>
-<p class="Pp" id="bit_nset">The
- <a class="permalink" href="#bit_nset"><code class="Fn">bit_nset</code></a>()
- and
- <a class="permalink" href="#bit_nclear"><code class="Fn" id="bit_nclear">bit_nclear</code></a>()
- functions set or clear the zero-based numbered bits from
- <var class="Fa">start</var> through <var class="Fa">stop</var> in the bit
- string <var class="Ar">name</var>.</p>
-<p class="Pp" id="bit_test">The
- <a class="permalink" href="#bit_test"><code class="Fn">bit_test</code></a>()
- function evaluates to non-zero if the zero-based numbered bit
- <var class="Fa">bit</var> of bit string <var class="Fa">name</var> is set,
- and zero otherwise.</p>
-<p class="Pp" id="bit_ntest">The
- <a class="permalink" href="#bit_ntest"><code class="Fn">bit_ntest</code></a>()
- function evaluates to non-zero if the zero-based numbered bits from
- <var class="Fa">start</var> through <var class="Fa">stop</var> in the bit
- string <var class="Ar">name</var> all have the value
- <var class="Ar">match</var>.</p>
-<p class="Pp" id="bit_ffc">The function
- <a class="permalink" href="#bit_ffc"><code class="Fn">bit_ffc</code></a>()
- stores in the location referenced by <var class="Fa">value</var> the
- zero-based number of the first bit not set in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>.
- If all bits are set, the location referenced by <var class="Fa">value</var>
- is set to -1.</p>
-<p class="Pp" id="bit_ffs">The
- <a class="permalink" href="#bit_ffs"><code class="Fn">bit_ffs</code></a>()
- function stores in the location referenced by <var class="Fa">value</var>
- the zero-based number of the first bit set in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>.
- If no bits are set, the location referenced by <var class="Fa">value</var>
- is set to -1.</p>
-<p class="Pp" id="bit_ffc_at">The function
- <a class="permalink" href="#bit_ffc_at"><code class="Fn">bit_ffc_at</code></a>()
- stores in the location referenced by <var class="Fa">value</var> the
- zero-based number of the first bit not set in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>,
- at or after the zero-based bit index <var class="Fa">start</var>. If all
- bits at or after <var class="Fa">start</var> are set, the location
- referenced by <var class="Fa">value</var> is set to -1.</p>
-<p class="Pp" id="bit_ffs_at">The
- <a class="permalink" href="#bit_ffs_at"><code class="Fn">bit_ffs_at</code></a>()
- function stores in the location referenced by <var class="Fa">value</var>
- the zero-based number of the first bit set in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>,
- at or after the zero-based bit index <var class="Fa">start</var>. If no bits
- are set after <var class="Fa">start</var>, the location referenced by
- <var class="Fa">value</var> is set to -1.</p>
-<p class="Pp" id="bit_ff_at">The
- <a class="permalink" href="#bit_ff_at"><code class="Fn">bit_ff_at</code></a>()
- function stores in the location referenced by <var class="Fa">value</var>
- the zero-based number of the first bit in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>,
- at or after the zero-based bit index <var class="Fa">start</var> that has
- value <var class="Fa">match</var>. If no bits after
- <var class="Fa">start</var> match that value, the location referenced by
- <var class="Fa">value</var> is set to -1.</p>
-<p class="Pp" id="bit_ffc_area">The
- <a class="permalink" href="#bit_ffc_area"><code class="Fn">bit_ffc_area</code></a>()
- function stores in the location referenced by <var class="Fa">value</var>
- the zero-based number of the first bit beginning a sequence of unset bits of
- at least <var class="Fa">size</var> unset bits in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>.
- If no sequence of contiguous unset bits of the specified
- <var class="Fa">size</var> can be found, the location referenced by
- <var class="Fa">value</var> is set to -1.</p>
-<p class="Pp" id="bit_ffs_area">The
- <a class="permalink" href="#bit_ffs_area"><code class="Fn">bit_ffs_area</code></a>()
- function stores in the location referenced by <var class="Fa">value</var>
- the zero-based number of the first bit beginning a sequence of set bits of
- at least <var class="Fa">size</var> set bits in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>.
- If no sequence of contiguous set bits of the specified
- <var class="Fa">size</var> can be found, the location referenced by
- <var class="Fa">value</var> is set to -1.</p>
-<p class="Pp" id="bit_ffc_area_at">The
- <a class="permalink" href="#bit_ffc_area_at"><code class="Fn">bit_ffc_area_at</code></a>()
- function stores in the location referenced by <var class="Fa">value</var>
- the zero-based number of the first bit beginning a sequence of unset bits of
- at least <var class="Fa">size</var> unset bits in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>,
- at or after the zero-based bit index <var class="Fa">start</var>. If no
- sequence of contiguous unset bits of the specified
- <var class="Fa">size</var> can be found at or after
- <var class="Fa">start</var>, the location referenced by
- <var class="Fa">value</var> is set to -1.</p>
-<p class="Pp" id="bit_ffs_area_at">The
- <a class="permalink" href="#bit_ffs_area_at"><code class="Fn">bit_ffs_area_at</code></a>()
- function stores in the location referenced by <var class="Fa">value</var>
- the zero-based number of the first bit beginning a sequence of set bits of
- at least <var class="Fa">size</var> set bits in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>,
- at or after the zero-based bit index <var class="Fa">start</var>. If no
- sequence of contiguous set bits of the specified <var class="Fa">size</var>
- can be found at or after <var class="Fa">start</var>, the location
- referenced by <var class="Fa">value</var> is set to -1.</p>
-<p class="Pp" id="bit_ff_area_at">The
- <a class="permalink" href="#bit_ff_area_at"><code class="Fn">bit_ff_area_at</code></a>()
- function stores in the location referenced by <var class="Fa">value</var>
- the zero-based number of the first bit beginning a sequence of bits of at
- least <var class="Fa">size</var> bits in the array of
- <var class="Fa">nbits</var> bits referenced by <var class="Fa">name</var>,
- at or after the zero-based bit index <var class="Fa">start</var> in which
- all bits have the value <var class="Fa">match</var>. If no sequence of
- contiguous such bits of the specified <var class="Fa">size</var> can be
- found at or after <var class="Fa">start</var>, the location referenced by
- <var class="Fa">value</var> is set to -1.</p>
-<p class="Pp" id="bit_count">The
- <a class="permalink" href="#bit_count"><code class="Fn">bit_count</code></a>()
- function stores in the location referenced by <var class="Fa">value</var>
- the number of bits set in the array of <var class="Fa">nbits</var> bits
- referenced by <var class="Fa">name</var>, at or after the zero-based bit
- index <var class="Fa">start</var>.</p>
-<p class="Pp" id="bit_foreach">The macro
- <a class="permalink" href="#bit_foreach"><code class="Fn">bit_foreach</code></a>()
- traverses all set bits in the array of <var class="Fa">nbits</var>
- referenced by <var class="Fa">name</var> in the forward direction, assigning
- each location in turn to <var class="Fa">var</var>.</p>
-<p class="Pp" id="bit_foreach_at">The macro
- <a class="permalink" href="#bit_foreach_at"><code class="Fn">bit_foreach_at</code></a>()
- traverses all set bits in the array of <var class="Fa">nbits</var>
- referenced by <var class="Fa">name</var> in the forward direction at or
- after the zero-based bit index <var class="Fa">start</var>, assigning each
- location in turn to <var class="Fa">var</var>.</p>
-<p class="Pp" id="bit_foreach_unset">The macro
- <a class="permalink" href="#bit_foreach_unset"><code class="Fn">bit_foreach_unset</code></a>()
- traverses all unset bits in the array of <var class="Fa">nbits</var>
- referenced by <var class="Fa">name</var> in the forward direction, assigning
- each location in turn to <var class="Fa">var</var>.</p>
-<p class="Pp" id="bit_foreach_unset_at">The macro
- <a class="permalink" href="#bit_foreach_unset_at"><code class="Fn">bit_foreach_unset_at</code></a>()
- traverses all unset bits in the array of <var class="Fa">nbits</var>
- referenced by <var class="Fa">name</var> in the forward direction at or
- after the zero-based bit index <var class="Fa">start</var>, assigning each
- location in turn to <var class="Fa">var</var>.</p>
-<p class="Pp">The arguments in bit string macros are evaluated only once and may
- safely have side effects.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<div class="Bd Bd-indent Li">
-<pre>#include &lt;limits.h&gt;
-#include &lt;bitstring.h&gt;
-
-...
-#define LPR_BUSY_BIT 0
-#define LPR_FORMAT_BIT 1
-#define LPR_DOWNLOAD_BIT 2
-...
-#define LPR_AVAILABLE_BIT 9
-#define LPR_MAX_BITS 10
-
-make_lpr_available()
-{
- bitstr_t bit_decl(bitlist, LPR_MAX_BITS);
- ...
- bit_nclear(bitlist, 0, LPR_MAX_BITS - 1);
- ...
- if (!bit_test(bitlist, LPR_BUSY_BIT)) {
- bit_clear(bitlist, LPR_FORMAT_BIT);
- bit_clear(bitlist, LPR_DOWNLOAD_BIT);
- bit_set(bitlist, LPR_AVAILABLE_BIT);
- }
-}</pre>
-</div>
-</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">malloc(3)</a>, <a class="Xr">stdbit(3)</a>,
- <a class="Xr">bitset(9)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">bitstring</code> functions first appeared in
- <span class="Ux">4.4BSD</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">November 21, 2023</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/end.3 4.html b/static/freebsd/man3/end.3 4.html
deleted file mode 100644
index d4224605..00000000
--- a/static/freebsd/man3/end.3 4.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">END(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">END(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">end</code>, <code class="Nm">etext</code>,
- <code class="Nm">edata</code> &#x2014; <span class="Nd">end boundaries of
- image segments</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<p class="Pp"><var class="Vt">extern end</var>;
- <br/>
- <var class="Vt">extern etext</var>;
- <br/>
- <var class="Vt">extern edata</var>;</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The globals <var class="Va">end</var>, <var class="Va">etext</var>
- and <var class="Va">edata</var> are program segment end addresses.</p>
-<p class="Pp"><var class="Va">etext</var> is the first address after the end of
- the text segment.</p>
-<p class="Pp"><var class="Va">edata</var> is the first address after the end of
- the initialized data segment.</p>
-<p class="Pp"><var class="Va">end</var> is the first address after the end of
- the data segment (BSS) when the program is loaded. Use the
- <a class="Xr">sbrk(2)</a> system call with zero as its argument to find the
- current end of the data segment.</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">sbrk(2)</a>, <a class="Xr">malloc(3)</a>,
- <a class="Xr">a.out(5)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">An <code class="Nm">end</code> manual page appeared in
- <span class="Ux">Version&#x00A0;6 AT&amp;T UNIX</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
-<p class="Pp">Traditionally, no variable existed that pointed to the start of
- the text segment because the text segment always started at address zero.
- Although it is no longer valid to make this assumption, no variable similar
- to the ones documented above exists to point to the start of the text
- segment.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 28, 2000</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/fpgetround.3 4.html b/static/freebsd/man3/fpgetround.3 4.html
deleted file mode 100644
index 4547c0b3..00000000
--- a/static/freebsd/man3/fpgetround.3 4.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">FPGETROUND(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">FPGETROUND(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">fpgetround</code>,
- <code class="Nm">fpsetround</code>, <code class="Nm">fpsetprec</code>,
- <code class="Nm">fpgetprec</code>, <code class="Nm">fpgetmask</code>,
- <code class="Nm">fpsetmask</code>, <code class="Nm">fpgetsticky</code>,
- <code class="Nm">fpresetsticky</code> &#x2014; <span class="Nd">IEEE
- floating point interface</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">ieeefp.h</a>&gt;</code></p>
-<div class="Bd Pp Li">
-<pre>typedef enum {
- FP_RN, /* round to nearest */
- FP_RM, /* round down to minus infinity */
- FP_RP, /* round up to plus infinity */
- FP_RZ /* truncate */
-} fp_rnd_t;</pre>
-</div>
-<br/>
-<var class="Ft">fp_rnd_t</var>
-<br/>
-<code class="Fn">fpgetround</code>(<var class="Fa" style="white-space: nowrap;">void</var>);
-<p class="Pp"><var class="Ft">fp_rnd_t</var>
- <br/>
- <code class="Fn">fpsetround</code>(<var class="Fa" style="white-space: nowrap;">fp_rnd_t
- direction</var>);</p>
-<div class="Bd Pp Li">
-<pre>typedef enum {
- FP_PS, /* 24 bit (single-precision) */
- FP_PRS, /* reserved */
- FP_PD, /* 53 bit (double-precision) */
- FP_PE /* 64 bit (extended-precision) */
-} fp_prec_t;</pre>
-</div>
-<br/>
-<var class="Ft">fp_prec_t</var>
-<br/>
-<code class="Fn">fpgetprec</code>(<var class="Fa" style="white-space: nowrap;">void</var>);
-<p class="Pp"><var class="Ft">fp_prec_t</var>
- <br/>
- <code class="Fn">fpsetprec</code>(<var class="Fa" style="white-space: nowrap;">fp_prec_t
- precision</var>);</p>
-<div class="Bd Pp Li">
-<pre>#define fp_except_t int
-#define FP_X_INV 0x01 /* invalid operation */
-#define FP_X_DNML 0x02 /* denormal */
-#define FP_X_DZ 0x04 /* zero divide */
-#define FP_X_OFL 0x08 /* overflow */
-#define FP_X_UFL 0x10 /* underflow */
-#define FP_X_IMP 0x20 /* (im)precision */
-#define FP_X_STK 0x40 /* stack fault */</pre>
-</div>
-<br/>
-<var class="Ft">fp_except_t</var>
-<br/>
-<code class="Fn">fpgetmask</code>(<var class="Fa" style="white-space: nowrap;">void</var>);
-<p class="Pp"><var class="Ft">fp_except_t</var>
- <br/>
- <code class="Fn">fpsetmask</code>(<var class="Fa" style="white-space: nowrap;">fp_except_t
- mask</var>);</p>
-<p class="Pp"><var class="Ft">fp_except_t</var>
- <br/>
- <code class="Fn">fpgetsticky</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-<p class="Pp"><var class="Ft">fp_except_t</var>
- <br/>
- <code class="Fn">fpresetsticky</code>(<var class="Fa" style="white-space: nowrap;">fp_except_t
- sticky</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The routines described herein are deprecated. New code should use
- the functionality provided by <a class="Xr">fenv(3)</a>.</p>
-<p class="Pp">When a floating point exception is detected, the exception sticky
- flag is set and the exception mask is tested. If the mask is set, then a
- trap occurs. These routines allow both setting the floating point exception
- masks, and resetting the exception sticky flags after an exception is
- detected. In addition, they allow setting the floating point rounding mode
- and precision.</p>
-<p class="Pp" id="fpgetround">The
- <a class="permalink" href="#fpgetround"><code class="Fn">fpgetround</code></a>()
- function returns the current floating point rounding mode.</p>
-<p class="Pp" id="fpsetround">The
- <a class="permalink" href="#fpsetround"><code class="Fn">fpsetround</code></a>()
- function sets the floating point rounding mode and returns the previous
- mode.</p>
-<p class="Pp" id="fpgetprec">The
- <a class="permalink" href="#fpgetprec"><code class="Fn">fpgetprec</code></a>()
- function returns the current floating point precision.</p>
-<p class="Pp" id="fpsetprec">The
- <a class="permalink" href="#fpsetprec"><code class="Fn">fpsetprec</code></a>()
- function sets the floating point precision and returns the previous
- precision.</p>
-<p class="Pp" id="fpgetmask">The
- <a class="permalink" href="#fpgetmask"><code class="Fn">fpgetmask</code></a>()
- function returns the current floating point exception masks.</p>
-<p class="Pp" id="fpsetmask">The
- <a class="permalink" href="#fpsetmask"><code class="Fn">fpsetmask</code></a>()
- function sets the floating point exception masks and returns the previous
- masks.</p>
-<p class="Pp" id="fpgetsticky">The
- <a class="permalink" href="#fpgetsticky"><code class="Fn">fpgetsticky</code></a>()
- function returns the current floating point sticky flags.</p>
-<p class="Pp" id="fpresetsticky">The
- <a class="permalink" href="#fpresetsticky"><code class="Fn">fpresetsticky</code></a>()
- function clears the floating point sticky flags and returns the previous
- flags.</p>
-<p class="Pp">Sample code which prevents a trap on divide-by-zero:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>fpsetmask(~FP_X_DZ);
-a = 1.0;
-b = 0;
-c = a / b;
-fpresetsticky(FP_X_DZ);
-fpsetmask(FP_X_DZ);</pre>
-</div>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">The <code class="Fn">fpgetprec</code>() and
- <code class="Fn">fpsetprec</code>() functions provide functionality
- unavailable on many platforms. At present, they are implemented only on the
- i386 and amd64 platforms. Changing precision is not a supported feature: it
- may be ineffective when code is compiled to take advantage of SSE, and many
- library functions and compiler optimizations depend upon the default
- precision for correct behavior.</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">fenv(3)</a>, <a class="Xr">isnan(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">These routines are based on SysV/386 routines of the same
- name.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="CAVEATS"><a class="permalink" href="#CAVEATS">CAVEATS</a></h1>
-<p class="Pp">After a floating point exception and before a mask is set, the
- sticky flags must be reset. If another exception occurs before the sticky
- flags are reset, then a wrong exception type may be signaled.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">December 3, 2010</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/intro.3 3.html b/static/freebsd/man3/intro.3 3.html
deleted file mode 100644
index fc96555d..00000000
--- a/static/freebsd/man3/intro.3 3.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">INTRO(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">INTRO(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">intro</code> &#x2014;
- <span class="Nd">introduction to the C libraries</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<table class="Nm">
- <tr>
- <td><code class="Nm">cc</code></td>
- <td>[<var class="Ar">flags</var>] <var class="Ar">file ...</var>
- [<code class="Fl">-llibrary</code>]</td>
- </tr>
-</table>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">This section provides an overview of the C library functions,
- their error returns and other common definitions and concepts. Most of these
- functions are available from the C library, <i class="Em">libc</i>. Other
- libraries, such as the math library, <i class="Em">libm</i>, must be
- indicated at compile time with the <code class="Fl">-l</code> option of the
- compiler.</p>
-<p class="Pp">The various libraries (followed by the loader flag):</p>
-<dl class="Bl-tag">
- <dt id="libbluetooth"><a class="permalink" href="#libbluetooth"><i class="Em">libbluetooth</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">bluetooth</var>) The bluetooth
- library. See <a class="Xr">bluetooth(3)</a>.</dd>
- <dt id="libc"><a class="permalink" href="#libc"><i class="Em">libc</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">c</var>) Standard C library
- functions. When using the C compiler <a class="Xr">cc(1)</a>, it is not
- necessary to supply the loader flag
- <code class="Fl">-l</code><var class="Ar">c</var> for these functions.
- There are several `libraries' or groups of functions included inside of
- <i class="Em">libc</i>:
- <dl class="Bl-tag">
- <dt>standard I/O routines</dt>
- <dd>see <a class="Xr">stdio(3)</a></dd>
- <dt>database routines</dt>
- <dd>see <a class="Xr">db(3)</a></dd>
- <dt>bit string operators</dt>
- <dd>see <a class="Xr">bitstring(3)</a></dd>
- <dt>bit and byte utilities</dt>
- <dd>see <a class="Xr">stdbit(3)</a></dd>
- <dt>string operators</dt>
- <dd>see <a class="Xr">string(3)</a> and <a class="Xr">bstring(3)</a></dd>
- <dt>character tests and character operators</dt>
- <dd>see <a class="Xr">ctype(3)</a></dd>
- <dt>storage allocation</dt>
- <dd>see <a class="Xr">mpool(3)</a></dd>
- <dt>regular-expressions</dt>
- <dd>see <a class="Xr">regex(3)</a></dd>
- <dt>remote procedure calls (RPC)</dt>
- <dd>see <a class="Xr">rpc(3)</a></dd>
- <dt>time functions</dt>
- <dd>see <a class="Xr">time(3)</a></dd>
- <dt>signal handling</dt>
- <dd>see <a class="Xr">signal(3)</a></dd>
- </dl>
- </dd>
- <dt id="libcalendar"><a class="permalink" href="#libcalendar"><i class="Em">libcalendar</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">calendar</var>) The calendar
- arithmetic library. See <a class="Xr">calendar(3)</a>.</dd>
- <dt id="libcam"><a class="permalink" href="#libcam"><i class="Em">libcam</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">cam</var>) The common access
- method user library. See <a class="Xr">cam(3)</a>.</dd>
- <dt id="libcrypt"><a class="permalink" href="#libcrypt"><i class="Em">libcrypt</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">crypt</var>) The crypt library.
- See <a class="Xr">crypt(3)</a>.</dd>
- <dt id="libcurses"><a class="permalink" href="#libcurses"><i class="Em">libcurses</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">curses</var>
- <code class="Fl">-l</code><var class="Ar">termcap</var>) Terminal
- independent screen management routines for two dimensional non-bitmap
- display terminals. See <a class="Xr">ncurses(3)</a>.</dd>
- <dt id="libcuse"><a class="permalink" href="#libcuse"><i class="Em">libcuse</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">cuse</var>) The userland
- character device library. See <a class="Xr">cuse(3)</a>.</dd>
- <dt id="libcompat"><a class="permalink" href="#libcompat"><i class="Em">libcompat</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">compat</var>) Functions which
- are obsolete but are available for compatibility with
- <span class="Ux">4.3BSD</span>. In particular, a number of system call
- interfaces provided in previous releases of <span class="Ux">BSD</span>
- have been included for source code compatibility. Use of these routines
- should, for the most part, be avoided. The manual page entry for each
- compatibility routine indicates the proper interface to use.</dd>
- <dt id="libdevinfo"><a class="permalink" href="#libdevinfo"><i class="Em">libdevinfo</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">devinfo</var>) The Device and
- Resource Information Utility library. See
- <a class="Xr">devinfo(3)</a>.</dd>
- <dt id="libdevstat"><a class="permalink" href="#libdevstat"><i class="Em">libdevstat</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">devstat</var>) The Device
- Statistics library. See <a class="Xr">devstat(3)</a>.</dd>
- <dt id="libdwarf"><a class="permalink" href="#libdwarf"><i class="Em">libdwarf</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">dwarf</var>) The DWARF access
- library. See <a class="Xr">dwarf(3)</a>.</dd>
- <dt id="libelf"><a class="permalink" href="#libelf"><i class="Em">libelf</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">elf</var>) The ELF access
- library. See <a class="Xr">elf(3)</a>.</dd>
- <dt id="libfetch"><a class="permalink" href="#libfetch"><i class="Em">libfetch</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">fetch</var>) The file transfer
- library. See <a class="Xr">fetch(3)</a>.</dd>
- <dt id="libfigpar"><a class="permalink" href="#libfigpar"><i class="Em">libfigpar</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">figpar</var>) The configuration
- file parsing library. See <a class="Xr">figpar(3)</a>.</dd>
- <dt id="libgpio"><a class="permalink" href="#libgpio"><i class="Em">libgpio</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">gpio</var>) The general-purpose
- input output library (GPIO). See <a class="Xr">gpio(3)</a>.</dd>
- <dt id="libgssapi"><a class="permalink" href="#libgssapi"><i class="Em">libgssapi</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">gssapi</var>) The generic
- security service application programming interface. See
- <a class="Xr">gssapi(3)</a>.</dd>
- <dt id="libjail"><a class="permalink" href="#libjail"><i class="Em">libjail</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">jail</var>) The jail library.
- See <a class="Xr">jail(3)</a>.</dd>
- <dt id="libkvm"><a class="permalink" href="#libkvm"><i class="Em">libkvm</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">kvm</var>) Functions used to
- access kernel memory are in this library. They can be used against both a
- running system and a crash dump. See <a class="Xr">kvm(3)</a>.</dd>
- <dt id="libl"><a class="permalink" href="#libl"><i class="Em">libl</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">l</var>) The library for
- <a class="Xr">lex(1)</a>.</dd>
- <dt id="libm"><a class="permalink" href="#libm"><i class="Em">libm</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">m</var>) The math library. See
- <a class="Xr">math(3)</a>.</dd>
- <dt id="libmd"><a class="permalink" href="#libmd"><i class="Em">libmd</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">md</var>) The message digest
- library. See <a class="Xr">md4(3)</a>, <a class="Xr">md5(3)</a>,
- <a class="Xr">sha(3)</a>, <a class="Xr">sha256(3)</a>,
- <a class="Xr">sha512(3)</a>, <a class="Xr">ripemd(3)</a>,
- <a class="Xr">skein(3)</a>.</dd>
- <dt id="libmp"><a class="permalink" href="#libmp"><i class="Em">libmp</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">mp</var>)</dd>
- <dt id="libpam"><a class="permalink" href="#libpam"><i class="Em">libpam</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">pam</var>) The pluggable
- authentication module library. See <a class="Xr">pam(3)</a>.</dd>
- <dt id="libpcap"><a class="permalink" href="#libpcap"><i class="Em">libpcap</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">pcap</var>) The packet capture
- library. See <a class="Xr">pcap(3)</a>.</dd>
- <dt id="libpmc"><a class="permalink" href="#libpmc"><i class="Em">libpmc</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">pmc</var>) The performance
- counters library. See <a class="Xr">pmc(3)</a>.</dd>
- <dt id="libpthread"><a class="permalink" href="#libpthread"><i class="Em">libpthread</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">pthread</var>) The POSIX
- threads library. See <a class="Xr">pthread(3)</a>.</dd>
- <dt id="libstdthreads"><a class="permalink" href="#libstdthreads"><i class="Em">libstdthreads</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">stdthreads</var>) The ISO C11
- standard <code class="In">&lt;<a class="In">threads.h</a>&gt;</code>
- library. See <a class="Xr">thrd_create(3)</a>.</dd>
- <dt id="libsysdecode"><a class="permalink" href="#libsysdecode"><i class="Em">libsysdecode</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">sysdecode</var>) The system
- argument decoding library. See <a class="Xr">sysdecode(3)</a>.</dd>
- <dt id="libtermcap"><a class="permalink" href="#libtermcap"><i class="Em">libtermcap</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">termcap</var>) The terminal
- independent operation library package. See
- <a class="Xr">termcap(3)</a>.</dd>
- <dt id="libusb"><a class="permalink" href="#libusb"><i class="Em">libusb</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">usb</var>) The USB access
- library. See <a class="Xr">usb(3)</a>.</dd>
- <dt id="libvgl"><a class="permalink" href="#libvgl"><i class="Em">libvgl</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">vgl</var>) The video graphics
- library. See <a class="Xr">vgl(3)</a>.</dd>
- <dt id="liby"><a class="permalink" href="#liby"><i class="Em">liby</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">y</var>) The library for
- <a class="Xr">yacc(1)</a>.</dd>
- <dt id="libz"><a class="permalink" href="#libz"><i class="Em">libz</i></a></dt>
- <dd>(<code class="Fl">-l</code><var class="Ar">z</var>) The general-purpose
- data compression library. See <a class="Xr">zlib(3)</a>.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1>
-<dl class="Bl-tag Bl-compact">
- <dt><span class="Pa">/usr/lib/libc.a</span></dt>
- <dd>the C library</dd>
- <dt><span class="Pa">/usr/lib/libm.a</span></dt>
- <dd>the math library</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY_TYPES"><a class="permalink" href="#LIBRARY_TYPES">LIBRARY
- TYPES</a></h1>
-<p class="Pp">The system libraries are located in <span class="Pa">/lib</span>
- and <span class="Pa">/usr/lib</span>. A library has the following naming
- convention:</p>
-<div class="Bd Pp Bd-indent">
-<pre>libc.so.7</pre>
-</div>
-<p class="Pp">Libraries with an &#x2018;.a&#x2019; suffix are static. When a
- program is linked against a static library, all necessary library code will
- be included in the binary. This means the binary can be run even when the
- libraries are unavailable. However, it can be inefficient with both disk
- space and memory usage during execution. The C compiler,
- <a class="Xr">cc(1)</a>, can be instructed to link statically by specifying
- the <code class="Fl">-static</code> flag.</p>
-<p class="Pp">Libraries with a &#x2018;.so.X&#x2019; suffix are dynamic
- libraries. When code is linked dynamically, the library code that the
- application needs is not included in the binary. Instead, data structures
- are added containing information about which dynamic libraries to link with.
- When the binary is executed, the run-time linker <a class="Xr">ld.so(1)</a>
- reads these data structures and loads them into the process virtual address
- space. <a class="Xr">rtld(1)</a> loads the shared libraries when the program
- is executed.</p>
-<p class="Pp">&#x2018;X&#x2019; represents the library version number of the
- library. In the example above, a binary linked with
- <span class="Pa">libc.so.8</span> would not be usable on a system where only
- <span class="Pa">libc.so.7</span> is available.</p>
-<p class="Pp">The advantages of dynamic libraries are that multiple instances of
- the same library can share address space, and the physical size of the
- binary is smaller. A namespace per shared library is available via hidden
- visibility, allowing multiple compilation units in a library to share things
- without making them available to other libraries. It is possible to load
- libraries dynamically via <a class="Xr">dlopen(3)</a>. The disadvantage is
- the added complexity that comes with loading the libraries dynamically, and
- the extra time taken to load the libraries. Of course, if the libraries are
- not available, the binary will be unable to execute. Calls across shared
- libraries are also slightly slower and cannot be inlined, not even with link
- time optimization. The C compiler, <a class="Xr">cc(1)</a>, can be
- instructed to link dynamically by specifying the
- <code class="Fl">-shared</code> flag.</p>
-<p class="Pp">Shared libraries, as well as static libraries on architectures
- which produce position-independent executables (PIEs) by default, contain
- position-independent code (PIC). Normally, compilers produce relocatable
- code. Relocatable code needs to be modified at run-time, depending on where
- in memory it is to be run. The C compiler, <a class="Xr">cc(1)</a>, can be
- instructed to generate PIC code by specifying the
- <code class="Fl">-fPIC</code> flag.</p>
-<p class="Pp">Static libraries are generated using the <a class="Xr">ar(1)</a>
- utility. The libraries contain an index to the contents of the library,
- stored within the library itself. The index lists each symbol defined by a
- member of a library that is a relocatable object file. This speeds up
- linking to the library, and allows routines in the library to call each
- other regardless of their placement within the library.</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">ar(1)</a>, <a class="Xr">cc(1)</a>,
- <a class="Xr">ld(1)</a>, <a class="Xr">nm(1)</a>,
- <a class="Xr">intro(2)</a>, <a class="Xr">math(3)</a>,
- <a class="Xr">stdio(3)</a>, <a class="Xr">make.conf(5)</a>,
- <a class="Xr">src.conf(5)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">An <code class="Nm">intro</code> manual appeared in
- <span class="Ux">Version&#x00A0;7 AT&amp;T UNIX</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">November 10, 2025</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/makedev.3 3.html b/static/freebsd/man3/makedev.3 3.html
deleted file mode 100644
index ee9cb148..00000000
--- a/static/freebsd/man3/makedev.3 3.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">MAKEDEV(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">MAKEDEV(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">makedev</code>, <code class="Nm">major</code>,
- <code class="Nm">minor</code> &#x2014; <span class="Nd">device number
- conversion</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/types.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">dev_t</var>
- <br/>
- <code class="Fn">makedev</code>(<var class="Fa" style="white-space: nowrap;">int
- major</var>, <var class="Fa" style="white-space: nowrap;">int
- minor</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">major</code>(<var class="Fa" style="white-space: nowrap;">dev_t
- dev</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">minor</code>(<var class="Fa" style="white-space: nowrap;">dev_t
- dev</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#makedev"><code class="Fn" id="makedev">makedev</code></a>()
- macro returns a device number created from the provided
- <var class="Fa">major</var> and <var class="Fa">minor</var> number. The
- <a class="permalink" href="#major"><code class="Fn" id="major">major</code></a>()
- and
- <a class="permalink" href="#minor"><code class="Fn" id="minor">minor</code></a>()
- macros return the original numbers from the device number
- <var class="Fa">dev</var>. In other words, for a value
- <var class="Va">dev</var> of the type <var class="Vt">dev_t</var>, and
- values <var class="Va">ma</var>, <var class="Va">mi</var> of the type
- <var class="Vt">int</var>, the assertions</p>
-<div class="Bd Bd-indent"><code class="Li">dev == makedev(major(dev),
- minor(dev))</code></div>
-<div class="Bd Bd-indent"><code class="Li">ma == major(makedev(ma,
- mi))</code></div>
-<div class="Bd Bd-indent"><code class="Li">mi == minor(makedev(ma,
- mi))</code></div>
-are valid.
-<p class="Pp">In previous implementations of <span class="Ux">FreeBSD</span> all
- block and character devices were uniquely identified by a pair of stable
- major and minor numbers. The major number referred to a certain device class
- (e.g. disks, TTYs) while the minor number identified an instance within the
- device class. Later versions of <span class="Ux">FreeBSD</span>
- automatically generate a unique device number for each character device
- visible in <span class="Pa">/dev/</span>. These numbers are not divided in
- device classes and are not guaranteed to be stable upon reboot or driver
- reload.</p>
-<p class="Pp">On <span class="Ux">FreeBSD</span> these macros are only used by
- utilities that need to exchange numbers with other operating systems that
- may use different encodings for <var class="Vt">dev_t</var>, but also
- applications that present these numbers to the user in a more conventional
- way.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">major</code>() and
- <code class="Fn">minor</code>() macros return numbers whose value can span
- the complete range of an <var class="Vt">int</var>.</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">mknod(2)</a>, <a class="Xr">devname(3)</a>,
- <a class="Xr">devfs(4)</a></p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 3, 2017</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/offsetof.3 4.html b/static/freebsd/man3/offsetof.3 4.html
deleted file mode 100644
index 99b78ff5..00000000
--- a/static/freebsd/man3/offsetof.3 4.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">OFFSETOF(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">OFFSETOF(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">offsetof</code> &#x2014; <span class="Nd">offset
- of a structure member</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">stddef.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">size_t</var>
- <br/>
- <code class="Fn">offsetof</code>(<var class="Fa" style="white-space: nowrap;">type</var>,
- <var class="Fa" style="white-space: nowrap;">member</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#offsetof"><code class="Fn" id="offsetof">offsetof</code></a>()
- macro expands to an integer constant expression of type
- <var class="Ft">size_t</var> and yields the offset, in bytes, of the field
- <var class="Ar">member</var> from the start of the structure
- <var class="Ar">type</var>.</p>
-<p class="Pp">A compiler error will result if <var class="Ar">member</var> is
- not aligned to a byte boundary (i.e. it is a bit-field).</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">offsetof</code>() macro conforms to
- <span class="St">ANSI X3.159-1989
- (&#x201C;ANSI&#x00A0;C89&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">February 18, 2010</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread.3 3.html b/static/freebsd/man3/pthread.3 3.html
deleted file mode 100644
index 5f60899b..00000000
--- a/static/freebsd/man3/pthread.3 3.html
+++ /dev/null
@@ -1,466 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD(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">pthread</code> &#x2014; <span class="Nd">POSIX
- thread functions</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">POSIX threads are a set of functions that support applications
- with requirements for multiple flows of control, called
- <a class="permalink" href="#threads"><i class="Em" id="threads">threads</i></a>,
- within a process. Multithreading is used to improve the performance of a
- program.</p>
-<p class="Pp">The POSIX thread functions are summarized in this section in the
- following groups:</p>
-<p class="Pp"></p>
-<ul class="Bl-bullet Bd-indent Bl-compact">
- <li>Thread Routines</li>
- <li>Attribute Object Routines</li>
- <li>Mutex Routines</li>
- <li>Condition Variable Routines</li>
- <li>Read/Write Lock Routines</li>
- <li>Per-Thread Context Routines</li>
- <li>Cleanup Routines</li>
-</ul>
-<p class="Pp"><span class="Ux">FreeBSD</span> extensions to the POSIX thread
- functions are summarized in <a class="Xr">pthread_np(3)</a>.</p>
-<section class="Ss">
-<h2 class="Ss" id="Thread_Routines"><a class="permalink" href="#Thread_Routines">Thread
- Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_create"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_create"><code class="Fn">pthread_create</code></a>(<var class="Fa">pthread_t
- *thread</var>, <var class="Fa">const pthread_attr_t *attr</var>,
- <var class="Fa">void *(*start_routine)(void *)</var>, <var class="Fa">void
- *arg</var>);</dt>
- <dd>Creates a new thread of execution.</dd>
- <dt id="pthread_cancel"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_cancel"><code class="Fn">pthread_cancel</code></a>(<var class="Fa">pthread_t
- thread</var>)</dt>
- <dd>Cancels execution of a thread.</dd>
- <dt id="pthread_detach"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_detach"><code class="Fn">pthread_detach</code></a>(<var class="Fa">pthread_t
- thread</var>)</dt>
- <dd>Marks a thread for deletion.</dd>
- <dt id="pthread_equal"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_equal"><code class="Fn">pthread_equal</code></a>(<var class="Fa">pthread_t
- t1</var>, <var class="Fa">pthread_t t2</var>)</dt>
- <dd>Compares two thread IDs.</dd>
- <dt id="pthread_exit"><var class="Ft">void</var>
- <a class="permalink" href="#pthread_exit"><code class="Fn">pthread_exit</code></a>(<var class="Fa">void
- *value_ptr</var>)</dt>
- <dd>Terminates the calling thread.</dd>
- <dt id="pthread_join"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_join"><code class="Fn">pthread_join</code></a>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">void **value_ptr</var>)</dt>
- <dd>Causes the calling thread to wait for the termination of the specified
- thread.</dd>
- <dt id="pthread_kill"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_kill"><code class="Fn">pthread_kill</code></a>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">int sig</var>)</dt>
- <dd>Delivers a signal to a specified thread.</dd>
- <dt id="pthread_once"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_once"><code class="Fn">pthread_once</code></a>(<var class="Fa">pthread_once_t
- *once_control</var>, <var class="Fa">void (*init_routine)(void)</var>)</dt>
- <dd>Calls an initialization routine once.</dd>
- <dt id="pthread_self"><var class="Ft">pthread_t</var>
- <a class="permalink" href="#pthread_self"><code class="Fn">pthread_self</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Returns the thread ID of the calling thread.</dd>
- <dt id="pthread_setcancelstate"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_setcancelstate"><code class="Fn">pthread_setcancelstate</code></a>(<var class="Fa">int
- state</var>, <var class="Fa">int *oldstate</var>)</dt>
- <dd>Sets the current thread's cancelability state.</dd>
- <dt id="pthread_setcanceltype"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_setcanceltype"><code class="Fn">pthread_setcanceltype</code></a>(<var class="Fa">int
- type</var>, <var class="Fa">int *oldtype</var>)</dt>
- <dd>Sets the current thread's cancelability type.</dd>
- <dt id="pthread_testcancel"><var class="Ft">void</var>
- <a class="permalink" href="#pthread_testcancel"><code class="Fn">pthread_testcancel</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Creates a cancellation point in the calling thread.</dd>
- <dt id="pthread_yield"><var class="Ft">void</var>
- <a class="permalink" href="#pthread_yield"><code class="Fn">pthread_yield</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Allows the scheduler to run another thread instead of the current
- one.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Attribute_Object_Routines"><a class="permalink" href="#Attribute_Object_Routines">Attribute
- Object Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_attr_destroy"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_destroy"><code class="Fn">pthread_attr_destroy</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>)</dt>
- <dd>Destroy a thread attributes object.</dd>
- <dt id="pthread_attr_getinheritsched"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_getinheritsched"><code class="Fn">pthread_attr_getinheritsched</code></a>(<var class="Fa">const
- pthread_attr_t *attr</var>, <var class="Fa">int *inheritsched</var>);</dt>
- <dd>Get the inherit scheduling attribute from a thread attributes object.</dd>
- <dt id="pthread_attr_getschedparam"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_getschedparam"><code class="Fn">pthread_attr_getschedparam</code></a>(<var class="Fa">const
- pthread_attr_t *attr</var>, <var class="Fa">struct sched_param
- *param</var>);</dt>
- <dd>Get the scheduling parameter attribute from a thread attributes
- object.</dd>
- <dt id="pthread_attr_getschedpolicy"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_getschedpolicy"><code class="Fn">pthread_attr_getschedpolicy</code></a>(<var class="Fa">const
- pthread_attr_t *attr</var>, <var class="Fa">int *policy</var>)</dt>
- <dd>Get the scheduling policy attribute from a thread attributes object.</dd>
- <dt id="pthread_attr_getscope"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_getscope"><code class="Fn">pthread_attr_getscope</code></a>(<var class="Fa">const
- pthread_attr_t *attr</var>, <var class="Fa">int *contentionscope</var>)</dt>
- <dd>Get the contention scope attribute from a thread attributes object.</dd>
- <dt id="pthread_attr_getstacksize"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_getstacksize"><code class="Fn">pthread_attr_getstacksize</code></a>(<var class="Fa">const
- pthread_attr_t *attr</var>, <var class="Fa">size_t *stacksize</var>)</dt>
- <dd>Get the stack size attribute from a thread attributes object.</dd>
- <dt id="pthread_attr_getstackaddr"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_getstackaddr"><code class="Fn">pthread_attr_getstackaddr</code></a>(<var class="Fa">const
- pthread_attr_t *attr</var>, <var class="Fa">void **stackaddr</var>)</dt>
- <dd>Get the stack address attribute from a thread attributes object.</dd>
- <dt id="pthread_attr_getdetachstate"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_getdetachstate"><code class="Fn">pthread_attr_getdetachstate</code></a>(<var class="Fa">const
- pthread_attr_t *attr</var>, <var class="Fa">int *detachstate</var>)</dt>
- <dd>Get the detach state attribute from a thread attributes object.</dd>
- <dt id="pthread_attr_init"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_init"><code class="Fn">pthread_attr_init</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>)</dt>
- <dd>Initialize a thread attributes object with default values.</dd>
- <dt id="pthread_attr_setinheritsched"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_setinheritsched"><code class="Fn">pthread_attr_setinheritsched</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>, <var class="Fa">int inheritsched</var>)</dt>
- <dd>Set the inherit scheduling attribute in a thread attributes object.</dd>
- <dt id="pthread_attr_setschedparam"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_setschedparam"><code class="Fn">pthread_attr_setschedparam</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>, <var class="Fa">const struct sched_param *param</var>);</dt>
- <dd>Set the scheduling parameter attribute in a thread attributes object.</dd>
- <dt id="pthread_attr_setschedpolicy"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_setschedpolicy"><code class="Fn">pthread_attr_setschedpolicy</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>, <var class="Fa">int policy</var>)</dt>
- <dd>Set the scheduling policy attribute in a thread attributes object.</dd>
- <dt id="pthread_attr_setscope"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_setscope"><code class="Fn">pthread_attr_setscope</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>, <var class="Fa">int contentionscope</var>)</dt>
- <dd>Set the contention scope attribute in a thread attributes object.</dd>
- <dt id="pthread_attr_setstacksize"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_setstacksize"><code class="Fn">pthread_attr_setstacksize</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>, <var class="Fa">size_t stacksize</var>)</dt>
- <dd>Set the stack size attribute in a thread attributes object.</dd>
- <dt id="pthread_attr_setstackaddr"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_setstackaddr"><code class="Fn">pthread_attr_setstackaddr</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>, <var class="Fa">void *stackaddr</var>)</dt>
- <dd>Set the stack address attribute in a thread attributes object.</dd>
- <dt id="pthread_attr_setdetachstate"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_setdetachstate"><code class="Fn">pthread_attr_setdetachstate</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>, <var class="Fa">int detachstate</var>)</dt>
- <dd>Set the detach state in a thread attributes object.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Mutex_Routines"><a class="permalink" href="#Mutex_Routines">Mutex
- Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_mutexattr_destroy"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_destroy"><code class="Fn">pthread_mutexattr_destroy</code></a>(<var class="Fa">pthread_mutexattr_t
- *attr</var>)</dt>
- <dd>Destroy a mutex attributes object.</dd>
- <dt id="pthread_mutexattr_getprioceiling"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_getprioceiling"><code class="Fn">pthread_mutexattr_getprioceiling</code></a>(<var class="Fa">const
- pthread_mutexattr_t *restrict attr</var>, <var class="Fa">int *restrict
- ceiling</var>)</dt>
- <dd>Obtain priority ceiling attribute of mutex attribute object.</dd>
- <dt id="pthread_mutexattr_getprotocol"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_getprotocol"><code class="Fn">pthread_mutexattr_getprotocol</code></a>(<var class="Fa">const
- pthread_mutexattr_t *restrict attr</var>, <var class="Fa">int *restrict
- protocol</var>)</dt>
- <dd>Obtain protocol attribute of mutex attribute object.</dd>
- <dt id="pthread_mutexattr_gettype"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_gettype"><code class="Fn">pthread_mutexattr_gettype</code></a>(<var class="Fa">const
- pthread_mutexattr_t *restrict attr</var>, <var class="Fa">int *restrict
- type</var>)</dt>
- <dd>Obtain the mutex type attribute in the specified mutex attributes
- object.</dd>
- <dt id="pthread_mutexattr_init"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_init"><code class="Fn">pthread_mutexattr_init</code></a>(<var class="Fa">pthread_mutexattr_t
- *attr</var>)</dt>
- <dd>Initialize a mutex attributes object with default values.</dd>
- <dt id="pthread_mutexattr_setprioceiling"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_setprioceiling"><code class="Fn">pthread_mutexattr_setprioceiling</code></a>(<var class="Fa">pthread_mutexattr_t
- *attr</var>, <var class="Fa">int ceiling</var>)</dt>
- <dd>Set priority ceiling attribute of mutex attribute object.</dd>
- <dt id="pthread_mutexattr_setprotocol"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_setprotocol"><code class="Fn">pthread_mutexattr_setprotocol</code></a>(<var class="Fa">pthread_mutexattr_t
- *attr</var>, <var class="Fa">int protocol</var>)</dt>
- <dd>Set protocol attribute of mutex attribute object.</dd>
- <dt id="pthread_mutexattr_settype"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_settype"><code class="Fn">pthread_mutexattr_settype</code></a>(<var class="Fa">pthread_mutexattr_t
- *attr</var>, <var class="Fa">int type</var>)</dt>
- <dd>Set the mutex type attribute that is used when a mutex is created.</dd>
- <dt id="pthread_mutex_destroy"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutex_destroy"><code class="Fn">pthread_mutex_destroy</code></a>(<var class="Fa">pthread_mutex_t
- *mutex</var>)</dt>
- <dd>Destroy a mutex.</dd>
- <dt id="pthread_mutex_init"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutex_init"><code class="Fn">pthread_mutex_init</code></a>(<var class="Fa">pthread_mutex_t
- *mutex</var>, <var class="Fa">const pthread_mutexattr_t *attr</var>);</dt>
- <dd>Initialize a mutex with specified attributes.</dd>
- <dt id="pthread_mutex_lock"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutex_lock"><code class="Fn">pthread_mutex_lock</code></a>(<var class="Fa">pthread_mutex_t
- *mutex</var>)</dt>
- <dd>Lock a mutex and block until it becomes available.</dd>
- <dt id="pthread_mutex_timedlock"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutex_timedlock"><code class="Fn">pthread_mutex_timedlock</code></a>(<var class="Fa">pthread_mutex_t
- *mutex</var>, <var class="Fa">const struct timespec *abstime</var>);</dt>
- <dd>Lock a mutex and block until it becomes available or until the timeout
- expires.</dd>
- <dt id="pthread_mutex_trylock"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutex_trylock"><code class="Fn">pthread_mutex_trylock</code></a>(<var class="Fa">pthread_mutex_t
- *mutex</var>)</dt>
- <dd>Try to lock a mutex, but do not block if the mutex is locked by another
- thread, including the current thread.</dd>
- <dt id="pthread_mutex_unlock"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutex_unlock"><code class="Fn">pthread_mutex_unlock</code></a>(<var class="Fa">pthread_mutex_t
- *mutex</var>)</dt>
- <dd>Unlock a mutex.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Condition_Variable_Routines"><a class="permalink" href="#Condition_Variable_Routines">Condition
- Variable Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_condattr_destroy"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_condattr_destroy"><code class="Fn">pthread_condattr_destroy</code></a>(<var class="Fa">pthread_condattr_t
- *attr</var>)</dt>
- <dd>Destroy a condition variable attributes object.</dd>
- <dt id="pthread_condattr_init"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_condattr_init"><code class="Fn">pthread_condattr_init</code></a>(<var class="Fa">pthread_condattr_t
- *attr</var>)</dt>
- <dd>Initialize a condition variable attributes object with default
- values.</dd>
- <dt id="pthread_cond_broadcast"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_cond_broadcast"><code class="Fn">pthread_cond_broadcast</code></a>(<var class="Fa">pthread_cond_t
- *cond</var>)</dt>
- <dd>Unblock all threads currently blocked on the specified condition
- variable.</dd>
- <dt id="pthread_cond_destroy"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_cond_destroy"><code class="Fn">pthread_cond_destroy</code></a>(<var class="Fa">pthread_cond_t
- *cond</var>)</dt>
- <dd>Destroy a condition variable.</dd>
- <dt id="pthread_cond_init"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_cond_init"><code class="Fn">pthread_cond_init</code></a>(<var class="Fa">pthread_cond_t
- *cond</var>, <var class="Fa">const pthread_condattr_t *attr</var>)</dt>
- <dd>Initialize a condition variable with specified attributes.</dd>
- <dt id="pthread_cond_signal"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_cond_signal"><code class="Fn">pthread_cond_signal</code></a>(<var class="Fa">pthread_cond_t
- *cond</var>)</dt>
- <dd>Unblock at least one of the threads blocked on the specified condition
- variable.</dd>
- <dt id="pthread_cond_timedwait"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_cond_timedwait"><code class="Fn">pthread_cond_timedwait</code></a>(<var class="Fa">pthread_cond_t
- *cond</var>, <var class="Fa">pthread_mutex_t *mutex</var>,
- <var class="Fa">const struct timespec *abstime</var>);</dt>
- <dd>Unlock the specified mutex, wait no longer than the specified time for a
- condition, and then relock the mutex.</dd>
- <dt id="pthread_cond_wait"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_cond_wait"><code class="Fn">pthread_cond_wait</code></a>(<var class="Fa">pthread_cond_t
- *</var>, <var class="Fa">pthread_mutex_t *mutex</var>)</dt>
- <dd>Unlock the specified mutex, wait for a condition, and relock the
- mutex.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Read/Write_Lock_Routines"><a class="permalink" href="#Read/Write_Lock_Routines">Read/Write
- Lock Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_rwlock_destroy"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlock_destroy"><code class="Fn">pthread_rwlock_destroy</code></a>(<var class="Fa">pthread_rwlock_t
- *lock</var>)</dt>
- <dd>Destroy a read/write lock object.</dd>
- <dt id="pthread_rwlock_init"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlock_init"><code class="Fn">pthread_rwlock_init</code></a>(<var class="Fa">pthread_rwlock_t
- *lock</var>, <var class="Fa">const pthread_rwlockattr_t *attr</var>);</dt>
- <dd>Initialize a read/write lock object.</dd>
- <dt id="pthread_rwlock_rdlock"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlock_rdlock"><code class="Fn">pthread_rwlock_rdlock</code></a>(<var class="Fa">pthread_rwlock_t
- *lock</var>)</dt>
- <dd>Lock a read/write lock for reading, blocking until the lock can be
- acquired.</dd>
- <dt id="pthread_rwlock_tryrdlock"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlock_tryrdlock"><code class="Fn">pthread_rwlock_tryrdlock</code></a>(<var class="Fa">pthread_rwlock_t
- *lock</var>)</dt>
- <dd>Attempt to lock a read/write lock for reading, without blocking if the
- lock is unavailable.</dd>
- <dt id="pthread_rwlock_trywrlock"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlock_trywrlock"><code class="Fn">pthread_rwlock_trywrlock</code></a>(<var class="Fa">pthread_rwlock_t
- *lock</var>)</dt>
- <dd>Attempt to lock a read/write lock for writing, without blocking if the
- lock is unavailable.</dd>
- <dt id="pthread_rwlock_unlock"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlock_unlock"><code class="Fn">pthread_rwlock_unlock</code></a>(<var class="Fa">pthread_rwlock_t
- *lock</var>)</dt>
- <dd>Unlock a read/write lock.</dd>
- <dt id="pthread_rwlock_wrlock"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlock_wrlock"><code class="Fn">pthread_rwlock_wrlock</code></a>(<var class="Fa">pthread_rwlock_t
- *lock</var>)</dt>
- <dd>Lock a read/write lock for writing, blocking until the lock can be
- acquired.</dd>
- <dt id="pthread_rwlockattr_destroy"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlockattr_destroy"><code class="Fn">pthread_rwlockattr_destroy</code></a>(<var class="Fa">pthread_rwlockattr_t
- *attr</var>)</dt>
- <dd>Destroy a read/write lock attribute object.</dd>
- <dt id="pthread_rwlockattr_getpshared"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlockattr_getpshared"><code class="Fn">pthread_rwlockattr_getpshared</code></a>(<var class="Fa">const
- pthread_rwlockattr_t *attr</var>, <var class="Fa">int *pshared</var>);</dt>
- <dd>Retrieve the process shared setting for the read/write lock attribute
- object.</dd>
- <dt id="pthread_rwlockattr_init"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlockattr_init"><code class="Fn">pthread_rwlockattr_init</code></a>(<var class="Fa">pthread_rwlockattr_t
- *attr</var>)</dt>
- <dd>Initialize a read/write lock attribute object.</dd>
- <dt id="pthread_rwlockattr_setpshared"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_rwlockattr_setpshared"><code class="Fn">pthread_rwlockattr_setpshared</code></a>(<var class="Fa">pthread_rwlockattr_t
- *attr</var>, <var class="Fa">int pshared</var>)</dt>
- <dd>Set the process shared setting for the read/write lock attribute
- object.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Per-Thread_Context_Routines"><a class="permalink" href="#Per-Thread_Context_Routines">Per-Thread
- Context Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_key_create"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_key_create"><code class="Fn">pthread_key_create</code></a>(<var class="Fa">pthread_key_t
- *key</var>, <var class="Fa">void (*routine)(void *)</var>)</dt>
- <dd>Create a thread-specific data key.</dd>
- <dt id="pthread_key_delete"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_key_delete"><code class="Fn">pthread_key_delete</code></a>(<var class="Fa">pthread_key_t
- key</var>)</dt>
- <dd>Delete a thread-specific data key.</dd>
- <dt id="pthread_getspecific"><var class="Ft">void *</var>
- <a class="permalink" href="#pthread_getspecific"><code class="Fn">pthread_getspecific</code></a>(<var class="Fa">pthread_key_t
- key</var>)</dt>
- <dd>Get the thread-specific value for the specified key.</dd>
- <dt id="pthread_setspecific"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_setspecific"><code class="Fn">pthread_setspecific</code></a>(<var class="Fa">pthread_key_t
- key</var>, <var class="Fa">const void *value_ptr</var>)</dt>
- <dd>Set the thread-specific value for the specified key.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Cleanup_Routines"><a class="permalink" href="#Cleanup_Routines">Cleanup
- Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_atfork"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_atfork"><code class="Fn">pthread_atfork</code></a>(<var class="Fa">void
- (*prepare)(void)</var>, <var class="Fa">void (*parent)(void)</var>,
- <var class="Fa">void (*child)(void)</var>);</dt>
- <dd>Register fork handlers.</dd>
- <dt id="pthread_cleanup_pop"><var class="Ft">void</var>
- <a class="permalink" href="#pthread_cleanup_pop"><code class="Fn">pthread_cleanup_pop</code></a>(<var class="Fa">int
- execute</var>)</dt>
- <dd>Remove the routine at the top of the calling thread's cancellation cleanup
- stack and optionally invoke it.</dd>
- <dt id="pthread_cleanup_push"><var class="Ft">void</var>
- <a class="permalink" href="#pthread_cleanup_push"><code class="Fn">pthread_cleanup_push</code></a>(<var class="Fa">void
- (*routine)(void *)</var>, <var class="Fa">void *routine_arg</var>)</dt>
- <dd>Push the specified cancellation cleanup handler onto the calling thread's
- cancellation stack.</dd>
-</dl>
-</section>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">The current <span class="Ux">FreeBSD</span> POSIX thread
- implementation is built into the <span class="Lb">1:1 Threading Library
- (libthr, -lthr)</span> library. It contains thread-safe versions of
- <span class="Lb">Standard C&#x00A0;Library (libc, -lc)</span> functions and
- the thread functions. Threaded applications are linked with this
- library.</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">libthr(3)</a>, <a class="Xr">pthread_atfork(3)</a>,
- <a class="Xr">pthread_attr(3)</a>, <a class="Xr">pthread_cancel(3)</a>,
- <a class="Xr">pthread_cleanup_pop(3)</a>,
- <a class="Xr">pthread_cleanup_push(3)</a>,
- <a class="Xr">pthread_cond_broadcast(3)</a>,
- <a class="Xr">pthread_cond_destroy(3)</a>,
- <a class="Xr">pthread_cond_init(3)</a>,
- <a class="Xr">pthread_cond_signal(3)</a>,
- <a class="Xr">pthread_cond_timedwait(3)</a>,
- <a class="Xr">pthread_cond_wait(3)</a>,
- <a class="Xr">pthread_condattr_destroy(3)</a>,
- <a class="Xr">pthread_condattr_init(3)</a>,
- <a class="Xr">pthread_create(3)</a>, <a class="Xr">pthread_detach(3)</a>,
- <a class="Xr">pthread_equal(3)</a>, <a class="Xr">pthread_exit(3)</a>,
- <a class="Xr">pthread_getspecific(3)</a>, <a class="Xr">pthread_join(3)</a>,
- <a class="Xr">pthread_key_delete(3)</a>, <a class="Xr">pthread_kill(3)</a>,
- <a class="Xr">pthread_mutex_destroy(3)</a>,
- <a class="Xr">pthread_mutex_init(3)</a>,
- <a class="Xr">pthread_mutex_lock(3)</a>,
- <a class="Xr">pthread_mutex_trylock(3)</a>,
- <a class="Xr">pthread_mutex_unlock(3)</a>,
- <a class="Xr">pthread_mutexattr_destroy(3)</a>,
- <a class="Xr">pthread_mutexattr_getprioceiling(3)</a>,
- <a class="Xr">pthread_mutexattr_getprotocol(3)</a>,
- <a class="Xr">pthread_mutexattr_gettype(3)</a>,
- <a class="Xr">pthread_mutexattr_init(3)</a>,
- <a class="Xr">pthread_mutexattr_setprioceiling(3)</a>,
- <a class="Xr">pthread_mutexattr_setprotocol(3)</a>,
- <a class="Xr">pthread_mutexattr_settype(3)</a>,
- <a class="Xr">pthread_np(3)</a>, <a class="Xr">pthread_once(3)</a>,
- <a class="Xr">pthread_rwlock_destroy(3)</a>,
- <a class="Xr">pthread_rwlock_init(3)</a>,
- <a class="Xr">pthread_rwlock_rdlock(3)</a>,
- <a class="Xr">pthread_rwlock_unlock(3)</a>,
- <a class="Xr">pthread_rwlock_wrlock(3)</a>,
- <a class="Xr">pthread_rwlockattr_destroy(3)</a>,
- <a class="Xr">pthread_rwlockattr_getpshared(3)</a>,
- <a class="Xr">pthread_rwlockattr_init(3)</a>,
- <a class="Xr">pthread_rwlockattr_setpshared(3)</a>,
- <a class="Xr">pthread_self(3)</a>,
- <a class="Xr">pthread_setcancelstate(3)</a>,
- <a class="Xr">pthread_setcanceltype(3)</a>,
- <a class="Xr">pthread_setspecific(3)</a>,
- <a class="Xr">pthread_testcancel(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The functions with the <code class="Nm">pthread_</code> prefix and
- not <code class="Nm">_np</code> suffix or
- <code class="Nm">pthread_rwlock</code> prefix conform to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span>.</p>
-<p class="Pp">The functions with the <code class="Nm">pthread_</code> prefix and
- <code class="Nm">_np</code> suffix are non-portable extensions to POSIX
- threads.</p>
-<p class="Pp">The functions with the <code class="Nm">pthread_rwlock</code>
- prefix are extensions created by The Open Group as part of the
- <span class="St">Version&#x00A0;2 of the Single UNIX Specification
- (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_affinity_np.3 3.html b/static/freebsd/man3/pthread_affinity_np.3 3.html
deleted file mode 100644
index c239533c..00000000
--- a/static/freebsd/man3/pthread_affinity_np.3 3.html
+++ /dev/null
@@ -1,138 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_AFFINITY_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_AFFINITY_NP(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">pthread_getaffinity_np</code>,
- <code class="Nm">pthread_setaffinity_np</code> &#x2014;
- <span class="Nd">manage CPU affinity</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_getaffinity_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- td</var>, <var class="Fa" style="white-space: nowrap;">size_t
- cpusetsize</var>, <var class="Fa" style="white-space: nowrap;">cpuset_t
- *cpusetp</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_setaffinity_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- td</var>, <var class="Fa" style="white-space: nowrap;">size_t
- cpusetsize</var>, <var class="Fa" style="white-space: nowrap;">const
- cpuset_t *cpusetp</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp"><a class="permalink" href="#pthread_getaffinity_np"><code class="Fn" id="pthread_getaffinity_np">pthread_getaffinity_np</code></a>()
- and <code class="Fn">pthread_setaffinity_np</code>() allow the manipulation
- of sets of CPUs available to the specified thread.</p>
-<p class="Pp" id="pthread_getaffinity_np~2">Masks of type
- <var class="Ft">cpuset_t</var> are composed using the
- <code class="Dv">CPU_SET</code> macros. If the user-supplied mask is not
- large enough to fit all of the matching CPUs,
- <a class="permalink" href="#pthread_getaffinity_np~2"><code class="Fn">pthread_getaffinity_np</code></a>()
- fails with <code class="Er">ERANGE</code>. Calls to
- <code class="Fn">pthread_setaffinity_np</code>() tolerate masks of any size
- with no restrictions. The kernel uses the meaningful part of the mask, where
- the upper bound is the maximum CPU id present in the system. If bits for
- non-existing CPUs are set, calls to
- <code class="Fn">pthread_setaffinity_np</code>() fail with
- <code class="Er">EINVAL</code>.</p>
-<p class="Pp">The supplied mask should have a size of
- <var class="Fa">cpusetsize</var> bytes. This size is usually provided by
- calling <code class="Li">sizeof(cpuset_t)</code> which is ultimately
- determined by the value of <code class="Dv">CPU_SETSIZE</code> as defined in
- <code class="In">&lt;<a class="In">sys/cpuset.h</a>&gt;</code>.</p>
-<p class="Pp" id="pthread_getaffinity_np~3"><a class="permalink" href="#pthread_getaffinity_np~3"><code class="Fn">pthread_getaffinity_np</code></a>()
- retrieves the mask from the thread specified by <var class="Fa">td</var>,
- and stores it in the space provided by <var class="Fa">cpusetp</var>.</p>
-<p class="Pp" id="pthread_setaffinity_np"><a class="permalink" href="#pthread_setaffinity_np"><code class="Fn">pthread_setaffinity_np</code></a>()
- attempts to set the mask for the thread specified by
- <var class="Fa">td</var> to the value in <var class="Fa">cpusetp</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_getaffinity_np</code>() and
- <code class="Fn">pthread_setaffinity_np</code>() functions will return zero.
- Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_getaffinity_np</code>() and
- <code class="Fn">pthread_setaffinity_np</code>() functions may fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The <var class="Fa">cpusetp</var> argument specified when calling
- <code class="Fn">pthread_setaffinity_np</code>() was not a valid
- value.</dd>
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>The <code class="Fn">pthread_setaffinity_np</code>() call would leave a
- thread without a valid CPU to run on because the set does not overlap with
- the thread's anonymous mask.</dd>
- <dt id="EFAULT">[<a class="permalink" href="#EFAULT"><code class="Er">EFAULT</code></a>]</dt>
- <dd>The <var class="Fa">cpusetp</var> pointer passed was invalid.</dd>
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>The thread specified by the <var class="Fa">td</var> argument could not be
- found.</dd>
- <dt id="ERANGE">[<a class="permalink" href="#ERANGE"><code class="Er">ERANGE</code></a>]</dt>
- <dd>The <var class="Fa">cpusetsize</var> was smaller than needed to fit all of
- the matching CPUs.</dd>
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The calling thread did not have the credentials required to complete the
- operation.</dd>
-</dl>
-</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">cpuset(1)</a>, <a class="Xr">cpuset(2)</a>,
- <a class="Xr">cpuset_getid(2)</a>, <a class="Xr">cpuset_setid(2)</a>,
- <a class="Xr">pthread(3)</a>,
- <a class="Xr">pthread_attr_getaffinity_np(3)</a>,
- <a class="Xr">pthread_attr_setaffinity_np(3)</a>,
- <a class="Xr">pthread_np(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Nm">pthread_getaffinity_np</code> and
- <code class="Nm">pthread_setaffinity_np</code> functions are non-standard
- <span class="Ux">FreeBSD</span> extensions and may be not available on other
- operating systems.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">pthread_getaffinity_np</code> and
- <code class="Nm">pthread_setaffinity_np</code> function first appeared in
- <span class="Ux">FreeBSD 7.2</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <code class="Nm">pthread_getaffinity_np</code> and
- <code class="Nm">pthread_setaffinity_np</code> functions were written by
- <span class="An">David Xu</span>
- &lt;<a class="Mt" href="mailto:davidxu@FreeBSD.org">davidxu@FreeBSD.org</a>&gt;,
- and this manpage was written by <span class="An">Xin LI</span>
- &lt;<a class="Mt" href="mailto:delphij@FreeBSD.org">delphij@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">January 29, 2023</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_atfork.3 3.html b/static/freebsd/man3/pthread_atfork.3 3.html
deleted file mode 100644
index b0774124..00000000
--- a/static/freebsd/man3/pthread_atfork.3 3.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_ATFORK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_ATFORK(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">pthread_atfork</code> &#x2014;
- <span class="Nd">register fork handlers</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_atfork</code>(<var class="Fa">void
- (*prepare)(void)</var>, <var class="Fa">void (*parent)(void)</var>,
- <var class="Fa">void (*child)(void)</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_atfork"><code class="Fn" id="pthread_atfork">pthread_atfork</code></a>()
- function declares fork handlers to be called before and after
- <a class="Xr">fork(2)</a>, in the context of the thread that called
- <a class="Xr">fork(2)</a>.</p>
-<p class="Pp" id="pthread_atfork~2">The handlers registered with
- <a class="permalink" href="#pthread_atfork~2"><code class="Fn">pthread_atfork</code></a>()
- are called at the moments in time described below:</p>
-<dl class="Bl-tag">
- <dt><var class="Fa">prepare</var></dt>
- <dd>Before <a class="Xr">fork(2)</a> processing commences in the parent
- process. If more than one <var class="Fa">prepare</var> handler is
- registered they will be called in the opposite order they were
- registered.</dd>
- <dt><var class="Fa">parent</var></dt>
- <dd>After <a class="Xr">fork(2)</a> completes in the parent process. If more
- than one <var class="Fa">parent</var> handler is registered they will be
- called in the same order they were registered.</dd>
- <dt><var class="Fa">child</var></dt>
- <dd>After <a class="Xr">fork(2)</a> processing completes in the child process.
- If more than one <var class="Fa">child</var> handler is registered they
- will be called in the same order they were registered.</dd>
-</dl>
-<p class="Pp">If no handling is desired at one or more of these three points, a
- null pointer may be passed as the corresponding fork handler.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_atfork</code>()
- function will return zero. Otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_atfork</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient table space exists to record the fork handler addresses.</dd>
-</dl>
-</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">fork(2)</a>, <a class="Xr">pthread(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_atfork</code>() function is expected
- to conform to <span class="St">IEEE Std 1003.1
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">This manpage was written by <span class="An">Alex Vasylenko</span>
- &lt;<a class="Mt" href="mailto:lxv@omut.org">lxv@omut.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">June 21, 2004</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_attr.3 3.html b/static/freebsd/man3/pthread_attr.3 3.html
deleted file mode 100644
index 44ab49e9..00000000
--- a/static/freebsd/man3/pthread_attr.3 3.html
+++ /dev/null
@@ -1,272 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_ATTR(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_ATTR(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">pthread_attr_init</code>,
- <code class="Nm">pthread_attr_destroy</code>,
- <code class="Nm">pthread_attr_setstack</code>,
- <code class="Nm">pthread_attr_getstack</code>,
- <code class="Nm">pthread_attr_setstacksize</code>,
- <code class="Nm">pthread_attr_getstacksize</code>,
- <code class="Nm">pthread_attr_setguardsize</code>,
- <code class="Nm">pthread_attr_getguardsize</code>,
- <code class="Nm">pthread_attr_setstackaddr</code>,
- <code class="Nm">pthread_attr_getstackaddr</code>,
- <code class="Nm">pthread_attr_setdetachstate</code>,
- <code class="Nm">pthread_attr_getdetachstate</code>,
- <code class="Nm">pthread_attr_setinheritsched</code>,
- <code class="Nm">pthread_attr_getinheritsched</code>,
- <code class="Nm">pthread_attr_setschedparam</code>,
- <code class="Nm">pthread_attr_getschedparam</code>,
- <code class="Nm">pthread_attr_setschedpolicy</code>,
- <code class="Nm">pthread_attr_getschedpolicy</code>,
- <code class="Nm">pthread_attr_setscope</code>,
- <code class="Nm">pthread_attr_getscope</code> &#x2014;
- <span class="Nd">thread attribute operations</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setstack</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;"> void
- *stackaddr</var>, <var class="Fa" style="white-space: nowrap;">size_t
- stacksize</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getstack</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t * restrict attr</var>,
- <var class="Fa" style="white-space: nowrap;">void ** restrict
- stackaddr</var>, <var class="Fa" style="white-space: nowrap;">size_t *
- restrict stacksize</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setstacksize</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">size_t
- stacksize</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getstacksize</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t *restrict attr</var>,
- <var class="Fa" style="white-space: nowrap;">size_t *restrict
- stacksize</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setguardsize</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">size_t
- guardsize</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getguardsize</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t * restrict attr</var>,
- <var class="Fa" style="white-space: nowrap;">size_t * restrict
- guardsize</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setstackaddr</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">void
- *stackaddr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getstackaddr</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t *attr</var>,
- <var class="Fa" style="white-space: nowrap;">void **stackaddr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setdetachstate</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- detachstate</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getdetachstate</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- *detachstate</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setinheritsched</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- inheritsched</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getinheritsched</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t *restrict attr</var>,
- <var class="Fa" style="white-space: nowrap;">int *restrct
- inheritsched</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setschedparam</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">const struct
- sched_param *param</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getschedparam</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t *attr</var>,
- <var class="Fa" style="white-space: nowrap;">struct sched_param
- *param</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setschedpolicy</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- policy</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getschedpolicy</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t *restrict attr</var>,
- <var class="Fa" style="white-space: nowrap;">int *restrict
- policy</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setscope</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- contentionscope</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getscope</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t *restrict attr</var>,
- <var class="Fa" style="white-space: nowrap;">int *restrict
- contentionscope</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">Thread attributes are used to specify parameters to
- <a class="permalink" href="#pthread_create"><code class="Fn" id="pthread_create">pthread_create</code></a>().
- One attribute object can be used in multiple calls to
- <code class="Fn">pthread_create</code>(), with or without modifications
- between calls.</p>
-<p class="Pp" id="pthread_attr_init">The
- <a class="permalink" href="#pthread_attr_init"><code class="Fn">pthread_attr_init</code></a>()
- function initializes <var class="Fa">attr</var> with all the default thread
- attributes.</p>
-<p class="Pp" id="pthread_attr_destroy">The
- <a class="permalink" href="#pthread_attr_destroy"><code class="Fn">pthread_attr_destroy</code></a>()
- function destroys <var class="Fa">attr</var>.</p>
-<p class="Pp" id="pthread_attr_set*">The
- <a class="permalink" href="#pthread_attr_set*"><code class="Fn">pthread_attr_set*</code></a>()
- functions set the attribute that corresponds to each function name.</p>
-<p class="Pp" id="pthread_attr_get*">The
- <a class="permalink" href="#pthread_attr_get*"><code class="Fn">pthread_attr_get*</code></a>()
- functions copy the value of the attribute that corresponds to each function
- name to the location pointed to by the second function parameter.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, these functions return 0. Otherwise, an error
- number is returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_attr_init</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Out of memory.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_attr_destroy</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_attr_setstacksize</code>() and
- <code class="Fn">pthread_attr_setstack</code>() functions will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~2">[<a class="permalink" href="#EINVAL~2"><code class="Er">EINVAL</code></a>]</dt>
- <dd><var class="Fa">stacksize</var> is less than
- <code class="Dv">PTHREAD_STACK_MIN</code>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_attr_setdetachstate</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~3">[<a class="permalink" href="#EINVAL~3"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">detachstate</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_attr_setinheritsched</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~4">[<a class="permalink" href="#EINVAL~4"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_attr_setschedparam</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~5">[<a class="permalink" href="#EINVAL~5"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
- <dt id="ENOTSUP">[<a class="permalink" href="#ENOTSUP"><code class="Er">ENOTSUP</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">param</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_attr_setschedpolicy</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~6">[<a class="permalink" href="#EINVAL~6"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
- <dt id="ENOTSUP~2">[<a class="permalink" href="#ENOTSUP~2"><code class="Er">ENOTSUP</code></a>]</dt>
- <dd>Invalid or unsupported value for <var class="Fa">policy</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_attr_setscope</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~7">[<a class="permalink" href="#EINVAL~7"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
- <dt id="ENOTSUP~3">[<a class="permalink" href="#ENOTSUP~3"><code class="Er">ENOTSUP</code></a>]</dt>
- <dd>Invalid or unsupported value for
- <var class="Fa">contentionscope</var>.</dd>
-</dl>
-</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">pthread_attr_affinity_np(3)</a>,
- <a class="Xr">pthread_attr_get_np(3)</a>,
- <a class="Xr">pthread_create(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp"><code class="Fn">pthread_attr_init</code>(),
- <code class="Fn">pthread_attr_destroy</code>(),
- <code class="Fn">pthread_attr_setstacksize</code>(),
- <code class="Fn">pthread_attr_getstacksize</code>(),
- <code class="Fn">pthread_attr_setstackaddr</code>(),
- <code class="Fn">pthread_attr_getstackaddr</code>(),
- <code class="Fn">pthread_attr_setdetachstate</code>(), and
- <code class="Fn">pthread_attr_getdetachstate</code>() functions conform to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span></p>
-<p class="Pp">The <code class="Fn">pthread_attr_setinheritsched</code>(),
- <code class="Fn">pthread_attr_getinheritsched</code>(),
- <code class="Fn">pthread_attr_setschedparam</code>(),
- <code class="Fn">pthread_attr_getschedparam</code>(),
- <code class="Fn">pthread_attr_setschedpolicy</code>(),
- <code class="Fn">pthread_attr_getschedpolicy</code>(),
- <code class="Fn">pthread_attr_setscope</code>(), and
- <code class="Fn">pthread_attr_getscope</code>() functions conform to
- <span class="St">Version&#x00A0;2 of the Single UNIX Specification
- (&#x201C;SUSv2&#x201D;)</span></p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_attr_affinity_np.3 3.html b/static/freebsd/man3/pthread_attr_affinity_np.3 3.html
deleted file mode 100644
index 78cbbb23..00000000
--- a/static/freebsd/man3/pthread_attr_affinity_np.3 3.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_ATTR_AFFINITY_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_ATTR_AFFINITY_NP(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">pthread_attr_getaffinity_np</code>,
- <code class="Nm">pthread_attr_setaffinity_np</code> &#x2014;
- <span class="Nd">manage CPU affinity in thread attribute objects</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_getaffinity_np</code>(<var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t *pattr</var>,
- <var class="Fa" style="white-space: nowrap;">size_t cpusetsize</var>,
- <var class="Fa" style="white-space: nowrap;">cpuset_t *cpusetp</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setaffinity_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *pattr</var>, <var class="Fa" style="white-space: nowrap;">size_t
- cpusetsize</var>, <var class="Fa" style="white-space: nowrap;">const
- cpuset_t *cpusetp</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_attr_getaffinity_np"><code class="Fn" id="pthread_attr_getaffinity_np">pthread_attr_getaffinity_np</code></a>()
- and <code class="Fn">pthread_attr_setaffinity_np</code>() functions allow
- the manipulation of sets of CPUs available to the specified thread attribute
- object.</p>
-<p class="Pp" id="pthread_attr_getaffinity_np~2">Masks of type
- <var class="Ft">cpuset_t</var> are composed using the
- <code class="Dv">CPU_SET</code> macros. If the user-supplied mask is not
- large enough to fit all of the matching CPUs,
- <a class="permalink" href="#pthread_attr_getaffinity_np~2"><code class="Fn">pthread_attr_getaffinity_np</code></a>()
- fails with <code class="Er">ERANGE</code>. Calls to
- <code class="Fn">pthread_attr_setaffinity_np</code>() tolerate masks of any
- size with no restrictions.
- <code class="Fn">pthread_attr_setaffinity_np</code>() uses the meaningful
- part of the mask, where the upper bound is the maximum CPU id present in the
- system. If bits for non-existing CPUs are set, calls to
- <code class="Fn">pthread_attr_setaffinity_np</code>() fail with
- <code class="Er">EINVAL</code>.</p>
-<p class="Pp">The supplied mask should have a size of
- <var class="Fa">cpusetsize</var> bytes. This size is usually provided by
- calling <code class="Li">sizeof(cpuset_t)</code> which is ultimately
- determined by the value of <code class="Dv">CPU_SETSIZE</code> as defined in
- <code class="In">&lt;<a class="In">sys/cpuset.h</a>&gt;</code>.</p>
-<p class="Pp" id="pthread_attr_getaffinity_np~3"><a class="permalink" href="#pthread_attr_getaffinity_np~3"><code class="Fn">pthread_attr_getaffinity_np</code></a>()
- retrieves the mask from the thread attribute object specified by
- <var class="Fa">pattr</var>, and stores it in the space provided by
- <var class="Fa">cpusetp</var>.</p>
-<p class="Pp" id="pthread_attr_setaffinity_np"><a class="permalink" href="#pthread_attr_setaffinity_np"><code class="Fn">pthread_attr_setaffinity_np</code></a>()
- sets the mask for the thread attribute object specified by
- <var class="Fa">pattr</var> to the value in
- <var class="Fa">cpusetp</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_attr_getaffinity_np</code>() and
- <code class="Fn">pthread_attr_setaffinity_np</code>() functions will return
- zero. Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_attr_getaffinity_np</code>()
- functions will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The <var class="Fa">pattr</var> or the attribute specified by it is
- <code class="Dv">NULL</code>.</dd>
- <dt id="ERANGE">[<a class="permalink" href="#ERANGE"><code class="Er">ERANGE</code></a>]</dt>
- <dd>The <var class="Fa">cpusetsize</var> is too small.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_attr_setaffinity_np</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~2">[<a class="permalink" href="#EINVAL~2"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The <var class="Fa">pattr</var> or the attribute specified by it is
- <code class="Dv">NULL</code>.</dd>
- <dt id="EINVAL~3">[<a class="permalink" href="#EINVAL~3"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The <var class="Fa">cpusetp</var> specified a CPU that was outside the set
- supported by the kernel.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory exists to store the cpuset mask.</dd>
-</dl>
-</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">cpuset(1)</a>, <a class="Xr">cpuset(2)</a>,
- <a class="Xr">cpuset_getid(2)</a>, <a class="Xr">cpuset_setid(2)</a>,
- <a class="Xr">pthread_getaffinity_np(3)</a>,
- <a class="Xr">pthread_np(3)</a>,
- <a class="Xr">pthread_setaffinity_np(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Nm">pthread_attr_getaffinity_np</code> and
- <code class="Nm">pthread_attr_setaffinity_np</code> functions are
- non-standard <span class="Ux">FreeBSD</span> extensions and may be not
- available on other operating systems.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">pthread_attr_getaffinity_np</code> and
- <code class="Nm">pthread_attr_setaffinity_np</code> functions first appeared
- in <span class="Ux">FreeBSD 7.2</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <code class="Nm">pthread_attr_getaffinity_np</code> and
- <code class="Nm">pthread_attr_setaffinity_np</code> functions were written
- by <span class="An">David Xu</span>
- &lt;<a class="Mt" href="mailto:davidxu@FreeBSD.org">davidxu@FreeBSD.org</a>&gt;,
- and this manpage was written by <span class="An">Xin LI</span>
- &lt;<a class="Mt" href="mailto:delphij@FreeBSD.org">delphij@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">January 29, 2023</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_attr_get_np.3 3.html b/static/freebsd/man3/pthread_attr_get_np.3 3.html
deleted file mode 100644
index 44e831a4..00000000
--- a/static/freebsd/man3/pthread_attr_get_np.3 3.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_ATTR_GET_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_ATTR_GET_NP(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">pthread_attr_get_np</code> &#x2014;
- <span class="Nd">get attributes of an existing thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_get_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- pid</var>, <var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *dst</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_attr_get_np"><code class="Fn" id="pthread_attr_get_np">pthread_attr_get_np</code></a>()
- function is used to retrieve the attributes of the specified thread into an
- existing <var class="Vt">pthread_attr_t</var> structure. The attributes'
- values are the current ones for the target thread, except for the stack top
- address if not properly aligned for the architecture, since in this case its
- value has been adjusted internally before use.</p>
-<p class="Pp" id="pthread_attr_get_np~2">Argument <var class="Fa">dst</var> must
- be a pointer to a valid attributes object (it was initialized at some point
- by <a class="Xr">pthread_attr_init(3)</a> and was not destroyed since then).
- After a successful call to
- <a class="permalink" href="#pthread_attr_get_np~2"><code class="Fn">pthread_attr_get_np</code></a>(),
- the individual attributes' values can be retrieved as usual via the
- corresponding accessor functions as documented in
- <a class="Xr">pthread_attr(3)</a>. After a failed call to
- <code class="Fn">pthread_attr_get_np</code>(), the object pointed to by
- <var class="Fa">dst</var> is left unmodified, and can continue to be used as
- if the failed call never happened.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_attr_get_np</code>()
- function returns 0. Otherwise, an error number is returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<p class="Pp">This function retrieves the stack size of the thread specified by
- the <var class="Fa">pid</var> argument:</p>
-<div class="Bd Pp Li">
-<pre>size_t
-my_thread_stack_size(pthread_t tid)
-{
- pthread_attr_t attr;
- size_t size;
-
- pthread_attr_init(&amp;attr);
- pthread_attr_get_np(tid, &amp;attr);
- pthread_attr_getstacksize(&amp;attr, &amp;size);
- pthread_attr_destroy(&amp;attr);
- return (size);
-}</pre>
-</div>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_attr_get_np</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>One of the arguments has an invalid value.</dd>
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>No thread could be found corresponding to that specified by the given
- thread ID.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>There was not enough memory to allocate additional storage needed by the
- attributes object's implementation.</dd>
-</dl>
-</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">pthread_attr(3)</a>,
- <a class="Xr">pthread_attr_destroy(3)</a>,
- <a class="Xr">pthread_attr_getdetachstate(3)</a>,
- <a class="Xr">pthread_attr_getinheritsched(3)</a>,
- <a class="Xr">pthread_attr_getschedparam(3)</a>,
- <a class="Xr">pthread_attr_getschedpolicy(3)</a>,
- <a class="Xr">pthread_attr_getscope(3)</a>,
- <a class="Xr">pthread_attr_getstack(3)</a>,
- <a class="Xr">pthread_attr_getstackaddr(3)</a>,
- <a class="Xr">pthread_attr_getstacksize(3)</a>,
- <a class="Xr">pthread_attr_init(3)</a>, <a class="Xr">pthread_np(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_attr_get_np</code>() function and
- this manual page were written by <span class="An">Alexey Zelkin</span>
- &lt;<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>&gt;,
- and the latter was revised by
- <br/>
- <span class="An">Olivier Certner</span>
- &lt;<a class="Mt" href="mailto:olce@FreeBSD.org">olce@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">January 5, 2024</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_attr_setcreatesuspend_np.3 3.html b/static/freebsd/man3/pthread_attr_setcreatesuspend_np.3 3.html
deleted file mode 100644
index 8a5578aa..00000000
--- a/static/freebsd/man3/pthread_attr_setcreatesuspend_np.3 3.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_ATTR_SETCREATESUSPEND_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_ATTR_SETCREATESUSPEND_NP(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">pthread_attr_setcreatesuspend_np</code> &#x2014;
- <span class="Nd">prepare attribute for creation of suspended
- thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_attr_setcreatesuspend_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_attr_t
- *attr</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_attr_setcreatesuspend_np"><code class="Fn" id="pthread_attr_setcreatesuspend_np">pthread_attr_setcreatesuspend_np</code></a>()
- instructs <a class="Xr">pthread_create(3)</a> that the thread created with
- the <var class="Fa">attr</var> attribute should be created and left in a
- suspended state until explicitly resumed by the call to
- <a class="permalink" href="#pthread_resume_np"><code class="Fn" id="pthread_resume_np">pthread_resume_np</code></a>()
- or
- <a class="permalink" href="#pthread_resume_all_np"><code class="Fn" id="pthread_resume_all_np">pthread_resume_all_np</code></a>().</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_attr_setcreatesuspend_np</code>()
- function returns the value&#x00A0;0 if successful; otherwise the
- value&#x00A0;-1 is returned and the global variable
- <var class="Va">errno</var> is set to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_attr_setcreatesuspend_np</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">attr</var> is invalid.</dd>
-</dl>
-</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">pthread_attr_destroy(3)</a>,
- <a class="Xr">pthread_attr_init(3)</a>, <a class="Xr">pthread_create(3)</a>,
- <a class="Xr">pthread_np(3)</a>, <a class="Xr">pthread_resume_all_np(3)</a>,
- <a class="Xr">pthread_resume_np(3)</a></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">Alexey
- Zelkin</span>
- &lt;<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_barrier_destroy.3 3.html b/static/freebsd/man3/pthread_barrier_destroy.3 3.html
deleted file mode 100644
index 10145908..00000000
--- a/static/freebsd/man3/pthread_barrier_destroy.3 3.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_BARRIER(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_BARRIER(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">pthread_barrier_destroy</code>,
- <code class="Nm">pthread_barrier_init</code>,
- <code class="Nm">pthread_barrier_wait</code> &#x2014;
- <span class="Nd">destroy, initialize or wait on a barrier object</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_barrier_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_barrier_t
- *barrier</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_barrier_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_barrier_t
- *restrict barrier</var>, <var class="Fa" style="white-space: nowrap;">const
- pthread_barrierattr_t *attr</var>,
- <var class="Fa" style="white-space: nowrap;">unsigned count</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_barrier_wait</code>(<var class="Fa" style="white-space: nowrap;">pthread_barrier_t
- *barrier</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_barrier_init"><code class="Fn" id="pthread_barrier_init">pthread_barrier_init</code></a>()
- function will initialize <var class="Fa">barrier</var> with attributes
- specified in <var class="Fa">attr</var>, or if it is
- <code class="Dv">NULL</code>, with default attributes. The number of threads
- that must call <code class="Fn">pthread_barrier_wait</code>() before any of
- the waiting threads can be released is specified by
- <var class="Fa">count</var>. The
- <a class="permalink" href="#pthread_barrier_destroy"><code class="Fn" id="pthread_barrier_destroy">pthread_barrier_destroy</code></a>()
- function will destroy <var class="Fa">barrier</var> and release any
- resources that may have been allocated on its behalf.</p>
-<p class="Pp" id="pthread_barrier_wait">The
- <a class="permalink" href="#pthread_barrier_wait"><code class="Fn">pthread_barrier_wait</code></a>()
- function will synchronize calling threads at <var class="Fa">barrier</var>.
- The threads will be blocked from making further progress until a sufficient
- number of threads calls this function. The number of threads that must call
- it before any of them will be released is determined by the
- <var class="Fa">count</var> argument to
- <code class="Fn">pthread_barrier_init</code>(). Once the threads have been
- released the barrier will be reset.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">In <span class="Lb">1:1 Threading Library (libthr, -lthr)</span>
- the <code class="Dv">PTHREAD_BARRIER_SERIAL_THREAD</code> return value will
- always be returned by the last thread to reach the barrier.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, both
- <code class="Fn">pthread_barrier_destroy</code>() and
- <code class="Fn">pthread_barrier_init</code>() will return zero. Otherwise,
- an error number will be returned to indicate the error. If the call to
- <code class="Fn">pthread_barrier_wait</code>() is successful, all but one of
- the threads will return zero. That one thread will return
- <code class="Dv">PTHREAD_BARRIER_SERIAL_THREAD</code>. Otherwise, an error
- number will be returned to indicate the error.</p>
-<p class="Pp">None of these functions will return
- <code class="Er">EINTR</code>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_barrier_destroy</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd>An attempt was made to destroy <var class="Fa">barrier</var> while it was
- in use.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_barrier_destroy</code>() and
- <code class="Fn">pthread_barrier_wait</code>() functions may fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">barrier</var> is invalid.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_barrier_init</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The system lacks resources, other than memory, to initialize
- <var class="Fa">barrier</var>.</dd>
- <dt id="EINVAL~2">[<a class="permalink" href="#EINVAL~2"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The <var class="Fa">count</var> argument is less than 1.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory to initialize <var class="Fa">barrier</var>.</dd>
-</dl>
-</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">pthread_barrierattr(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_barrier_destroy</code>(),
- <code class="Fn">pthread_barrier_init</code>() and
- <code class="Fn">pthread_barrier_wait</code>() functions first appeared in
- <span class="Lb">N:M Threading Library (libkse, -lkse)</span> in
- <span class="Ux">FreeBSD 5.2</span>, and in <span class="Lb">1:1 Threading
- Library (libthr, -lthr)</span> in <span class="Ux">FreeBSD 5.3</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_barrierattr.3 3.html b/static/freebsd/man3/pthread_barrierattr.3 3.html
deleted file mode 100644
index 9c433bc6..00000000
--- a/static/freebsd/man3/pthread_barrierattr.3 3.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_BARRIERATTR(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_BARRIERATTR(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">pthread_barrierattr_destroy</code>,
- <code class="Nm">pthread_barrierattr_getpshared</code>,
- <code class="Nm">pthread_barrierattr_init</code>,
- <code class="Nm">pthread_barrierattr_setpshared</code> &#x2014;
- <span class="Nd">manipulate a barrier attribute object</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_barrierattr_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_barrierattr_t
- *attr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_barrierattr_getpshared</code>(<var class="Fa">const
- pthread_barrierattr_t *restrict attr</var>, <var class="Fa">int *restrict
- pshared</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_barrierattr_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_barrierattr_t
- *attr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_barrierattr_setpshared</code>(<var class="Fa">pthread_barrierattr_t
- *attr</var>, <var class="Fa">int pshared</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_barrierattr_init"><code class="Fn" id="pthread_barrierattr_init">pthread_barrierattr_init</code></a>()
- function will initialize <var class="Fa">attr</var> with default attributes.
- The
- <a class="permalink" href="#pthread_barrierattr_destroy"><code class="Fn" id="pthread_barrierattr_destroy">pthread_barrierattr_destroy</code></a>()
- function will destroy <var class="Fa">attr</var> and release any resources
- that may have been allocated on its behalf.</p>
-<p class="Pp" id="pthread_barrierattr_getpshared">The
- <a class="permalink" href="#pthread_barrierattr_getpshared"><code class="Fn">pthread_barrierattr_getpshared</code></a>()
- function will put the value of the process-shared attribute from
- <var class="Fa">attr</var> into the memory area pointed to by
- <var class="Fa">pshared</var>. The
- <a class="permalink" href="#pthread_barrierattr_setpshared"><code class="Fn" id="pthread_barrierattr_setpshared">pthread_barrierattr_setpshared</code></a>()
- function will set the process-shared attribute of <var class="Fa">attr</var>
- to the value specified in <var class="Fa">pshared</var>. The argument
- <var class="Fa">pshared</var> may have one of the following values:</p>
-<dl class="Bl-tag">
- <dt id="PTHREAD_PROCESS_PRIVATE"><a class="permalink" href="#PTHREAD_PROCESS_PRIVATE"><code class="Dv">PTHREAD_PROCESS_PRIVATE</code></a></dt>
- <dd>The barrier object it is attached to may only be accessed by threads in
- the same process as the one that created the object.</dd>
- <dt id="PTHREAD_PROCESS_SHARED"><a class="permalink" href="#PTHREAD_PROCESS_SHARED"><code class="Dv">PTHREAD_PROCESS_SHARED</code></a></dt>
- <dd>The barrier object it is attached to may be accessed by threads in
- processes other than the one that created the object.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, all these functions will return zero. Otherwise, an
- error number will be returned to indicate the error.</p>
-<p class="Pp">None of these functions will return
- <code class="Er">EINTR</code>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_barrierattr_destroy</code>(),
- <code class="Fn">pthread_barrierattr_getpshared</code>() and
- <code class="Fn">pthread_barrierattr_setpshared</code>() functions may fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">attr</var> is invalid.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_barrierattr_init</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory to initialize the barrier attribute object
- <var class="Fa">attr</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_barrierattr_setpshared</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~2">[<a class="permalink" href="#EINVAL~2"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified in <var class="Fa">pshared</var> is not one of the
- allowed values.</dd>
-</dl>
-</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">pthread_barrier_destroy(3)</a>,
- <a class="Xr">pthread_barrier_init(3)</a>,
- <a class="Xr">pthread_barrier_wait(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_barrierattr_*</code>() functions
- first appeared in <span class="Lb">N:M Threading Library (libkse,
- -lkse)</span> in <span class="Ux">FreeBSD 5.2</span>, and in
- <span class="Lb">1:1 Threading Library (libthr, -lthr)</span> in
- <span class="Ux">FreeBSD 5.3</span>. Support for process-shared barriers
- appeared in <span class="Ux">FreeBSD 11.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_cancel.3 3.html b/static/freebsd/man3/pthread_cancel.3 3.html
deleted file mode 100644
index e350d4eb..00000000
--- a/static/freebsd/man3/pthread_cancel.3 3.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_CANCEL(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_CANCEL(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">pthread_cancel</code> &#x2014;
- <span class="Nd">cancel execution of a thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_cancel</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_cancel"><code class="Fn" id="pthread_cancel">pthread_cancel</code></a>()
- function requests that <var class="Fa">thread</var> be canceled. The target
- thread's cancelability state and type determines when the cancellation takes
- effect. When the cancellation is acted on, the cancellation cleanup handlers
- for <var class="Fa">thread</var> are called. When the last cancellation
- cleanup handler returns, the thread-specific data destructor functions will
- be called for <var class="Fa">thread</var>. When the last destructor
- function returns, <var class="Fa">thread</var> will be terminated.</p>
-<p class="Pp" id="pthread_cancel~2">The cancellation processing in the target
- thread runs asynchronously with respect to the calling thread returning from
- <a class="permalink" href="#pthread_cancel~2"><code class="Fn">pthread_cancel</code></a>().</p>
-<p class="Pp">A status of <code class="Dv">PTHREAD_CANCELED</code> is made
- available to any threads joining with the target. The symbolic constant
- <code class="Dv">PTHREAD_CANCELED</code> expands to a constant expression of
- type <var class="Ft">(void *)</var>, whose value matches no pointer to an
- object in memory nor the value <code class="Dv">NULL</code>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_cancel</code>()
- functions will return zero. Otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cancel</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>No thread could be found corresponding to that specified by the given
- thread ID.</dd>
-</dl>
-</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">pthread_cleanup_pop(3)</a>,
- <a class="Xr">pthread_cleanup_push(3)</a>,
- <a class="Xr">pthread_exit(3)</a>, <a class="Xr">pthread_join(3)</a>,
- <a class="Xr">pthread_setcancelstate(3)</a>,
- <a class="Xr">pthread_setcanceltype(3)</a>,
- <a class="Xr">pthread_testcancel(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cancel</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</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
- Leonard</span>
- &lt;<a class="Mt" href="mailto:d@openbsd.org">d@openbsd.org</a>&gt; for the
- <span class="Ux">OpenBSD</span> implementation of
- <code class="Fn">pthread_cancel</code>().</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">January 17, 1999</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_cleanup_pop.3 4.html b/static/freebsd/man3/pthread_cleanup_pop.3 4.html
deleted file mode 100644
index aac50d1c..00000000
--- a/static/freebsd/man3/pthread_cleanup_pop.3 4.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_CLEANUP_POP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_CLEANUP_POP(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">pthread_cleanup_pop</code> &#x2014;
- <span class="Nd">call the first cleanup routine</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_cleanup_pop</code>(<var class="Fa" style="white-space: nowrap;">int
- execute</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_cleanup_pop"><code class="Fn" id="pthread_cleanup_pop">pthread_cleanup_pop</code></a>()
- function pops the top cleanup routine off of the current threads cleanup
- routine stack, and, if <var class="Fa">execute</var> is non-zero, it will
- execute the function. If there is no cleanup routine then
- <code class="Fn">pthread_cleanup_pop</code>() does nothing.</p>
-<p class="Pp" id="pthread_cleanup_pop~2">The
- <a class="permalink" href="#pthread_cleanup_pop~2"><code class="Fn">pthread_cleanup_pop</code></a>()
- function is implemented as a macro that closes a block. Invocations of this
- function must appear as standalone statements that are paired with an
- earlier call of <a class="Xr">pthread_cleanup_push(3)</a> in the same
- lexical scope.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cleanup_pop</code>() function does
- not return any value.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">None</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">pthread_cleanup_push(3)</a>,
- <a class="Xr">pthread_exit(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cleanup_pop</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 25, 2014</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_cleanup_push.3 4.html b/static/freebsd/man3/pthread_cleanup_push.3 4.html
deleted file mode 100644
index 534d43c4..00000000
--- a/static/freebsd/man3/pthread_cleanup_push.3 4.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_CLEANUP_PUSH(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_CLEANUP_PUSH(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">pthread_cleanup_push</code> &#x2014;
- <span class="Nd">add a cleanup function for thread exit</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_cleanup_push</code>(<var class="Fa" style="white-space: nowrap;">void
- (*cleanup_routine)(void *)</var>,
- <var class="Fa" style="white-space: nowrap;">void *arg</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_cleanup_push"><code class="Fn" id="pthread_cleanup_push">pthread_cleanup_push</code></a>()
- function adds <var class="Fa">cleanup_routine</var> to the top of the stack
- of cleanup handlers that get called when the current thread exits.</p>
-<p class="Pp">When <var class="Fa">cleanup_routine</var> is called, it is passed
- <var class="Fa">arg</var> as its only argument.</p>
-<p class="Pp" id="pthread_cleanup_push~2">The
- <a class="permalink" href="#pthread_cleanup_push~2"><code class="Fn">pthread_cleanup_push</code></a>()
- function is implemented as a macro that opens a new block. Invocations of
- this function must appear as standalone statements that are paired with a
- later call of <a class="Xr">pthread_cleanup_pop(3)</a> in the same lexical
- scope.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cleanup_push</code>() function does
- not return any value.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">None</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">pthread_cleanup_pop(3)</a>,
- <a class="Xr">pthread_exit(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cleanup_push</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 25, 2014</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_cond_broadcast.3 4.html b/static/freebsd/man3/pthread_cond_broadcast.3 4.html
deleted file mode 100644
index 47e7dad1..00000000
--- a/static/freebsd/man3/pthread_cond_broadcast.3 4.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_COND_BROADCAST(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_COND_BROADCAST(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">pthread_cond_broadcast</code> &#x2014;
- <span class="Nd">unblock all threads waiting for a condition
- variable</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_cond_broadcast</code>(<var class="Fa" style="white-space: nowrap;">pthread_cond_t
- *cond</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_cond_broadcast"><code class="Fn" id="pthread_cond_broadcast">pthread_cond_broadcast</code></a>()
- function unblocks all threads waiting for the condition variable
- <var class="Fa">cond</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_cond_broadcast</code>() function will return zero,
- otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_broadcast</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">cond</var> is invalid.</dd>
-</dl>
-</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">pthread_cond_destroy(3)</a>,
- <a class="Xr">pthread_cond_init(3)</a>,
- <a class="Xr">pthread_cond_signal(3)</a>,
- <a class="Xr">pthread_cond_timedwait(3)</a>,
- <a class="Xr">pthread_cond_wait(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_broadcast</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 28, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_cond_destroy.3 4.html b/static/freebsd/man3/pthread_cond_destroy.3 4.html
deleted file mode 100644
index 7c5d18cc..00000000
--- a/static/freebsd/man3/pthread_cond_destroy.3 4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_COND_DESTROY(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_COND_DESTROY(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">pthread_cond_destroy</code> &#x2014;
- <span class="Nd">destroy a condition variable</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_cond_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_cond_t
- *cond</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_cond_destroy"><code class="Fn" id="pthread_cond_destroy">pthread_cond_destroy</code></a>()
- function frees the resources allocated by the condition variable
- <var class="Fa">cond</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">A condition variable can be destroyed immediately after all the
- threads that are blocked on it are awakened.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_cond_destroy</code>()
- function will return zero, otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_destroy</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">cond</var> is invalid.</dd>
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd>The variable <var class="Fa">cond</var> is locked by another thread.</dd>
-</dl>
-</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">pthread_cond_broadcast(3)</a>,
- <a class="Xr">pthread_cond_init(3)</a>,
- <a class="Xr">pthread_cond_signal(3)</a>,
- <a class="Xr">pthread_cond_timedwait(3)</a>,
- <a class="Xr">pthread_cond_wait(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_destroy</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 28, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_cond_init.3 3.html b/static/freebsd/man3/pthread_cond_init.3 3.html
deleted file mode 100644
index a750e401..00000000
--- a/static/freebsd/man3/pthread_cond_init.3 3.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_COND_INIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_COND_INIT(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">pthread_cond_init</code> &#x2014;
- <span class="Nd">create a condition variable</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_cond_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_cond_t
- *restrict cond</var>, <var class="Fa" style="white-space: nowrap;">const
- pthread_condattr_t *restrict attr</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_cond_init"><code class="Fn" id="pthread_cond_init">pthread_cond_init</code></a>()
- function creates a new condition variable, with attributes specified with
- <var class="Fa">attr</var>. If <var class="Fa">attr</var> is NULL the
- default attributes are used.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_cond_init</code>()
- function will return zero and put the new condition variable id into
- <var class="Fa">cond</var>, otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_init</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">attr</var> is invalid.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>The process cannot allocate enough memory to create another condition
- variable.</dd>
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The system temporarily lacks the resources to create another condition
- variable.</dd>
-</dl>
-</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">pthread_cond_broadcast(3)</a>,
- <a class="Xr">pthread_cond_destroy(3)</a>,
- <a class="Xr">pthread_cond_signal(3)</a>,
- <a class="Xr">pthread_cond_timedwait(3)</a>,
- <a class="Xr">pthread_cond_wait(3)</a>,
- <a class="Xr">pthread_condattr(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_init</code>() function conforms
- to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_cond_signal.3 4.html b/static/freebsd/man3/pthread_cond_signal.3 4.html
deleted file mode 100644
index 76db2855..00000000
--- a/static/freebsd/man3/pthread_cond_signal.3 4.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_COND_SIGNAL(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_COND_SIGNAL(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">pthread_cond_signal</code> &#x2014;
- <span class="Nd">unblock a thread waiting for a condition
- variable</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_cond_signal</code>(<var class="Fa" style="white-space: nowrap;">pthread_cond_t
- *cond</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_cond_signal"><code class="Fn" id="pthread_cond_signal">pthread_cond_signal</code></a>()
- function unblocks one thread waiting for the condition variable
- <var class="Fa">cond</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_cond_signal</code>()
- function will return zero, otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_signal</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">cond</var> is invalid.</dd>
-</dl>
-</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">pthread_cond_broadcast(3)</a>,
- <a class="Xr">pthread_cond_destroy(3)</a>,
- <a class="Xr">pthread_cond_init(3)</a>,
- <a class="Xr">pthread_cond_timedwait(3)</a>,
- <a class="Xr">pthread_cond_wait(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_signal</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 28, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_cond_timedwait.3 3.html b/static/freebsd/man3/pthread_cond_timedwait.3 3.html
deleted file mode 100644
index bb53b789..00000000
--- a/static/freebsd/man3/pthread_cond_timedwait.3 3.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_COND_TIMEDWAIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_COND_TIMEDWAIT(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">pthread_cond_timedwait</code> &#x2014;
- <span class="Nd">wait on a condition variable for a specific amount of
- time</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_cond_timedwait</code>(<var class="Fa" style="white-space: nowrap;">pthread_cond_t
- *cond</var>, <var class="Fa" style="white-space: nowrap;">pthread_mutex_t
- *mutex</var>, <var class="Fa" style="white-space: nowrap;">const struct
- timespec *abstime</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_cond_timedwait"><code class="Fn" id="pthread_cond_timedwait">pthread_cond_timedwait</code></a>()
- function atomically blocks the current thread waiting on the condition
- variable specified by <var class="Fa">cond</var>, and releases the mutex
- specified by <var class="Fa">mutex</var>. The waiting thread unblocks only
- after another thread calls <a class="Xr">pthread_cond_signal(3)</a>, or
- <a class="Xr">pthread_cond_broadcast(3)</a> with the same condition
- variable, or if the system time reaches the time specified in
- <var class="Fa">abstime</var>, and the current thread reacquires the lock on
- <var class="Fa">mutex</var>.</p>
-<p class="Pp">The clock used to measure <var class="Fa">abstime</var> can be
- specified during creation of the condition variable using
- <a class="Xr">pthread_condattr_setclock(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_cond_timedwait</code>() function will return zero.
- Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_timedwait</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">cond</var>,
- <var class="Fa">mutex</var> or <var class="Fa">abstime</var> is
- invalid.</dd>
- <dt id="ETIMEDOUT">[<a class="permalink" href="#ETIMEDOUT"><code class="Er">ETIMEDOUT</code></a>]</dt>
- <dd>The system time has reached or exceeded the time specified in
- <var class="Fa">abstime</var>.</dd>
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The specified <var class="Fa">mutex</var> was not locked by the calling
- thread.</dd>
-</dl>
-</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">pthread_cond_broadcast(3)</a>,
- <a class="Xr">pthread_cond_destroy(3)</a>,
- <a class="Xr">pthread_cond_init(3)</a>,
- <a class="Xr">pthread_cond_signal(3)</a>,
- <a class="Xr">pthread_cond_wait(3)</a>,
- <a class="Xr">pthread_condattr_setclock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_timedwait</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">May 9, 2010</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_cond_wait.3 3.html b/static/freebsd/man3/pthread_cond_wait.3 3.html
deleted file mode 100644
index 693abbab..00000000
--- a/static/freebsd/man3/pthread_cond_wait.3 3.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_COND_WAIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_COND_WAIT(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">pthread_cond_wait</code> &#x2014;
- <span class="Nd">wait on a condition variable</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_cond_wait</code>(<var class="Fa" style="white-space: nowrap;">pthread_cond_t
- *restrict cond</var>,
- <var class="Fa" style="white-space: nowrap;">pthread_mutex_t *restrict
- mutex</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_cond_wait"><code class="Fn" id="pthread_cond_wait">pthread_cond_wait</code></a>()
- function atomically blocks the current thread waiting on the condition
- variable specified by <var class="Fa">cond</var>, and releases the mutex
- specified by <var class="Fa">mutex</var>. The waiting thread unblocks only
- after another thread calls <a class="Xr">pthread_cond_signal(3)</a>, or
- <a class="Xr">pthread_cond_broadcast(3)</a> with the same condition
- variable, and the current thread reacquires the lock on
- <var class="Fa">mutex</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_cond_wait</code>()
- function will return zero. Otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_wait</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">cond</var> or the value specified
- by <var class="Fa">mutex</var> is invalid.</dd>
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The specified <var class="Fa">mutex</var> was not locked by the calling
- thread.</dd>
- <dt id="EOWNERDEAD">[<a class="permalink" href="#EOWNERDEAD"><code class="Er">EOWNERDEAD</code></a>]</dt>
- <dd>The argument <var class="Fa">mutex</var> points to a robust mutex and the
- process containing the previous owning thread terminated while holding the
- mutex lock. The lock was granted to the caller and it is up to the new
- owner to make the state consistent.</dd>
- <dt id="ENOTRECOVERABLE">[<a class="permalink" href="#ENOTRECOVERABLE"><code class="Er">ENOTRECOVERABLE</code></a>]</dt>
- <dd>The state protected by the <var class="Fa">mutex</var> is not
- recoverable.</dd>
-</dl>
-</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">pthread_cond_broadcast(3)</a>,
- <a class="Xr">pthread_cond_destroy(3)</a>,
- <a class="Xr">pthread_cond_init(3)</a>,
- <a class="Xr">pthread_cond_signal(3)</a>,
- <a class="Xr">pthread_cond_timedwait(3)</a>,
- <a class="Xr">pthread_mutex_consistent(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_cond_wait</code>() function conforms
- to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 7, 2019</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_condattr.3 3.html b/static/freebsd/man3/pthread_condattr.3 3.html
deleted file mode 100644
index 2cbb12b1..00000000
--- a/static/freebsd/man3/pthread_condattr.3 3.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_CONDATTR(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_CONDATTR(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">pthread_condattr_init</code>,
- <code class="Nm">pthread_condattr_destroy</code>,
- <code class="Nm">pthread_condattr_getclock</code>,
- <code class="Nm">pthread_condattr_setclock</code>,
- <code class="Nm">pthread_condattr_getpshared</code>,
- <code class="Nm">pthread_condattr_setpshared</code> &#x2014;
- <span class="Nd">condition attribute operations</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_condattr_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_condattr_t
- *attr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_condattr_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_condattr_t
- *attr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_condattr_getclock</code>(<var class="Fa">pthread_condattr_t
- * restrict attr</var>, <var class="Fa">clockid_t * restrict
- clock_id</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_condattr_setclock</code>(<var class="Fa" style="white-space: nowrap;">pthread_condattr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">clockid_t
- clock_id</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_condattr_getpshared</code>(<var class="Fa">pthread_condattr_t
- * restrict attr</var>, <var class="Fa">int * restrict pshared</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_condattr_setpshared</code>(<var class="Fa" style="white-space: nowrap;">pthread_condattr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- pshared</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">Condition attribute objects are used to specify parameters to
- <a class="permalink" href="#pthread_cond_init"><code class="Fn" id="pthread_cond_init">pthread_cond_init</code></a>().</p>
-<p class="Pp" id="pthread_condattr_init">The
- <a class="permalink" href="#pthread_condattr_init"><code class="Fn">pthread_condattr_init</code></a>()
- function initializes a condition attribute object with the default
- attributes.</p>
-<p class="Pp" id="pthread_condattr_destroy">The
- <a class="permalink" href="#pthread_condattr_destroy"><code class="Fn">pthread_condattr_destroy</code></a>()
- function destroys a condition attribute object.</p>
-<p class="Pp" id="pthread_condattr_getclock">The
- <a class="permalink" href="#pthread_condattr_getclock"><code class="Fn">pthread_condattr_getclock</code></a>()
- function will put the value of the clock attribute from
- <var class="Fa">attr</var> into the memory area pointed to by
- <var class="Fa">clock_id</var>. The
- <a class="permalink" href="#pthread_condattr_setclock"><code class="Fn" id="pthread_condattr_setclock">pthread_condattr_setclock</code></a>()
- function will set the clock attribute of <var class="Fa">attr</var> to the
- value specified in <var class="Fa">clock_id</var>. The clock attribute
- affects the interpretation of <var class="Fa">abstime</var> in
- <a class="Xr">pthread_cond_timedwait(3)</a> and may be set to
- <code class="Dv">CLOCK_REALTIME</code> (default),
- <code class="Dv">CLOCK_TAI</code>, or
- <code class="Dv">CLOCK_MONOTONIC</code>.</p>
-<p class="Pp" id="pthread_condattr_getpshared">The
- <a class="permalink" href="#pthread_condattr_getpshared"><code class="Fn">pthread_condattr_getpshared</code></a>()
- function will put the value of the process-shared attribute from
- <var class="Fa">attr</var> into the memory area pointed to by
- <var class="Fa">pshared</var>. The
- <a class="permalink" href="#pthread_condattr_setpshared"><code class="Fn" id="pthread_condattr_setpshared">pthread_condattr_setpshared</code></a>()
- function will set the process-shared attribute of <var class="Fa">attr</var>
- to the value specified in <var class="Fa">pshared</var>. The argument
- <var class="Fa">pshared</var> may have one of the following values:</p>
-<dl class="Bl-tag">
- <dt id="PTHREAD_PROCESS_PRIVATE"><a class="permalink" href="#PTHREAD_PROCESS_PRIVATE"><code class="Dv">PTHREAD_PROCESS_PRIVATE</code></a></dt>
- <dd>The condition variable it is attached to may only be accessed by threads
- in the same process as the one that created the object.</dd>
- <dt id="PTHREAD_PROCESS_SHARED"><a class="permalink" href="#PTHREAD_PROCESS_SHARED"><code class="Dv">PTHREAD_PROCESS_SHARED</code></a></dt>
- <dd>The condition variable it is attached to may be accessed by threads in
- processes other than the one that created the object.</dd>
-</dl>
-See <a class="Xr">libthr(3)</a> for details of the implementation of shared
- condition variables, and their limitations.
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, these functions return 0. Otherwise, an error
- number is returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_condattr_init</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Out of memory.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_condattr_destroy</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_condattr_setclock</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~2">[<a class="permalink" href="#EINVAL~2"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified in <var class="Fa">clock_id</var> is not one of the
- allowed values.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_condattr_setpshared</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~3">[<a class="permalink" href="#EINVAL~3"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified in <var class="Fa">pshared</var> is not one of the
- allowed values.</dd>
-</dl>
-</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">libthr(3)</a>,
- <a class="Xr">pthread_cond_init(3)</a>,
- <a class="Xr">pthread_cond_timedwait(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_condattr_init</code>() and
- <code class="Fn">pthread_condattr_destroy</code>() functions conform to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span></p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 27, 2023</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_create.3 3.html b/static/freebsd/man3/pthread_create.3 3.html
deleted file mode 100644
index afac00f8..00000000
--- a/static/freebsd/man3/pthread_create.3 3.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_CREATE(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_CREATE(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">pthread_create</code> &#x2014;
- <span class="Nd">create a new thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_create</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- *restrict thread</var>, <var class="Fa" style="white-space: nowrap;">const
- pthread_attr_t *restrict attr</var>,
- <var class="Fa" style="white-space: nowrap;">void *(*start_routine)(void
- *)</var>, <var class="Fa" style="white-space: nowrap;">void *restrict
- arg</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_create"><code class="Fn" id="pthread_create">pthread_create</code></a>()
- function is used to create a new thread, with attributes specified by
- <var class="Fa">attr</var>, within a process. If <var class="Fa">attr</var>
- is <code class="Dv">NULL</code>, the default attributes are used. If the
- attributes specified by <var class="Fa">attr</var> are modified later, the
- thread's attributes are not affected. Upon successful completion
- <code class="Fn">pthread_create</code>() will store the ID of the created
- thread in the location specified by <var class="Fa">thread</var>.</p>
-<p class="Pp" id="pthread_exit">The thread is created executing
- <var class="Fa">start_routine</var> with <var class="Fa">arg</var> as its
- sole argument. If the <var class="Fa">start_routine</var> returns, the
- effect is as if there was an implicit call to
- <a class="permalink" href="#pthread_exit"><code class="Fn">pthread_exit</code></a>()
- using the return value of <var class="Fa">start_routine</var> as the exit
- status. Note that the thread in which
- <a class="permalink" href="#main"><code class="Fn" id="main">main</code></a>()
- was originally invoked differs from this. When it returns from
- <code class="Fn">main</code>(), the effect is as if there was an implicit
- call to
- <a class="permalink" href="#exit"><code class="Fn" id="exit">exit</code></a>()
- using the return value of <code class="Fn">main</code>() as the exit
- status.</p>
-<p class="Pp">The signal state of the new thread is initialized as:</p>
-<ul class="Bl-bullet Bd-indent">
- <li>The signal mask is inherited from the creating thread.</li>
- <li>The set of signals pending for the new thread is empty.</li>
-</ul>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_create</code>()
- function will return zero. Otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_create</code>() function can return
- any of the following errors:</p>
-<dl class="Bl-tag">
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>The system lacked the necessary resources to create another thread.</dd>
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The system-imposed limit on the total number of threads in a process
- <code class="Dv">[PTHREAD_THREADS_MAX]</code> would be exceeded.</dd>
- <dt id="EAGAIN~2">[<a class="permalink" href="#EAGAIN~2"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The <code class="Dv">RACCT_NTHR</code> limit would be exceeded; see
- <a class="Xr">racct(2)</a>.</dd>
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The caller does not have permission to set the scheduling parameters or
- scheduling policy.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>A value specified by <var class="Fa">attr</var> is invalid.</dd>
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>The CPU set specified by <var class="Fa">attr</var> would prevent the
- thread from running on any CPU.</dd>
- <dt id="EFAULT">[<a class="permalink" href="#EFAULT"><code class="Er">EFAULT</code></a>]</dt>
- <dd>The stack base specified by <var class="Fa">attr</var> is invalid, or the
- kernel was unable to put required initial data on the stack.</dd>
-</dl>
-</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">cpuset_setaffinity(2)</a>,
- <a class="Xr">fork(2)</a>, <a class="Xr">racct(2)</a>,
- <a class="Xr">thr_new(2)</a>, <a class="Xr">pthread_attr(3)</a>,
- <a class="Xr">pthread_cancel(3)</a>,
- <a class="Xr">pthread_cleanup_pop(3)</a>,
- <a class="Xr">pthread_cleanup_push(3)</a>,
- <a class="Xr">pthread_exit(3)</a>, <a class="Xr">pthread_join(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_create</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_detach.3 3.html b/static/freebsd/man3/pthread_detach.3 3.html
deleted file mode 100644
index b411f981..00000000
--- a/static/freebsd/man3/pthread_detach.3 3.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_DETACH(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_DETACH(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">pthread_detach</code> &#x2014;
- <span class="Nd">detach a thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_detach</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_detach"><code class="Fn" id="pthread_detach">pthread_detach</code></a>()
- function is used to indicate to the implementation that storage for the
- thread <var class="Fa">thread</var> can be reclaimed when the thread
- terminates. If <var class="Fa">thread</var> has not terminated,
- <code class="Fn">pthread_detach</code>() will not cause it to terminate. The
- effect of multiple <code class="Fn">pthread_detach</code>() calls on the
- same target thread is unspecified.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_detach</code>()
- function will return zero. Otherwise an error number will be returned to
- indicate the error. Note that the function does not change the value of
- errno as it did for some drafts of the standard. These early drafts also
- passed a pointer to pthread_t as the argument. Beware!</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_detach</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The implementation has detected that the value specified by
- <var class="Fa">thread</var> does not refer to a joinable thread.</dd>
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>No thread could be found corresponding to that specified by the given
- thread ID, <var class="Fa">thread</var>.</dd>
-</dl>
-</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">pthread_join(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_detach</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 4, 1996</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_equal.3 4.html b/static/freebsd/man3/pthread_equal.3 4.html
deleted file mode 100644
index 256279b4..00000000
--- a/static/freebsd/man3/pthread_equal.3 4.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_EQUAL(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_EQUAL(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">pthread_equal</code> &#x2014;
- <span class="Nd">compare thread IDs</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_equal</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- t1</var>, <var class="Fa" style="white-space: nowrap;">pthread_t
- t2</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_equal"><code class="Fn" id="pthread_equal">pthread_equal</code></a>()
- function compares the thread IDs <var class="Fa">t1</var> and
- <var class="Fa">t2</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_equal</code>() function will return
- non-zero if the thread IDs <var class="Fa">t1</var> and
- <var class="Fa">t2</var> correspond to the same thread, otherwise it will
- return zero.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">None.</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">pthread_create(3)</a>,
- <a class="Xr">pthread_exit(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_equal</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 4, 1996</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_exit.3 3.html b/static/freebsd/man3/pthread_exit.3 3.html
deleted file mode 100644
index 91e7e2ce..00000000
--- a/static/freebsd/man3/pthread_exit.3 3.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_EXIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_EXIT(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">pthread_exit</code> &#x2014;
- <span class="Nd">terminate the calling thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_exit</code>(<var class="Fa" style="white-space: nowrap;">void
- *value_ptr</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_exit"><code class="Fn" id="pthread_exit">pthread_exit</code></a>()
- function terminates the calling thread and makes the value
- <var class="Fa">value_ptr</var> available to any successful join with the
- terminating thread. Any cancellation cleanup handlers that have been pushed
- and are not yet popped are popped in the reverse order that they were pushed
- and then executed. After all cancellation handlers have been executed, if
- the thread has any thread-specific data, appropriate destructor functions
- are called in an unspecified order. Thread termination does not release any
- application visible process resources, including, but not limited to,
- mutexes and file descriptors, nor does it perform any process level cleanup
- actions, including, but not limited to, calling
- <a class="permalink" href="#atexit"><code class="Fn" id="atexit">atexit</code></a>()
- routines that may exist.</p>
-<p class="Pp" id="pthread_exit~2">An implicit call to
- <a class="permalink" href="#pthread_exit~2"><code class="Fn">pthread_exit</code></a>()
- is made when a thread other than the thread in which
- <a class="permalink" href="#main"><code class="Fn" id="main">main</code></a>()
- was first invoked returns from the start routine that was used to create it.
- The function's return value serves as the thread's exit status.</p>
-<p class="Pp" id="pthread_exit~3">The behavior of
- <a class="permalink" href="#pthread_exit~3"><code class="Fn">pthread_exit</code></a>()
- is undefined if called from a cancellation handler or destructor function
- that was invoked as the result of an implicit or explicit call to
- <code class="Fn">pthread_exit</code>().</p>
-<p class="Pp" id="pthread_exit~4">After a thread has terminated, the result of
- access to local (auto) variables of the thread is undefined. Thus,
- references to local variables of the exiting thread should not be used for
- the
- <a class="permalink" href="#pthread_exit~4"><code class="Fn">pthread_exit</code></a>()
- <var class="Fa">value_ptr</var> parameter value.</p>
-<p class="Pp" id="exit">The process will exit with an exit status of 0 after the
- last thread has been terminated. The behavior is as if the implementation
- called <a class="permalink" href="#exit"><code class="Fn">exit</code></a>()
- with a zero argument at thread termination time.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_exit</code>() function cannot return
- to its caller.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">None.</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">_exit(2)</a>, <a class="Xr">exit(3)</a>,
- <a class="Xr">pthread_cancel(3)</a>, <a class="Xr">pthread_create(3)</a>,
- <a class="Xr">pthread_join(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_exit</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">March 15, 2014</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_getconcurrency.3 3.html b/static/freebsd/man3/pthread_getconcurrency.3 3.html
deleted file mode 100644
index c9bbee7f..00000000
--- a/static/freebsd/man3/pthread_getconcurrency.3 3.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_GETCONCURRENCY(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_GETCONCURRENCY(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">pthread_getconcurrency</code>,
- <code class="Nm">pthread_setconcurrency</code> &#x2014; <span class="Nd">get
- or set level of concurrency</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_getconcurrency</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_setconcurrency</code>(<var class="Fa" style="white-space: nowrap;">int
- new_level</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_setconcurrency"><code class="Fn" id="pthread_setconcurrency">pthread_setconcurrency</code></a>()
- function allows an application to inform the threads implementation of its
- desired concurrency level, <var class="Fa">new_level</var>. The actual level
- of concurrency provided by the implementation as a result of this function
- call is unspecified. If <var class="Fa">new_level</var> is zero, it causes
- the implementation to maintain the concurrency level at its discretion as if
- <code class="Fn">pthread_setconcurrency</code>() was never called. The
- <a class="permalink" href="#pthread_getconcurrency"><code class="Fn" id="pthread_getconcurrency">pthread_getconcurrency</code></a>()
- function returns the value set by a previous call to the
- <code class="Fn">pthread_setconcurrency</code>() function. If the
- <code class="Fn">pthread_setconcurrency</code>() function was not previously
- called, this function returns zero to indicate that the implementation is
- maintaining the concurrency level. When an application calls
- <code class="Fn">pthread_setconcurrency</code>(), it is informing the
- implementation of its desired concurrency level. The implementation uses
- this as a hint, not a requirement.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_setconcurrency</code>() function returns zero.
- Otherwise, an error number is returned to indicate the error. The
- <code class="Fn">pthread_getconcurrency</code>() function always returns the
- concurrency level set by a previous call to
- <code class="Fn">pthread_setconcurrency</code>(). If the
- <code class="Fn">pthread_setconcurrency</code>() function has never been
- called, <code class="Fn">pthread_getconcurrency</code>() returns zero.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_setconcurrency</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">new_level</var> is negative.</dd>
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The value specified by <var class="Fa">new_level</var> would cause a
- system resource to be exceeded.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="APPLICATION_USAGE"><a class="permalink" href="#APPLICATION_USAGE">APPLICATION
- USAGE</a></h1>
-<p class="Pp">Use of these functions changes the state of the underlying
- concurrency upon which the application depends. Library developers are
- advised to not use the <code class="Fn">pthread_getconcurrency</code>() and
- <code class="Fn">pthread_setconcurrency</code>() functions since their use
- may conflict with an application's use of these functions.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_getconcurrency</code>() and
- <code class="Fn">pthread_setconcurrency</code>() functions conform to
- <span class="St">Version&#x00A0;2 of the Single UNIX Specification
- (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 11, 2003</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_getcpuclockid.3 4.html b/static/freebsd/man3/pthread_getcpuclockid.3 4.html
deleted file mode 100644
index 420a357d..00000000
--- a/static/freebsd/man3/pthread_getcpuclockid.3 4.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_GETCPUCLOCKID(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_GETCPUCLOCKID(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">pthread_getcpuclockid</code> &#x2014;
- <span class="Nd">access a thread CPU-time clock</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">time.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_getcpuclockid</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread_id</var>, <var class="Fa" style="white-space: nowrap;">clockid_t
- *clock_id</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_getcpuclockid"><code class="Fn" id="pthread_getcpuclockid">pthread_getcpuclockid</code></a>()
- returns the clock ID of the CPU-time clock of the thread specified by
- <var class="Fa">thread_id</var>, if the thread described by
- <var class="Fa">thread_id</var> exists.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">Upon successful completion,
- <code class="Fn">pthread_getcpuclockid</code>() returns zero; otherwise, an
- error number is returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_getcpuclockid</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>The value specified by <var class="Fa">thread_id</var> does not refer to
- an existing thread.</dd>
-</dl>
-</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">clock_gettime(2)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_getcpuclockid</code>() function
- conforms to <span class="St">IEEE Std 1003.1-2004
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_getcpuclockid</code>() function first
- appeared in <span class="Ux">FreeBSD 10.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp"><span class="An">David Xu</span>
- &lt;<a class="Mt" href="mailto:davidxu@FreeBSD.org">davidxu@FreeBSD.org</a>&gt;</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 21, 2012</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_getspecific.3 3.html b/static/freebsd/man3/pthread_getspecific.3 3.html
deleted file mode 100644
index 563118b9..00000000
--- a/static/freebsd/man3/pthread_getspecific.3 3.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_GETSPECIFIC(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_GETSPECIFIC(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">pthread_getspecific</code> &#x2014;
- <span class="Nd">get a thread-specific data value</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void *</var>
- <br/>
- <code class="Fn">pthread_getspecific</code>(<var class="Fa" style="white-space: nowrap;">pthread_key_t
- key</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_getspecific"><code class="Fn" id="pthread_getspecific">pthread_getspecific</code></a>()
- function returns the value currently bound to the specified
- <var class="Fa">key</var> on behalf of the calling thread.</p>
-<p class="Pp" id="pthread_getspecific~2">The effect of calling
- <a class="permalink" href="#pthread_getspecific~2"><code class="Fn">pthread_getspecific</code></a>()
- with a <var class="Fa">key</var> value not obtained from
- <a class="permalink" href="#pthread_key_create"><code class="Fn" id="pthread_key_create">pthread_key_create</code></a>()
- or after <var class="Fa">key</var> has been deleted with
- <a class="permalink" href="#pthread_key_delete"><code class="Fn" id="pthread_key_delete">pthread_key_delete</code></a>()
- is undefined.</p>
-<p class="Pp" id="pthread_getspecific~3">The
- <a class="permalink" href="#pthread_getspecific~3"><code class="Fn">pthread_getspecific</code></a>()
- function may be called from a thread-specific data destructor function. A
- call to <code class="Fn">pthread_getspecific</code>() for the
- thread-specific data key being destroyed returns the value NULL, unless the
- value is changed (after the destructor starts) by a call to
- <a class="permalink" href="#pthread_setspecific"><code class="Fn" id="pthread_setspecific">pthread_setspecific</code></a>().</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_getspecific</code>() function will
- return the thread-specific data value associated with the given
- <var class="Fa">key</var>. If no thread-specific data value is associated
- with <var class="Fa">key</var>, then the value NULL is returned.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">None.</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">pthread_key_create(3)</a>,
- <a class="Xr">pthread_key_delete(3)</a>,
- <a class="Xr">pthread_setspecific(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_getspecific</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 4, 1996</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_getthreadid_np.3 4.html b/static/freebsd/man3/pthread_getthreadid_np.3 4.html
deleted file mode 100644
index 808d8c28..00000000
--- a/static/freebsd/man3/pthread_getthreadid_np.3 4.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_GETTHREADID_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_GETTHREADID_NP(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">pthread_getthreadid_np</code> &#x2014;
- <span class="Nd">get the calling thread's integral ID</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_getthreadid_np</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_getthreadid_np"><code class="Fn" id="pthread_getthreadid_np">pthread_getthreadid_np</code></a>()
- function returns the unique integral ID of the calling thread. Its semantics
- is similar to the AIX's <code class="Fn">pthread_getthreadid_np</code>()
- function.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_getthreadid_np</code>() function
- returns the thread integral ID of the calling thread.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">None.</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">pthread_np(3)</a>,
- <a class="Xr">pthread_self(3)</a></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">Jung-uk
- Kim</span>
- &lt;<a class="Mt" href="mailto:jkim@FreeBSD.org">jkim@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_join.3 3.html b/static/freebsd/man3/pthread_join.3 3.html
deleted file mode 100644
index 44f7fc06..00000000
--- a/static/freebsd/man3/pthread_join.3 3.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_JOIN(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_JOIN(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">pthread_join</code>,
- <code class="Nm">pthread_peekjoin_np</code>,
- <code class="Nm">pthread_timedjoin_np</code>
- <code class="Nm">pthread_tryjoin_np</code> &#x2014; <span class="Nd">inspect
- thread termination state</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_join</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">void
- **value_ptr</var>);</p>
-<p class="Pp"><code class="In">#include
- &lt;<a class="In">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_peekjoin_np</code>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">void **value_ptr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_timedjoin_np</code>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">void **value_ptr</var>, <var class="Fa">const
- struct timespec *abstime</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_tryjoin_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">void
- **value_ptr</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_join"><code class="Fn" id="pthread_join">pthread_join</code></a>()
- function suspends execution of the calling thread until the target
- <var class="Fa">thread</var> terminates unless the target
- <var class="Fa">thread</var> has already terminated.</p>
-<p class="Pp" id="pthread_join~2">On return from a successful
- <a class="permalink" href="#pthread_join~2"><code class="Fn">pthread_join</code></a>()
- call with a non-NULL <var class="Fa">value_ptr</var> argument, the value
- passed to
- <a class="permalink" href="#pthread_exit"><code class="Fn" id="pthread_exit">pthread_exit</code></a>()
- by the terminating thread is stored in the location referenced by
- <var class="Fa">value_ptr</var>. When a
- <code class="Fn">pthread_join</code>() returns successfully, the target
- thread has been terminated. The results of multiple simultaneous calls to
- <code class="Fn">pthread_join</code>() specifying the same target thread are
- undefined. If the thread calling <code class="Fn">pthread_join</code>() is
- cancelled, then the target thread is not detached.</p>
-<p class="Pp" id="pthread_timedjoin_np">The
- <a class="permalink" href="#pthread_timedjoin_np"><code class="Fn">pthread_timedjoin_np</code></a>()
- function is equivalent to the <code class="Fn">pthread_join</code>()
- function except it will return <code class="Er">ETIMEDOUT</code> if target
- thread does not exit before specified absolute time passes.</p>
-<p class="Pp" id="pthread_peekjoin_np">The
- <a class="permalink" href="#pthread_peekjoin_np"><code class="Fn">pthread_peekjoin_np</code></a>()
- only peeks into the exit status of the specified thread. If the thread has
- not exited, the <code class="Er">EBUSY</code> error is returned. Otherwise,
- zero is returned and the thread exit value is optionally stored into the
- location of <var class="Fa">*value_ptr</var>. The target thread is left
- unjoined and can be used as an argument for the
- <code class="Fn">pthread_join</code>() family of functions again.</p>
-<p class="Pp" id="pthread_tryjoin_np">The
- <a class="permalink" href="#pthread_tryjoin_np"><code class="Fn">pthread_tryjoin_np</code></a>()
- function joins the thread if it is already terminated, same as
- <code class="Fn">pthread_join</code>(). If the thread has not yet
- terminated, the function returns <code class="Er">EBUSY</code>.</p>
-<p class="Pp">A thread that has exited but remains unjoined counts against
- [_POSIX_THREAD_THREADS_MAX].</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the described functions return zero. Otherwise an
- error number is returned to indicate the error or special condition.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_join</code>(),
- <code class="Fn">pthread_peekjoin_np</code>(), and
- <code class="Fn">pthread_timedjoin_np</code>() functions will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The implementation has detected that the value specified by
- <var class="Fa">thread</var> does not refer to a joinable thread.</dd>
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>No thread could be found corresponding to that specified by the given
- thread ID, <var class="Fa">thread</var>.</dd>
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>A deadlock was detected or the value of <var class="Fa">thread</var>
- specifies the calling thread.</dd>
- <dt id="EOPNOTSUPP">[<a class="permalink" href="#EOPNOTSUPP"><code class="Er">EOPNOTSUPP</code></a>]</dt>
- <dd>The implementation detected that another caller is already waiting on
- <var class="Fa">thread</var>.</dd>
-</dl>
-<p class="Pp">Additionally, the <code class="Fn">pthread_timedjoin_np</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="ETIMEDOUT">[<a class="permalink" href="#ETIMEDOUT"><code class="Er">ETIMEDOUT</code></a>]</dt>
- <dd>The specified absolute time passed while
- <code class="Fn">pthread_timedjoin_np</code>() waited for thread
- exit.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_peekjoin_np</code>() and
- <code class="Fn">pthread_tryjoin_np</code>() functions will also fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd>The specified thread has not yet exited.</dd>
-</dl>
-</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">wait(2)</a>, <a class="Xr">pthread(3)</a>,
- <a class="Xr">pthread_create(3)</a>, <a class="Xr">pthread_np(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_join</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span>. The
- <code class="Fn">pthread_timedjoin_np</code>() function is a
- <span class="Ux">FreeBSD</span> extension which first appeared in
- <span class="Ux">FreeBSD 6.1</span>. The
- <code class="Fn">pthread_peekjoin_np</code>() function is a
- <span class="Ux">FreeBSD</span> extension which first appearead in
- <span class="Ux">FreeBSD 13.0</span>. The
- <code class="Fn">pthread_tryjoin_np</code>() function is a
- <span class="Ux">FreeBSD</span> extension which first appearead in
- <span class="Ux">FreeBSD 16.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_key_create.3 3.html b/static/freebsd/man3/pthread_key_create.3 3.html
deleted file mode 100644
index 58110c8d..00000000
--- a/static/freebsd/man3/pthread_key_create.3 3.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_KEY_CREATE(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_KEY_CREATE(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">pthread_key_create</code> &#x2014;
- <span class="Nd">thread-specific data key creation</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_key_create</code>(<var class="Fa" style="white-space: nowrap;">pthread_key_t
- *key</var>, <var class="Fa" style="white-space: nowrap;">void
- (*destructor)(void *)</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_key_create"><code class="Fn" id="pthread_key_create">pthread_key_create</code></a>()
- function creates a thread-specific data key visible to all threads in the
- process. Key values provided by <code class="Fn">pthread_key_create</code>()
- are opaque objects used to locate thread-specific data. Although the same
- key value may be used by different threads, the values bound to the key by
- <a class="permalink" href="#pthread_setspecific"><code class="Fn" id="pthread_setspecific">pthread_setspecific</code></a>()
- are maintained on a per-thread basis and persist for the life of the calling
- thread.</p>
-<p class="Pp">Upon key creation, the value NULL is associated with the new key
- in all active threads. Upon thread creation, the value NULL is associated
- with all defined keys in the new thread.</p>
-<p class="Pp">An optional destructor function may be associated with each key
- value. At thread exit, if a key value has a non-NULL destructor pointer, and
- the thread has a non-NULL value associated with the key, the function
- pointed to is called with the current associated value as its sole argument.
- The order of destructor calls is unspecified if more than one destructor
- exists for a thread when it exits.</p>
-<p class="Pp">If, after all the destructors have been called for all non-NULL
- values with associated destructors, there are still some non-NULL values
- with associated destructors, then the process is repeated. If, after at
- least [PTHREAD_DESTRUCTOR_ITERATIONS] iterations of destructor calls for
- outstanding non-NULL values, there are still some non-NULL values with
- associated destructors, the implementation stops calling destructors.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_key_create</code>()
- function will store the newly created key value at the location specified by
- <var class="Fa">key</var> and returns zero. Otherwise an error number will
- be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_key_create</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The system lacked the necessary resources to create another
- thread-specific data key, or the system-imposed limit on the total number
- of keys per process [PTHREAD_KEYS_MAX] would be exceeded.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory exists to create the key.</dd>
-</dl>
-</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">pthread_getspecific(3)</a>,
- <a class="Xr">pthread_key_delete(3)</a>,
- <a class="Xr">pthread_setspecific(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_key_create</code>() function conforms
- to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 4, 1996</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_key_delete.3 3.html b/static/freebsd/man3/pthread_key_delete.3 3.html
deleted file mode 100644
index 723aa503..00000000
--- a/static/freebsd/man3/pthread_key_delete.3 3.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_KEY_DELETE(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_KEY_DELETE(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">pthread_key_delete</code> &#x2014;
- <span class="Nd">delete a thread-specific data key</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_key_delete</code>(<var class="Fa" style="white-space: nowrap;">pthread_key_t
- key</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_key_delete"><code class="Fn" id="pthread_key_delete">pthread_key_delete</code></a>()
- function deletes a thread-specific data key previously returned by
- <a class="permalink" href="#pthread_key_create"><code class="Fn" id="pthread_key_create">pthread_key_create</code></a>().
- The thread-specific data values associated with <var class="Fa">key</var>
- need not be NULL at the time that
- <code class="Fn">pthread_key_delete</code>() is called. It is the
- responsibility of the application to free any application storage or perform
- any cleanup actions for data structures related to the deleted key or
- associated thread-specific data in any threads; this cleanup can be done
- either before or after <code class="Fn">pthread_key_delete</code>() is
- called. Any attempt to use <var class="Fa">key</var> following the call to
- <code class="Fn">pthread_key_delete</code>() results in undefined
- behavior.</p>
-<p class="Pp" id="pthread_key_delete~2">The
- <a class="permalink" href="#pthread_key_delete~2"><code class="Fn">pthread_key_delete</code></a>()
- function is callable from within destructor functions. Destructor functions
- are not invoked by <code class="Fn">pthread_key_delete</code>(). Any
- destructor function that may have been associated with
- <var class="Fa">key</var> will no longer be called upon thread exit.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_key_delete</code>()
- function will return zero. Otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_key_delete</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The <var class="Fa">key</var> value is invalid.</dd>
-</dl>
-</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">pthread_getspecific(3)</a>,
- <a class="Xr">pthread_key_create(3)</a>,
- <a class="Xr">pthread_setspecific(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_key_delete</code>() function conforms
- to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 4, 1996</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_kill.3 4.html b/static/freebsd/man3/pthread_kill.3 4.html
deleted file mode 100644
index d3ae0617..00000000
--- a/static/freebsd/man3/pthread_kill.3 4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_KILL(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_KILL(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">pthread_kill</code> &#x2014;
- <span class="Nd">send a signal to a specified thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">signal.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_kill</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">int
- sig</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_kill"><code class="Fn" id="pthread_kill">pthread_kill</code></a>()
- function sends a signal, specified by <var class="Fa">sig</var>, to a
- thread, specified by <var class="Fa">thread</var>. If
- <var class="Fa">sig</var> is 0, error checking is performed, but no signal
- is actually sent.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_kill</code>() returns 0.
- Otherwise, an error number is returned.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_kill</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd><var class="Fa">thread</var> is an invalid thread ID.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd><var class="Fa">sig</var> is an invalid or unsupported signal number.</dd>
-</dl>
-</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">kill(2)</a>, <a class="Xr">pthread_self(3)</a>,
- <a class="Xr">raise(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_kill</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span></p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 27, 2000</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_main_np.3 4.html b/static/freebsd/man3/pthread_main_np.3 4.html
deleted file mode 100644
index 4f3e6d1b..00000000
--- a/static/freebsd/man3/pthread_main_np.3 4.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MAIN_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MAIN_NP(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">pthread_main_np</code> &#x2014;
- <span class="Nd">identify the initial thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_main_np</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_main_np"><code class="Fn" id="pthread_main_np">pthread_main_np</code></a>()
- function is used in userland threads environment to identify the initial
- thread. Its semantics is similar to the Solaris's
- <a class="permalink" href="#thr_main"><code class="Fn" id="thr_main">thr_main</code></a>()
- function.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_main_np</code>() function returns 1
- if the calling thread is the initial thread, 0 if the calling thread is not
- the initial thread, and -1 if the thread's initialization has not yet
- completed.</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">pthread_create(3)</a>,
- <a class="Xr">pthread_equal(3)</a>, <a class="Xr">pthread_np(3)</a>,
- <a class="Xr">pthread_self(3)</a></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">Alexey
- Zelkin</span>
- &lt;<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_multi_np.3 4.html b/static/freebsd/man3/pthread_multi_np.3 4.html
deleted file mode 100644
index 3fd0901d..00000000
--- a/static/freebsd/man3/pthread_multi_np.3 4.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MULTI_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MULTI_NP(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">pthread_multi_np</code>,
- <code class="Nm">pthread_single_np</code> &#x2014; <span class="Nd">switch
- between multi- and single-threaded scheduling modes</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_multi_np</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_single_np</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_single_np"><code class="Fn" id="pthread_single_np">pthread_single_np</code></a>()
- function switches the process to a single-threaded mode, i.e., suspends all
- threads except the current. The semantics of this function is similar to
- <a class="Xr">pthread_suspend_all_np(3)</a>.</p>
-<p class="Pp" id="pthread_multi_np">The
- <a class="permalink" href="#pthread_multi_np"><code class="Fn">pthread_multi_np</code></a>()
- function switches the process to a multi-threaded mode. The semantics of
- this function is similar to <a class="Xr">pthread_resume_all_np(3)</a>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_multi_np</code>() and
- <code class="Nm">pthread_single_np</code> functions always return 0.</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">pthread_np(3)</a>,
- <a class="Xr">pthread_resume_all_np(3)</a>,
- <a class="Xr">pthread_suspend_all_np(3)</a></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">Alexey
- Zelkin</span>
- &lt;<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_mutex_consistent.3 3.html b/static/freebsd/man3/pthread_mutex_consistent.3 3.html
deleted file mode 100644
index 2ce46974..00000000
--- a/static/freebsd/man3/pthread_mutex_consistent.3 3.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MUTEX_CONSISTENT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MUTEX_CONSISTENT(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">pthread_mutex_consistent</code> &#x2014;
- <span class="Nd">mark state protected by robust mutex as
- consistent</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutex_consistent</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutex_t
- *mutex</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">If the process containing the thread owning a robust mutex
- terminates while holding the mutex, the mutex becomes inconsistent and the
- next thread that acquires the mutex lock is notified of the state by the
- return value <code class="Er">EOWNERDEAD</code>. In this case, the mutex
- does not become normally usable again until the state is marked
- consistent.</p>
-<p class="Pp" id="pthread_mutex_consistent">The
- <a class="permalink" href="#pthread_mutex_consistent"><code class="Fn">pthread_mutex_consistent</code></a>(),
- when called with the <var class="Fa">mutex</var> argument, which points to
- the initialized robust mutex in an inconsistent state, marks the by mutex as
- consistent again. The consequent unlock of the mutex, by either
- <a class="permalink" href="#pthread_mutex_unlock"><code class="Fn" id="pthread_mutex_unlock">pthread_mutex_unlock</code></a>()
- or other methods, allows other contenders to lock the mutex.</p>
-<p class="Pp" id="pthread_mutex_consistent~2">If the mutex in the inconsistent
- state is not marked consistent by the call to
- <a class="permalink" href="#pthread_mutex_consistent~2"><code class="Fn">pthread_mutex_consistent</code></a>()
- before unlock, further attempts to lock the <var class="Fa">mutex</var>
- result in the <code class="Er">ENOTRECOVERABLE</code> condition reported by
- the locking functions.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_mutex_consistent</code>()
- will return zero, otherwise an error number will be returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_lock</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The mutex pointed to by the <var class="Fa">mutex</var> argument is not
- robust, or is not in the inconsistent state.</dd>
-</dl>
-</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">pthread_mutex_init(3)</a>,
- <a class="Xr">pthread_mutex_lock(3)</a>,
- <a class="Xr">pthread_mutex_unlock(3)</a>,
- <a class="Xr">pthread_mutexattr_setrobust(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_lock</code>() function conforms
- to <span class="St">Version&#x00A0;4 of the Single UNIX Specification
- (&#x201C;SUSv4&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">March 27, 2017</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_mutex_destroy.3 4.html b/static/freebsd/man3/pthread_mutex_destroy.3 4.html
deleted file mode 100644
index 4d5b6bd5..00000000
--- a/static/freebsd/man3/pthread_mutex_destroy.3 4.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MUTEX_DESTROY(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MUTEX_DESTROY(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">pthread_mutex_destroy</code> &#x2014;
- <span class="Nd">free resources allocated for a mutex</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutex_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutex_t
- *mutex</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_mutex_destroy"><code class="Fn" id="pthread_mutex_destroy">pthread_mutex_destroy</code></a>()
- function frees the resources allocated for <var class="Fa">mutex</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_mutex_destroy</code>()
- will return zero, otherwise an error number will be returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_destroy</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">mutex</var> is invalid.</dd>
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd><var class="Fa">Mutex</var> is locked by another thread.</dd>
-</dl>
-</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">pthread_mutex_init(3)</a>,
- <a class="Xr">pthread_mutex_lock(3)</a>,
- <a class="Xr">pthread_mutex_trylock(3)</a>,
- <a class="Xr">pthread_mutex_unlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_destroy</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 29, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_mutex_init.3 3.html b/static/freebsd/man3/pthread_mutex_init.3 3.html
deleted file mode 100644
index 883374ac..00000000
--- a/static/freebsd/man3/pthread_mutex_init.3 3.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MUTEX_INIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MUTEX_INIT(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">pthread_mutex_init</code> &#x2014;
- <span class="Nd">create a mutex</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutex_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutex_t
- *restrict mutex</var>, <var class="Fa" style="white-space: nowrap;">const
- pthread_mutexattr_t *restrict attr</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_mutex_init"><code class="Fn" id="pthread_mutex_init">pthread_mutex_init</code></a>()
- function creates a new mutex, with attributes specified with
- <var class="Fa">attr</var>. If <var class="Fa">attr</var> is NULL the
- default attributes are used.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_mutex_init</code>() will
- return zero and put the new mutex id into <var class="Fa">mutex</var>,
- otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_init</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">attr</var> is invalid.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>The process cannot allocate enough memory to create another mutex.</dd>
-</dl>
-</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">pthread_mutex_destroy(3)</a>,
- <a class="Xr">pthread_mutex_lock(3)</a>,
- <a class="Xr">pthread_mutex_trylock(3)</a>,
- <a class="Xr">pthread_mutex_unlock(3)</a>,
- <a class="Xr">pthread_mutexattr(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_init</code>() function conforms
- to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_mutex_lock.3 3.html b/static/freebsd/man3/pthread_mutex_lock.3 3.html
deleted file mode 100644
index d4a80620..00000000
--- a/static/freebsd/man3/pthread_mutex_lock.3 3.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MUTEX_LOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MUTEX_LOCK(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">pthread_mutex_lock</code> &#x2014;
- <span class="Nd">lock a mutex</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutex_lock</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutex_t
- *mutex</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_mutex_lock"><code class="Fn" id="pthread_mutex_lock">pthread_mutex_lock</code></a>()
- function locks <var class="Fa">mutex</var>. If the mutex is already locked,
- the calling thread will block until the mutex becomes available.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_mutex_lock</code>() will
- return zero, otherwise an error number will be returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_lock</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">mutex</var> is invalid.</dd>
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>A deadlock would occur if the thread blocked waiting for
- <var class="Fa">mutex</var>.</dd>
- <dt id="EOWNERDEAD">[<a class="permalink" href="#EOWNERDEAD"><code class="Er">EOWNERDEAD</code></a>]</dt>
- <dd>The argument <var class="Fa">mutex</var> points to a robust mutex and the
- process containing the previous owning thread terminated while holding the
- mutex lock. The lock was granted to the caller and it is up to the new
- owner to make the state consistent.</dd>
- <dt id="ENOTRECOVERABLE">[<a class="permalink" href="#ENOTRECOVERABLE"><code class="Er">ENOTRECOVERABLE</code></a>]</dt>
- <dd>The state protected by the <var class="Fa">mutex</var> is not
- recoverable.</dd>
-</dl>
-</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">pthread_mutex_consistent(3)</a>,
- <a class="Xr">pthread_mutex_destroy(3)</a>,
- <a class="Xr">pthread_mutex_init(3)</a>,
- <a class="Xr">pthread_mutex_trylock(3)</a>,
- <a class="Xr">pthread_mutex_unlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_lock</code>() function conforms
- to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 7, 2019</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_mutex_timedlock.3 3.html b/static/freebsd/man3/pthread_mutex_timedlock.3 3.html
deleted file mode 100644
index 8bc58642..00000000
--- a/static/freebsd/man3/pthread_mutex_timedlock.3 3.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MUTEX_TIMEDLOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MUTEX_TIMEDLOCK(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">pthread_mutex_timedlock</code> &#x2014;
- <span class="Nd">lock a mutex without blocking indefinitely</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">time.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutex_timedlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutex_t
- *restrict mutex</var>, <var class="Fa" style="white-space: nowrap;">const
- struct timespec *restrict abs_timeout</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_mutex_timedlock"><code class="Fn" id="pthread_mutex_timedlock">pthread_mutex_timedlock</code></a>()
- function will lock <var class="Fa">mutex</var>. If it is already locked the
- calling thread will block until the mutex becomes available or the timeout,
- specified by abs_timeout, expires. The time of the timeout is an absolute
- time and is not relative to the current time.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_mutex_timedlock</code>()
- will return zero, otherwise an error number will be returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_timedlock</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt>[Er ENOTRECOVERABLE]</dt>
- <dd>The <var class="Fa">mutex</var> was created with the protocol attribute
- having the value PTHREAD_PRIO_PROTECT and the calling thread's priority is
- higher than the mutex's current priority ceiling.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The process or thread would have blocked, and
- <var class="Fa">abs_timeout</var> specified a nanosecond value less than
- zero or greater than or equal to 1 billion.</dd>
- <dt id="EINVAL~2">[<a class="permalink" href="#EINVAL~2"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The <var class="Fa">mutex</var> parameter is invalid.</dd>
- <dt id="ETIMEDOUT">[<a class="permalink" href="#ETIMEDOUT"><code class="Er">ETIMEDOUT</code></a>]</dt>
- <dd>The <var class="Fa">mutex</var> could not be locked before the timeout
- expired.</dd>
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The <var class="Fa">mutex</var> could not be acquired because the maximum
- number of recursive locks for the <var class="Fa">mutex</var> has been
- exceeded.</dd>
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>The current thread already owns the <var class="Fa">mutex</var>.</dd>
- <dt id="EOWNERDEAD">[<a class="permalink" href="#EOWNERDEAD"><code class="Er">EOWNERDEAD</code></a>]</dt>
- <dd>The argument <var class="Fa">mutex</var> points to a robust mutex and the
- process containing the previous owning thread terminated while holding the
- mutex lock. The lock was granted to the caller and it is up to the new
- owner to make the state consistent.</dd>
- <dt id="ENOTRECOVERABLE">[<a class="permalink" href="#ENOTRECOVERABLE"><code class="Er">ENOTRECOVERABLE</code></a>]</dt>
- <dd>The state protected by the <var class="Fa">mutex</var> is not
- recoverable.</dd>
-</dl>
-</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">pthread_mutex_consistent(3)</a>,
- <a class="Xr">pthread_mutex_destroy(3)</a>,
- <a class="Xr">pthread_mutex_init(3)</a>,
- <a class="Xr">pthread_mutex_lock(3)</a>,
- <a class="Xr">pthread_mutex_trylock(3)</a>,
- <a class="Xr">pthread_mutex_unlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_timedlock</code>() function is
- expected to conform to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 7, 2019</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_mutex_trylock.3 3.html b/static/freebsd/man3/pthread_mutex_trylock.3 3.html
deleted file mode 100644
index 938da761..00000000
--- a/static/freebsd/man3/pthread_mutex_trylock.3 3.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MUTEX_TRYLOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MUTEX_TRYLOCK(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">pthread_mutex_trylock</code> &#x2014;
- <span class="Nd">attempt to lock a mutex without blocking</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutex_trylock</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutex_t
- *mutex</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_mutex_trylock"><code class="Fn" id="pthread_mutex_trylock">pthread_mutex_trylock</code></a>()
- function locks <var class="Fa">mutex</var>. If the mutex is already locked,
- <code class="Fn">pthread_mutex_trylock</code>() will not block waiting for
- the mutex, but will return an error condition.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_mutex_trylock</code>()
- will return zero, otherwise an error number will be returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_trylock</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">mutex</var> is invalid.</dd>
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd><var class="Fa">Mutex</var> is already locked.</dd>
- <dt id="EOWNERDEAD">[<a class="permalink" href="#EOWNERDEAD"><code class="Er">EOWNERDEAD</code></a>]</dt>
- <dd>The argument <var class="Fa">mutex</var> points to a robust mutex and the
- process containing the previous owning thread terminated while holding the
- mutex lock. The lock was granted to the caller and it is up to the new
- owner to make the state consistent.</dd>
- <dt id="ENOTRECOVERABLE">[<a class="permalink" href="#ENOTRECOVERABLE"><code class="Er">ENOTRECOVERABLE</code></a>]</dt>
- <dd>The state protected by the <var class="Fa">mutex</var> is not
- recoverable.</dd>
-</dl>
-</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">pthread_mutex_consistent(3)</a>,
- <a class="Xr">pthread_mutex_destroy(3)</a>,
- <a class="Xr">pthread_mutex_init(3)</a>,
- <a class="Xr">pthread_mutex_lock(3)</a>,
- <a class="Xr">pthread_mutex_unlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_trylock</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 7, 2019</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_mutex_unlock.3 3.html b/static/freebsd/man3/pthread_mutex_unlock.3 3.html
deleted file mode 100644
index 0a674813..00000000
--- a/static/freebsd/man3/pthread_mutex_unlock.3 3.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MUTEX_UNLOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MUTEX_UNLOCK(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">pthread_mutex_unlock</code> &#x2014;
- <span class="Nd">unlock a mutex</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutex_unlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutex_t
- *mutex</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">If the current thread holds the lock on
- <var class="Fa">mutex</var>, then the
- <a class="permalink" href="#pthread_mutex_unlock"><code class="Fn" id="pthread_mutex_unlock">pthread_mutex_unlock</code></a>()
- function unlocks <var class="Fa">mutex</var>.</p>
-<p class="Pp" id="pthread_mutex_consistent">If the argument pointed by the
- <var class="Fa">mutex</var> is a robust mutex in the inconsistent state, and
- the call to
- <a class="permalink" href="#pthread_mutex_consistent"><code class="Fn">pthread_mutex_consistent</code></a>()
- function was not done prior to unlocking, further locking attempts on the
- mutex <var class="Fa">mutex</var> are denied and locking functions return
- <code class="Er">ENOTRECOVERABLE</code> error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_mutex_unlock</code>() will
- return zero, otherwise an error number will be returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_unlock</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">mutex</var> is invalid.</dd>
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The current thread does not hold a lock on
- <var class="Fa">mutex</var>.</dd>
-</dl>
-</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">pthread_mutex_destroy(3)</a>,
- <a class="Xr">pthread_mutex_init(3)</a>,
- <a class="Xr">pthread_mutex_lock(3)</a>,
- <a class="Xr">pthread_mutex_trylock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutex_unlock</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 29, 2016</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_mutexattr.3 3.html b/static/freebsd/man3/pthread_mutexattr.3 3.html
deleted file mode 100644
index 867f21fd..00000000
--- a/static/freebsd/man3/pthread_mutexattr.3 3.html
+++ /dev/null
@@ -1,307 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MUTEXATTR(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MUTEXATTR(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">pthread_mutexattr_init</code>,
- <code class="Nm">pthread_mutexattr_destroy</code>,
- <code class="Nm">pthread_mutexattr_setprioceiling</code>,
- <code class="Nm">pthread_mutexattr_getprioceiling</code>,
- <code class="Nm">pthread_mutexattr_setprotocol</code>,
- <code class="Nm">pthread_mutexattr_getprotocol</code>,
- <code class="Nm">pthread_mutexattr_setpshared</code>,
- <code class="Nm">pthread_mutexattr_getpshared</code>,
- <code class="Nm">pthread_mutexattr_setrobust</code>,
- <code class="Nm">pthread_mutexattr_getrobust</code>,
- <code class="Nm">pthread_mutexattr_settype</code>,
- <code class="Nm">pthread_mutexattr_gettype</code> &#x2014;
- <span class="Nd">mutex attribute operations</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutexattr_t
- *attr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutexattr_t
- *attr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_setprioceiling</code>(<var class="Fa">pthread_mutexattr_t
- *attr</var>, <var class="Fa">int prioceiling</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_getprioceiling</code>(<var class="Fa">const
- pthread_mutexattr_t *attr</var>, <var class="Fa">int
- *prioceiling</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_setprotocol</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutexattr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- protocol</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_getprotocol</code>(<var class="Fa">const
- pthread_mutexattr_t *restrict attr</var>, <var class="Fa">int *restrict
- protocol</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_setpshared</code>(<var class="Fa">pthread_mutexattr_t
- *attr</var>, <var class="Fa">int shared</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_getpshared</code>(<var class="Fa">const
- pthread_mutexattr_t *attr</var>, <var class="Fa">int *shared</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_setrobust</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutexattr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- robust</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_getrobust</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutexattr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- *robust</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_settype</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutexattr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- type</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_gettype</code>(<var class="Fa">const
- pthread_mutexattr_t *restrict attr</var>, <var class="Fa">int *restrict
- type</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">Mutex attributes are used to specify parameters to
- <a class="permalink" href="#pthread_mutex_init"><code class="Fn" id="pthread_mutex_init">pthread_mutex_init</code></a>().
- One attribute object can be used in multiple calls to
- <code class="Fn">pthread_mutex_init</code>(), with or without modifications
- between calls.</p>
-<p class="Pp" id="pthread_mutexattr_init">The
- <a class="permalink" href="#pthread_mutexattr_init"><code class="Fn">pthread_mutexattr_init</code></a>()
- function initializes <var class="Fa">attr</var> with all the default mutex
- attributes.</p>
-<p class="Pp" id="pthread_mutexattr_destroy">The
- <a class="permalink" href="#pthread_mutexattr_destroy"><code class="Fn">pthread_mutexattr_destroy</code></a>()
- function destroys <var class="Fa">attr</var>.</p>
-<p class="Pp" id="pthread_mutexattr_setprioceiling">The
- <a class="permalink" href="#pthread_mutexattr_setprioceiling"><code class="Fn">pthread_mutexattr_setprioceiling</code></a>()
- function sets the priority ceiling for the mutex, used by threads executed
- under the <code class="Dv">PTHREAD_PRIO_PROTECT</code> protocol.</p>
-<p class="Pp" id="pthread_mutexattr_setprotocol">The
- <a class="permalink" href="#pthread_mutexattr_setprotocol"><code class="Fn">pthread_mutexattr_setprotocol</code></a>()
- function specifies the protocol to be followed in utilizing mutexes. The
- <var class="Fa">protocol</var> argument can take one of the following
- values:</p>
-<dl class="Bl-tag">
- <dt>PTHREAD_PRIO_NONE</dt>
- <dd>Priority and scheduling of the thread owning this mutex is not affected by
- its mutex ownership.</dd>
- <dt>PTHREAD_PRIO_INHERIT</dt>
- <dd>Request priority-inheritance protocol, where the thread owning the mutex
- is executed at the highest priority among priorities of all threads
- waiting on any mutex owned by this thread.</dd>
- <dt>PTHREAD_PRIO_PROTECT</dt>
- <dd>Request priority-inheritance protocol, where the thread owning the mutex
- is executed at highest priority among priorities or priority ceilings of
- all threads waiting on any mutex owned by this thread.</dd>
-</dl>
-<p class="Pp" id="pthread_mutexattr_setpshared">The
- <a class="permalink" href="#pthread_mutexattr_setpshared"><code class="Fn">pthread_mutexattr_setpshared</code></a>()
- function sets the process-shared attribute of <var class="Fa">attr</var> to
- the value specified in <var class="Fa">pshared</var>. The argument
- <var class="Fa">pshared</var> may have one of the following values:</p>
-<dl class="Bl-tag">
- <dt id="PTHREAD_PROCESS_PRIVATE"><a class="permalink" href="#PTHREAD_PROCESS_PRIVATE"><code class="Dv">PTHREAD_PROCESS_PRIVATE</code></a></dt>
- <dd>The mutex may only be used by threads in the same process as the one that
- created the object.</dd>
- <dt id="PTHREAD_PROCESS_SHARED"><a class="permalink" href="#PTHREAD_PROCESS_SHARED"><code class="Dv">PTHREAD_PROCESS_SHARED</code></a></dt>
- <dd>The mutex may be used by threads in processes other than the one that
- created the object, assuming other processes share access to the memory
- where the mutex was allocated.</dd>
-</dl>
-See <a class="Xr">libthr(3)</a> for details of the implementation of the shared
- mutexes, and their limitations.
-<p class="Pp" id="pthread_mutexattr_setrobust">The
- <a class="permalink" href="#pthread_mutexattr_setrobust"><code class="Fn">pthread_mutexattr_setrobust</code></a>()
- function specifies robustness attribute of the mutex. Possible values for
- the <var class="Fa">robust</var> argument are</p>
-<dl class="Bl-tag">
- <dt>PTHREAD_MUTEX_STALLED</dt>
- <dd>No special actions are taken if the thread owning the mutex is terminated
- without unlocking the mutex lock. This can lead to deadlocks if no other
- thread can unlock the mutex. This is the default value.</dd>
- <dt>PTHREAD_MUTEX_ROBUST</dt>
- <dd>If the process containing the owning thread of a robust mutex, or owning
- thread, terminates while holding the mutex lock, the next thread that
- acquires the mutex is notified about the termination by the return value
- <code class="Ev">EOWNERDEAD</code> from the locking function. Then, either
- <a class="Xr">pthread_mutex_consistent(3)</a> can be used to repair the
- mutex lock state, or <a class="Xr">pthread_mutex_unlock(3)</a> can unlock
- the mutex lock but also put it an unusable state, where all further
- attempts to acquire it result in the
- <code class="Ev">ENOTRECOVERABLE</code> error.</dd>
-</dl>
-<p class="Pp" id="pthread_mutexattr_settype">The
- <a class="permalink" href="#pthread_mutexattr_settype"><code class="Fn">pthread_mutexattr_settype</code></a>()
- function sets the type of the mutex. The type affects the behavior of calls
- which lock and unlock the mutex. The possible values for the
- <var class="Fa">type</var> argument are</p>
-<dl class="Bl-tag">
- <dt>PTHREAD_MUTEX_NORMAL</dt>
- <dd>Both recursive locking, and unlocking when the lock is not owned by the
- current thread, cause an error to be returned from the corresponding
- functions. This matches <code class="Dv">PTHREAD_MUTEX_ERRORCHECK</code>
- but somewhat contradicts the behavior mandated by POSIX.</dd>
- <dt>PTHREAD_MUTEX_ERRORCHECK</dt>
- <dd>Both recursive locking, and unlocking when the lock is not owned by the
- current thread, cause an error returned from the corresponding
- functions.</dd>
- <dt>PTHREAD_MUTEX_RECURSIVE</dt>
- <dd>Recursive locking is allowed. Attempt to unlock when current thread is not
- an owner of the lock causes an error to be returned.</dd>
- <dt>PTHREAD_MUTEX_DEFAULT</dt>
- <dd>The <span class="Ux">FreeBSD</span> implementation maps this type to
- <code class="Dv">PTHREAD_MUTEX_ERRORCHECK</code> type.</dd>
-</dl>
-<p class="Pp" id="pthread_mutexattr_get*">The
- <a class="permalink" href="#pthread_mutexattr_get*"><code class="Fn">pthread_mutexattr_get*</code></a>()
- functions copy the value of the attribute that corresponds to each function
- name to the location pointed to by the second function parameter.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, these functions return 0. Otherwise, an error
- number is returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_init</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Out of memory.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_destroy</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_setprioceiling</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~2">[<a class="permalink" href="#EINVAL~2"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>, or invalid value for
- <var class="Fa">prioceiling</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_getprioceiling</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~3">[<a class="permalink" href="#EINVAL~3"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_setprotocol</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~4">[<a class="permalink" href="#EINVAL~4"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>, or invalid value for
- <var class="Fa">protocol</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_getprotocol</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~5">[<a class="permalink" href="#EINVAL~5"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_setpshared</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~6">[<a class="permalink" href="#EINVAL~6"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>, or invalid value for
- <var class="Fa">shared</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_getpshared</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~7">[<a class="permalink" href="#EINVAL~7"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_settype</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~8">[<a class="permalink" href="#EINVAL~8"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>, or invalid value for
- <var class="Fa">type</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_gettype</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~9">[<a class="permalink" href="#EINVAL~9"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_setrobust</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~10">[<a class="permalink" href="#EINVAL~10"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>, or invalid value for
- <var class="Fa">robust</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_getrobust</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~11">[<a class="permalink" href="#EINVAL~11"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">attr</var>.</dd>
-</dl>
-</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">libthr(3)</a>,
- <a class="Xr">pthread_mutex_init(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_init</code>() and
- <code class="Fn">pthread_mutexattr_destroy</code>() functions conform to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span></p>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_setprioceiling</code>(),
- <code class="Fn">pthread_mutexattr_getprioceiling</code>(),
- <code class="Fn">pthread_mutexattr_setprotocol</code>(),
- <code class="Fn">pthread_mutexattr_getprotocol</code>(),
- <code class="Fn">pthread_mutexattr_setpshared</code>(),
- <code class="Fn">pthread_mutexattr_getpshared</code>(),
- <code class="Fn">pthread_mutexattr_settype</code>(), and
- <code class="Fn">pthread_mutexattr_gettype</code>() functions conform to
- <span class="St">Version&#x00A0;2 of the Single UNIX Specification
- (&#x201C;SUSv2&#x201D;)</span>. The
- <code class="Fn">pthread_mutexattr_setrobust</code>() and
- <code class="Fn">pthread_mutexattr_getrobust</code>() functions conform to
- <span class="St">Version&#x00A0;4 of the Single UNIX Specification
- (&#x201C;SUSv4&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 27, 2023</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_mutexattr_getkind_np.3 3.html b/static/freebsd/man3/pthread_mutexattr_getkind_np.3 3.html
deleted file mode 100644
index e463c89f..00000000
--- a/static/freebsd/man3/pthread_mutexattr_getkind_np.3 3.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_MUTEXATTR_GETKIND_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_MUTEXATTR_GETKIND_NP(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">pthread_mutexattr_getkind_np</code>,
- <code class="Nm">pthread_mutexattr_setkind_np</code> &#x2014;
- <span class="Nd">mutex attribute operations (legacy)</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_getkind_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutexattr_t
- attr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_mutexattr_setkind_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_mutexattr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- kind</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<div class="Bf Sy">These functions are deprecated and non-portable
- implementation of the mutex type manipulation.</div>
-<p class="Pp">It is recommended to use the
- <a class="Xr">pthread_mutexattr_gettype(3)</a> and
- <a class="Xr">pthread_mutexattr_settype(3)</a> functions instead.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_getkind_np</code>()
- function returns a positive value representing the &#x201C;kind&#x201D; of
- the mutex attribute <var class="Fa">attr</var> if successful; otherwise the
- value -1 is returned and the global variable <var class="Va">errno</var> is
- set to indicate the error.</p>
-<p class="Pp">
- <br/>
- The <code class="Fn">pthread_mutexattr_setkind_np</code>() function returns
- the value&#x00A0;0 if successful; otherwise the value&#x00A0;-1 is returned
- and the global variable <var class="Va">errno</var> is set to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_mutexattr_getkind_np</code>() and
- <code class="Fn">pthread_mutexattr_setkind_np</code>() functions will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">attr</var> is invalid.</dd>
-</dl>
-</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">pthread_mutex_destroy(3)</a>,
- <a class="Xr">pthread_mutex_init(3)</a>,
- <a class="Xr">pthread_mutexattr_gettype(3)</a>,
- <a class="Xr">pthread_mutexattr_settype(3)</a>,
- <a class="Xr">pthread_np(3)</a></p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_np.3 3.html b/static/freebsd/man3/pthread_np.3 3.html
deleted file mode 100644
index f51957de..00000000
--- a/static/freebsd/man3/pthread_np.3 3.html
+++ /dev/null
@@ -1,179 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_NP(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">pthread_np</code> &#x2014;
- <span class="Nd">FreeBSD extensions to POSIX thread functions</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">This manual page documents extensions to the POSIX thread
- functions. These extensions may or may not be portable to other operating
- systems.</p>
-<p class="Pp">The POSIX thread functions are summarized in this section in the
- following groups:</p>
-<p class="Pp"></p>
-<ul class="Bl-bullet Bd-indent Bl-compact">
- <li>Thread Routines</li>
- <li>Attribute Object Routines</li>
- <li>Mutex Routines</li>
-</ul>
-<section class="Ss">
-<h2 class="Ss" id="Thread_Routines"><a class="permalink" href="#Thread_Routines">Thread
- Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_getaffinity_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_getaffinity_np"><code class="Fn">pthread_getaffinity_np</code></a>(<var class="Fa">pthread_t
- td</var>, <var class="Fa">size_t cpusetsize</var>, <var class="Fa">cpuset_t
- *cpusetp</var>);</dt>
- <dd>Get the CPU affinity of a specified thread.</dd>
- <dt id="pthread_get_name_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_get_name_np"><code class="Fn">pthread_get_name_np</code></a>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">char *name</var>, <var class="Fa">size_t
- len</var>)</dt>
- <dd>Get the name of a specified thread.</dd>
- <dt id="pthread_getname_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_getname_np"><code class="Fn">pthread_getname_np</code></a>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">char *name</var>, <var class="Fa">size_t
- len</var>)</dt>
- <dd>Get the name of a specified thread.</dd>
- <dt id="pthread_getthreadid_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_getthreadid_np"><code class="Fn">pthread_getthreadid_np</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Get the calling thread's integral ID.</dd>
- <dt id="pthread_main_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_main_np"><code class="Fn">pthread_main_np</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Identify the initial thread.</dd>
- <dt id="pthread_multi_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_multi_np"><code class="Fn">pthread_multi_np</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Sets the thread's scheduling mode to multi-threaded.</dd>
- <dt id="pthread_peekjoin_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_peekjoin_np"><code class="Fn">pthread_peekjoin_np</code></a>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">void **value_ptr</var>)</dt>
- <dd>Peek into the exit status of a specified thread.</dd>
- <dt id="pthread_resume_all_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_resume_all_np"><code class="Fn">pthread_resume_all_np</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Resume all suspended threads.</dd>
- <dt id="pthread_setaffinity_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_setaffinity_np"><code class="Fn">pthread_setaffinity_np</code></a>(<var class="Fa">pthread_t
- td</var>, <var class="Fa">size_t cpusetsize</var>, <var class="Fa">const
- cpuset_t *cpusetp</var>);</dt>
- <dd>Set the CPU affinity of a specified thread.</dd>
- <dt id="pthread_set_name_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_set_name_np"><code class="Fn">pthread_set_name_np</code></a>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">char *name</var>)</dt>
- <dd>Sets the specified thread's name.</dd>
- <dt id="pthread_setname_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_setname_np"><code class="Fn">pthread_setname_np</code></a>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">char *name</var>)</dt>
- <dd>Sets the specified thread's name.</dd>
- <dt id="pthread_signals_block_np"><var class="Ft">void</var>
- <a class="permalink" href="#pthread_signals_block_np"><code class="Fn">pthread_signals_block_np</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Blocks all asynchronous signals, quickly.</dd>
- <dt id="pthread_single_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_single_np"><code class="Fn">pthread_single_np</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Sets the thread's scheduling mode to single-threaded.</dd>
- <dt id="pthread_suspend_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_suspend_np"><code class="Fn">pthread_suspend_np</code></a>(<var class="Fa">pthread_t
- tid</var>)</dt>
- <dd>Suspend the specified thread.</dd>
- <dt id="pthread_suspend_all_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_suspend_all_np"><code class="Fn">pthread_suspend_all_np</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Suspend all active threads.</dd>
- <dt id="pthread_timedjoin_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_timedjoin_np"><code class="Fn">pthread_timedjoin_np</code></a>(<var class="Fa">pthread_t
- thread</var>, <var class="Fa">void **value_ptr</var>, <var class="Fa">const
- struct timespec *abstime</var>);</dt>
- <dd>A variant of
- <a class="permalink" href="#pthread_join"><code class="Fn" id="pthread_join">pthread_join</code></a>()
- with a timeout.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Attribute_Object_Routines"><a class="permalink" href="#Attribute_Object_Routines">Attribute
- Object Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_attr_get_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_get_np"><code class="Fn">pthread_attr_get_np</code></a>(<var class="Fa">pthread_t
- pid</var>, <var class="Fa">pthread_attr_t *dst</var>);</dt>
- <dd>Get the attributes of an existent thread.</dd>
- <dt id="pthread_attr_getaffinity_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_getaffinity_np"><code class="Fn">pthread_attr_getaffinity_np</code></a>(<var class="Fa">const
- pthread_attr_t *pattr</var>, <var class="Fa">size_t cpusetsize</var>,
- <var class="Fa">cpuset_t *cpusetp</var>);</dt>
- <dd>Get the CPU affinity mask from the thread attribute object.</dd>
- <dt id="pthread_attr_setaffinity_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_setaffinity_np"><code class="Fn">pthread_attr_setaffinity_np</code></a>(<var class="Fa">pthread_attr_t
- *pattr</var>, <var class="Fa">size_t cpusetsize</var>, <var class="Fa">const
- cpuset_t *cpusetp</var>);</dt>
- <dd>Set the CPU affinity mask for the thread attribute object.</dd>
- <dt id="pthread_attr_setcreatesuspend_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_attr_setcreatesuspend_np"><code class="Fn">pthread_attr_setcreatesuspend_np</code></a>(<var class="Fa">pthread_attr_t
- *attr</var>)</dt>
- <dd>Permit creation of suspended threads.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Mutex_Routines"><a class="permalink" href="#Mutex_Routines">Mutex
- Routines</a></h2>
-<dl class="Bl-tag">
- <dt id="pthread_mutexattr_getkind_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_getkind_np"><code class="Fn">pthread_mutexattr_getkind_np</code></a>(<var class="Fa">pthread_mutexattr_t
- attr</var>)</dt>
- <dd>Deprecated, use <a class="Xr">pthread_mutexattr_gettype(3)</a>
- instead.</dd>
- <dt id="pthread_mutexattr_setkind_np"><var class="Ft">int</var>
- <a class="permalink" href="#pthread_mutexattr_setkind_np"><code class="Fn">pthread_mutexattr_setkind_np</code></a>(<var class="Fa">pthread_mutexattr_t
- *attr</var>)</dt>
- <dd>Deprecated, use <a class="Xr">pthread_mutexattr_settype(3)</a>
- instead.</dd>
-</dl>
-</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">libthr(3)</a>, <a class="Xr">pthread(3)</a>,
- <a class="Xr">pthread_affinity_np(3)</a>,
- <a class="Xr">pthread_attr_affinity_np(3)</a>,
- <a class="Xr">pthread_attr_get_np(3)</a>,
- <a class="Xr">pthread_attr_setcreatesuspend_np(3)</a>,
- <a class="Xr">pthread_getthreadid_np(3)</a>,
- <a class="Xr">pthread_join(3)</a>, <a class="Xr">pthread_main_np(3)</a>,
- <a class="Xr">pthread_multi_np(3)</a>,
- <a class="Xr">pthread_mutexattr_getkind_np(3)</a>,
- <a class="Xr">pthread_resume_all_np(3)</a>,
- <a class="Xr">pthread_resume_np(3)</a>,
- <a class="Xr">pthread_set_name_np(3)</a>,
- <a class="Xr">pthread_signals_block_np(3)</a>,
- <a class="Xr">pthread_suspend_all_np(3)</a>,
- <a class="Xr">pthread_suspend_np(3)</a>,
- <a class="Xr">pthread_switch_add_np(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">All of these functions are non-portable extensions to POSIX
- threads.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_once.3 3.html b/static/freebsd/man3/pthread_once.3 3.html
deleted file mode 100644
index f0b90d08..00000000
--- a/static/freebsd/man3/pthread_once.3 3.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_ONCE(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_ONCE(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">pthread_once</code> &#x2014;
- <span class="Nd">dynamic package initialization</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp">pthread_once_t <var class="Fa">once_control</var> =
- PTHREAD_ONCE_INIT;
- <br/>
- <var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_once</code>(<var class="Fa" style="white-space: nowrap;">pthread_once_t
- *once_control</var>, <var class="Fa" style="white-space: nowrap;">void
- (*init_routine)(void)</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The first call to
- <a class="permalink" href="#pthread_once"><code class="Fn" id="pthread_once">pthread_once</code></a>()
- by any thread in a process, with a given <var class="Fa">once_control</var>,
- will call the
- <a class="permalink" href="#init_routine"><code class="Fn" id="init_routine">init_routine</code></a>()
- with no arguments. Subsequent calls to
- <code class="Fn">pthread_once</code>() with the same
- <var class="Fa">once_control</var> will not call the
- <code class="Fn">init_routine</code>(). On return from
- <code class="Fn">pthread_once</code>(), it is guaranteed that
- <code class="Fn">init_routine</code>() has completed. The
- <var class="Fa">once_control</var> parameter is used to determine whether
- the associated initialization routine has been called.</p>
-<p class="Pp" id="pthread_once~2">The function
- <a class="permalink" href="#pthread_once~2"><code class="Fn">pthread_once</code></a>()
- is not a cancellation point. However, if
- <a class="permalink" href="#init_routine~2"><code class="Fn" id="init_routine~2">init_routine</code></a>()
- is a cancellation point and is cancelled, the effect on
- <var class="Fa">once_control</var> is as if
- <code class="Fn">pthread_once</code>() was never called.</p>
-<p class="Pp">The constant <var class="Fa">PTHREAD_ONCE_INIT</var> is defined by
- header <code class="In">&lt;<a class="In">pthread.h</a>&gt;</code>.</p>
-<p class="Pp" id="pthread_once~3">The behavior of
- <a class="permalink" href="#pthread_once~3"><code class="Fn">pthread_once</code></a>()
- is undefined if <var class="Fa">once_control</var> has automatic storage
- duration or is not initialized by
- <var class="Fa">PTHREAD_ONCE_INIT</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_once</code>() function
- will return zero. Otherwise an error number will be returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">None.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_once</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 4, 1996</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_resume_all_np.3 4.html b/static/freebsd/man3/pthread_resume_all_np.3 4.html
deleted file mode 100644
index a9c661f8..00000000
--- a/static/freebsd/man3/pthread_resume_all_np.3 4.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RESUME_ALL_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RESUME_ALL_NP(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">pthread_resume_all_np</code> &#x2014;
- <span class="Nd">resume all suspended threads</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_resume_all_np</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_resume_all_np"><code class="Fn" id="pthread_resume_all_np">pthread_resume_all_np</code></a>()
- function causes all active threads to be scanned and resumes those which
- were previously suspended.</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">pthread_attr_setcreatesuspend_np(3)</a>,
- <a class="Xr">pthread_np(3)</a>, <a class="Xr">pthread_resume_np(3)</a>,
- <a class="Xr">pthread_suspend_all_np(3)</a>,
- <a class="Xr">pthread_suspend_np(3)</a></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">Alexey
- Zelkin</span>
- &lt;<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_resume_np.3 3.html b/static/freebsd/man3/pthread_resume_np.3 3.html
deleted file mode 100644
index 438b09dd..00000000
--- a/static/freebsd/man3/pthread_resume_np.3 3.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RESUME_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RESUME_NP(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">pthread_resume_np</code> &#x2014;
- <span class="Nd">resume suspended thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_resume_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- tid</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_resume_np"><code class="Fn" id="pthread_resume_np">pthread_resume_np</code></a>()
- function, called on a suspended thread, causes it to resume. If a thread
- specified by the <var class="Fa">tid</var> argument is not suspended, no
- actions will be performed.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_resume_np</code>()
- function returns 0. Otherwise, an error number is returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_resume_np</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by the <var class="Fa">tid</var> argument is
- invalid.</dd>
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>No thread could be found corresponding to the thread ID specified by the
- <var class="Fa">tid</var> argument.</dd>
-</dl>
-</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">pthread_attr_setcreatesuspend_np(3)</a>,
- <a class="Xr">pthread_np(3)</a>, <a class="Xr">pthread_resume_all_np(3)</a>,
- <a class="Xr">pthread_suspend_all_np(3)</a>,
- <a class="Xr">pthread_suspend_np(3)</a></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">Alexey
- Zelkin</span>
- &lt;<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlock_destroy.3 4.html b/static/freebsd/man3/pthread_rwlock_destroy.3 4.html
deleted file mode 100644
index d2e502e7..00000000
--- a/static/freebsd/man3/pthread_rwlock_destroy.3 4.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCK_DESTROY(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCK_DESTROY(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">pthread_rwlock_destroy</code> &#x2014;
- <span class="Nd">destroy a read/write lock</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlock_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlock_t
- *lock</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_rwlock_destroy"><code class="Fn" id="pthread_rwlock_destroy">pthread_rwlock_destroy</code></a>()
- function is used to destroy a read/write lock previously created with
- <a class="permalink" href="#pthread_rwlock_init"><code class="Fn" id="pthread_rwlock_init">pthread_rwlock_init</code></a>().</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_rwlock_destroy</code>() function will return zero.
- Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_destroy</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The caller does not have the privilege to perform the operation.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_rwlock_destroy</code>() function may
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd>The system has detected an attempt to destroy the object referenced by
- <var class="Fa">lock</var> while it is locked.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">lock</var> is invalid.</dd>
-</dl>
-</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">pthread_rwlock_init(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_destroy</code>() function is
- expected to conform to <span class="St">Version&#x00A0;2 of the Single UNIX
- Specification (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_destroy</code>() function
- first appeared in <span class="Ux">FreeBSD 3.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 4, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlock_init.3 3.html b/static/freebsd/man3/pthread_rwlock_init.3 3.html
deleted file mode 100644
index bf78b5f8..00000000
--- a/static/freebsd/man3/pthread_rwlock_init.3 3.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCK_INIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCK_INIT(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">pthread_rwlock_init</code> &#x2014;
- <span class="Nd">initialize a read/write lock</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlock_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlock_t
- *restrict lock</var>, <var class="Fa" style="white-space: nowrap;">const
- pthread_rwlockattr_t *restrict attr</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_rwlock_init"><code class="Fn" id="pthread_rwlock_init">pthread_rwlock_init</code></a>()
- function is used to initialize a read/write lock, with attributes specified
- by <var class="Fa">attr</var>. If <var class="Fa">attr</var> is NULL, the
- default read/write lock attributes are used.</p>
-<p class="Pp" id="pthread_rwlock_init~2">The results of calling
- <a class="permalink" href="#pthread_rwlock_init~2"><code class="Fn">pthread_rwlock_init</code></a>()
- with an already initialized lock are undefined.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_rwlock_init</code>()
- function will return zero. Otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_init</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The system lacked the necessary resources (other than memory) to
- initialize the lock.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory exists to initialize the lock.</dd>
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The caller does not have sufficient privilege to perform the
- operation.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_rwlock_init</code>() function may
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd>The system has detected an attempt to re-initialize the object referenced
- by <var class="Fa">lock</var>, a previously initialized but not yet
- destroyed read/write lock.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">attr</var> is invalid.</dd>
-</dl>
-</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">pthread_rwlock_destroy(3)</a>,
- <a class="Xr">pthread_rwlockattr_init(3)</a>,
- <a class="Xr">pthread_rwlockattr_setpshared(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_init</code>() function is
- expected to conform to <span class="St">Version&#x00A0;2 of the Single UNIX
- Specification (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_init</code>() function first
- appeared in <span class="Ux">FreeBSD 3.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlock_rdlock.3 3.html b/static/freebsd/man3/pthread_rwlock_rdlock.3 3.html
deleted file mode 100644
index a54dcdae..00000000
--- a/static/freebsd/man3/pthread_rwlock_rdlock.3 3.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCK_RDLOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCK_RDLOCK(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">pthread_rwlock_rdlock</code>,
- <code class="Nm">pthread_rwlock_tryrdlock</code> &#x2014;
- <span class="Nd">acquire a read/write lock for reading</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlock_rdlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlock_t
- *lock</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlock_tryrdlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlock_t
- *lock</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_rwlock_rdlock"><code class="Fn" id="pthread_rwlock_rdlock">pthread_rwlock_rdlock</code></a>()
- function acquires a read lock on <var class="Fa">lock</var> provided that
- <var class="Fa">lock</var> is not presently held for writing and no writer
- threads are presently blocked on the lock. If the read lock cannot be
- immediately acquired, the calling thread blocks until it can acquire the
- lock.</p>
-<p class="Pp" id="pthread_rwlock_tryrdlock">The
- <a class="permalink" href="#pthread_rwlock_tryrdlock"><code class="Fn">pthread_rwlock_tryrdlock</code></a>()
- function performs the same action, but does not block if the lock cannot be
- immediately obtained (i.e., the lock is held for writing or there are
- waiting writers).</p>
-<p class="Pp" id="pthread_rwlock_unlock">A thread may hold multiple concurrent
- read locks. If so,
- <a class="permalink" href="#pthread_rwlock_unlock"><code class="Fn">pthread_rwlock_unlock</code></a>()
- must be called once for each lock obtained.</p>
-<p class="Pp">The results of acquiring a read lock while the calling thread
- holds a write lock are undefined.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">To prevent writer starvation, writers are favored over
- readers.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_rwlock_rdlock</code>()
- and <code class="Fn">pthread_rwlock_tryrdlock</code>() functions will return
- zero. Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_tryrdlock</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd>The lock could not be acquired because a writer holds the lock or was
- blocked on it.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_rwlock_rdlock</code>() and
- <code class="Fn">pthread_rwlock_tryrdlock</code>() functions may fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The lock could not be acquired because the maximum number of read locks
- against <var class="Fa">lock</var> has been exceeded.</dd>
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>The current thread already owns <var class="Fa">lock</var> for
- writing.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">lock</var> is invalid.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory exists to initialize the lock (applies to statically
- initialized locks only).</dd>
-</dl>
-</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">pthread_rwlock_init(3)</a>,
- <a class="Xr">pthread_rwlock_trywrlock(3)</a>,
- <a class="Xr">pthread_rwlock_unlock(3)</a>,
- <a class="Xr">pthread_rwlock_wrlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_rdlock</code>() and
- <code class="Fn">pthread_rwlock_tryrdlock</code>() functions are expected to
- conform to <span class="St">Version&#x00A0;2 of the Single UNIX
- Specification (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_rdlock</code>() function first
- appeared in <span class="Ux">FreeBSD 3.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 4, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlock_timedrdlock.3 3.html b/static/freebsd/man3/pthread_rwlock_timedrdlock.3 3.html
deleted file mode 100644
index c7ba73b7..00000000
--- a/static/freebsd/man3/pthread_rwlock_timedrdlock.3 3.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCK_TIMEDRDLOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCK_TIMEDRDLOCK(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">pthread_rwlock_timedrdlock</code> &#x2014;
- <span class="Nd">acquire a read-write lock for reading or give up after a
- specified period</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlock_timedrdlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlock_t
- *restrict rwlock</var>, <var class="Fa" style="white-space: nowrap;">const
- struct timespec *restrict abs_timeout</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">This function acquires a read lock on the read-write lock
- <var class="Fa">rwlock</var>. However, if the lock cannot be acquired
- without waiting for another thread to unlock the lock, this wait shall be
- terminated when <var class="Fa">abs_timeout</var> expires.</p>
-<p class="Pp">A thread may hold multiple concurrent read locks. The
- <a class="Xr">pthread_rwlock_unlock(3)</a> function must be called once for
- each lock acquired.</p>
-<p class="Pp" id="pthread_rwlock_timedrdlock">If the thread should be
- interrupted by a signal, the
- <a class="permalink" href="#pthread_rwlock_timedrdlock"><code class="Fn">pthread_rwlock_timedrdlock</code></a>()
- function will be automatically restarted after the thread returns from the
- signal handler.</p>
-<p class="Pp">The calling thread may deadlock if at the time the call is made it
- holds a write lock on <var class="Fa">rwlock</var>. The results are
- undefined if this function is called with an uninitialized read-write
- lock.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">To prevent writer starvation, writers are favored over
- readers.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_rwlock_timedrdlock</code>() function will return
- zero. Otherwise, an error number will be returned to indicate the error.</p>
-<p class="Pp">This function shall not return an error code of
- <code class="Er">EINTR</code>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_timedrdlock</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="ETIMEDOUT">[<a class="permalink" href="#ETIMEDOUT"><code class="Er">ETIMEDOUT</code></a>]</dt>
- <dd>The lock could not be acquired before the specified timeout expired.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_rwlock_timedrdlock</code>() function
- may fail if:</p>
-<dl class="Bl-tag">
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>The read lock could not be acquired because the maximum number of read
- locks for <var class="Fa">rwlock</var> would be exceeded.</dd>
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>The calling thread already holds a write lock on
- <var class="Fa">rwlock</var>.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">rwlock</var> does not refer to an
- initialized read-write lock object, or the
- <var class="Fa">abs_timeout</var> nanosecond value is less than zero or
- greater than or equal to 1 billion.</dd>
-</dl>
-</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">pthread_rwlock_init(3)</a>,
- <a class="Xr">pthread_rwlock_timedwrlock(3)</a>,
- <a class="Xr">pthread_rwlock_unlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_timedrdlock</code>() function
- is expected to conform to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_timedrdlock</code>() function
- first appeared in <span class="Ux">FreeBSD 5.2</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlock_timedwrlock.3 3.html b/static/freebsd/man3/pthread_rwlock_timedwrlock.3 3.html
deleted file mode 100644
index 4995cab7..00000000
--- a/static/freebsd/man3/pthread_rwlock_timedwrlock.3 3.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCK_TIMEDWRLOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCK_TIMEDWRLOCK(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">pthread_rwlock_timedwrlock</code> &#x2014;
- <span class="Nd">acquire a read-write lock for writing or give up after a
- specified period</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlock_timedwrlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlock_t
- *restrict rwlock</var>, <var class="Fa" style="white-space: nowrap;">const
- struct timespec *restrict abs_timeout</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">This function acquires a write lock on the read-write lock
- <var class="Fa">rwlock</var>. However, if the lock cannot be acquired
- without waiting for another thread to unlock the lock, this wait shall be
- terminated when <var class="Fa">abs_timeout</var> expires.</p>
-<p class="Pp" id="pthread_rwlock_timedwrlock">If the thread should be
- interrupted by a signal, the
- <a class="permalink" href="#pthread_rwlock_timedwrlock"><code class="Fn">pthread_rwlock_timedwrlock</code></a>()
- function will be automatically restarted after the thread returns from the
- signal handler.</p>
-<p class="Pp">The calling thread may deadlock if at the time the call is made it
- holds <var class="Fa">rwlock</var>. The results are undefined if this
- function is called with an uninitialized read-write lock.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">To prevent writer starvation, writers are favored over
- readers.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_rwlock_timedwrlock</code>() function will return
- zero. Otherwise, an error number will be returned to indicate the error.</p>
-<p class="Pp">This function shall not return an error code of
- <code class="Er">EINTR</code>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_timedwrlock</code>() function
- shall fail if:</p>
-<dl class="Bl-tag">
- <dt id="ETIMEDOUT">[<a class="permalink" href="#ETIMEDOUT"><code class="Er">ETIMEDOUT</code></a>]</dt>
- <dd>The lock could not be acquired before the specified timeout expired.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_rwlock_timedwrlock</code>() function
- may fail if:</p>
-<dl class="Bl-tag">
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>The calling thread already holds <var class="Fa">rwlock</var>.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">rwlock</var> does not refer to an
- initialized read-write lock object, or the
- <var class="Fa">abs_timeout</var> nanosecond value is less than zero or
- greater than or equal to 1 billion.</dd>
-</dl>
-</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">pthread_rwlock_init(3)</a>,
- <a class="Xr">pthread_rwlock_timedrdlock(3)</a>,
- <a class="Xr">pthread_rwlock_unlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_timedwrlock</code>() function
- is expected to conform to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_timedwrlock</code>() function
- first appeared in <span class="Ux">FreeBSD 5.2</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlock_unlock.3 3.html b/static/freebsd/man3/pthread_rwlock_unlock.3 3.html
deleted file mode 100644
index d93e16c0..00000000
--- a/static/freebsd/man3/pthread_rwlock_unlock.3 3.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCK_UNLOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCK_UNLOCK(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">pthread_rwlock_unlock</code> &#x2014;
- <span class="Nd">release a read/write lock</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlock_unlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlock_t
- *lock</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_rwlock_unlock"><code class="Fn" id="pthread_rwlock_unlock">pthread_rwlock_unlock</code></a>()
- function is used to release the read/write lock previously obtained by
- <a class="permalink" href="#pthread_rwlock_rdlock"><code class="Fn" id="pthread_rwlock_rdlock">pthread_rwlock_rdlock</code></a>(),
- <a class="permalink" href="#pthread_rwlock_wrlock"><code class="Fn" id="pthread_rwlock_wrlock">pthread_rwlock_wrlock</code></a>(),
- <a class="permalink" href="#pthread_rwlock_tryrdlock"><code class="Fn" id="pthread_rwlock_tryrdlock">pthread_rwlock_tryrdlock</code></a>(),
- or
- <a class="permalink" href="#pthread_rwlock_trywrlock"><code class="Fn" id="pthread_rwlock_trywrlock">pthread_rwlock_trywrlock</code></a>().</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_rwlock_unlock</code>()
- function will return zero. Otherwise an error number will be returned to
- indicate the error.</p>
-<p class="Pp">The results are undefined if <var class="Fa">lock</var> is not
- held by the calling thread.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_unlock</code>() function may
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">lock</var> is invalid.</dd>
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The current thread does not own the read/write lock.</dd>
-</dl>
-</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">pthread_rwlock_rdlock(3)</a>,
- <a class="Xr">pthread_rwlock_wrlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_unlock</code>() function is
- expected to conform to <span class="St">Version&#x00A0;2 of the Single UNIX
- Specification (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_unlock</code>() function first
- appeared in <span class="Ux">FreeBSD 3.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 4, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlock_wrlock.3 3.html b/static/freebsd/man3/pthread_rwlock_wrlock.3 3.html
deleted file mode 100644
index 09591f6c..00000000
--- a/static/freebsd/man3/pthread_rwlock_wrlock.3 3.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCK_WRLOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCK_WRLOCK(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">pthread_rwlock_wrlock</code>,
- <code class="Nm">pthread_rwlock_trywrlock</code> &#x2014;
- <span class="Nd">acquire a read/write lock for writing</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlock_wrlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlock_t
- *lock</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlock_trywrlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlock_t
- *lock</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_rwlock_wrlock"><code class="Fn" id="pthread_rwlock_wrlock">pthread_rwlock_wrlock</code></a>()
- function blocks until a write lock can be acquired against
- <var class="Fa">lock</var>. The
- <a class="permalink" href="#pthread_rwlock_trywrlock"><code class="Fn" id="pthread_rwlock_trywrlock">pthread_rwlock_trywrlock</code></a>()
- function performs the same action, but does not block if the lock cannot be
- immediately obtained.</p>
-<p class="Pp">The results are undefined if the calling thread already holds the
- lock at the time the call is made.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">To prevent writer starvation, writers are favored over
- readers.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_rwlock_wrlock</code>()
- and <code class="Fn">pthread_rwlock_trywrlock</code>() functions will return
- zero. Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_trywrlock</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd>The calling thread is not able to acquire the lock without blocking.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_rwlock_wrlock</code>() and
- <code class="Fn">pthread_rwlock_trywrlock</code>() functions may fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>The calling thread already owns the read/write lock (for reading or
- writing).</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">lock</var> is invalid.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory exists to initialize the lock (applies to statically
- initialized locks only).</dd>
-</dl>
-</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">pthread_rwlock_init(3)</a>,
- <a class="Xr">pthread_rwlock_rdlock(3)</a>,
- <a class="Xr">pthread_rwlock_tryrdlock(3)</a>,
- <a class="Xr">pthread_rwlock_unlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_wrlock</code>() and
- <code class="Fn">pthread_rwlock_trywrlock</code>() functions are expected to
- conform to <span class="St">Version&#x00A0;2 of the Single UNIX
- Specification (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlock_wrlock</code>() function first
- appeared in <span class="Ux">FreeBSD 3.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 4, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlockattr_destroy.3 3.html b/static/freebsd/man3/pthread_rwlockattr_destroy.3 3.html
deleted file mode 100644
index 5898a0f5..00000000
--- a/static/freebsd/man3/pthread_rwlockattr_destroy.3 3.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCKATTR_DESTROY(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCKATTR_DESTROY(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">pthread_rwlockattr_destroy</code> &#x2014;
- <span class="Nd">destroy a read/write lock attributes object</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlockattr_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlockattr_t
- *attr</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_rwlockattr_destroy"><code class="Fn" id="pthread_rwlockattr_destroy">pthread_rwlockattr_destroy</code></a>()
- function is used to destroy a read/write lock attributes object previously
- created with
- <a class="permalink" href="#pthread_rwlockattr_init"><code class="Fn" id="pthread_rwlockattr_init">pthread_rwlockattr_init</code></a>().</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_rwlockattr_destroy</code>() function will return
- zero. Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_destroy</code>() function
- may fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">attr</var> is invalid.</dd>
-</dl>
-</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">pthread_rwlockattr_init(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_destroy</code>() function
- is expected to conform to <span class="St">Version&#x00A0;2 of the Single
- UNIX Specification (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_destroy</code>() function
- first appeared in <span class="Ux">FreeBSD 3.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 4, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlockattr_getpshared.3 3.html b/static/freebsd/man3/pthread_rwlockattr_getpshared.3 3.html
deleted file mode 100644
index d9ca9c23..00000000
--- a/static/freebsd/man3/pthread_rwlockattr_getpshared.3 3.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCKATTR_GETPSHARED(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCKATTR_GETPSHARED(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">pthread_rwlockattr_getpshared</code> &#x2014;
- <span class="Nd">get the process shared attribute</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlockattr_getpshared</code>(<var class="Fa">const
- pthread_rwlockattr_t *restrict attr</var>, <var class="Fa">int *restrict
- pshared</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_rwlockattr_getpshared"><code class="Fn" id="pthread_rwlockattr_getpshared">pthread_rwlockattr_getpshared</code></a>()
- function is used to get the process shared setting of a read/write lock
- attribute object. The setting is returned via <var class="Fa">pshared</var>,
- and may be one of two values:</p>
-<dl class="Bl-tag">
- <dt id="PTHREAD_PROCESS_SHARED"><a class="permalink" href="#PTHREAD_PROCESS_SHARED"><code class="Dv">PTHREAD_PROCESS_SHARED</code></a></dt>
- <dd>Any thread of any process that has access to the memory where the
- read/write lock resides can manipulate the lock.</dd>
- <dt id="PTHREAD_PROCESS_PRIVATE"><a class="permalink" href="#PTHREAD_PROCESS_PRIVATE"><code class="Dv">PTHREAD_PROCESS_PRIVATE</code></a></dt>
- <dd>Only threads created within the same process as the thread that
- initialized the read/write lock can manipulate the lock. This is the
- default value.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_rwlockattr_getpshared</code>() function will return
- zero. Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_getpshared</code>()
- function may fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">attr</var> is invalid.</dd>
-</dl>
-</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">pthread_rwlock_init(3)</a>,
- <a class="Xr">pthread_rwlockattr_init(3)</a>,
- <a class="Xr">pthread_rwlockattr_setpshared(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_getpshared</code>()
- function is expected to conform to <span class="St">Version&#x00A0;2 of the
- Single UNIX Specification (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_getpshared</code>()
- function first appeared in <span class="Ux">FreeBSD 3.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 17, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlockattr_init.3 4.html b/static/freebsd/man3/pthread_rwlockattr_init.3 4.html
deleted file mode 100644
index c6382a73..00000000
--- a/static/freebsd/man3/pthread_rwlockattr_init.3 4.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCKATTR_INIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCKATTR_INIT(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">pthread_rwlockattr_init</code> &#x2014;
- <span class="Nd">initialize a read/write lock attributes object</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlockattr_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlockattr_t
- *attr</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_rwlockattr_init"><code class="Fn" id="pthread_rwlockattr_init">pthread_rwlockattr_init</code></a>()
- function is used to initialize a read/write lock attributes object.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_rwlockattr_init</code>() function will return zero.
- Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_init</code>() function
- will fail if:</p>
-<dl class="Bl-tag">
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory exists to initialize the attributes object.</dd>
-</dl>
-</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">pthread_rwlock_init(3)</a>,
- <a class="Xr">pthread_rwlockattr_destroy(3)</a>,
- <a class="Xr">pthread_rwlockattr_getpshared(3)</a>,
- <a class="Xr">pthread_rwlockattr_setpshared(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_init</code>() function is
- expected to conform to <span class="St">Version&#x00A0;2 of the Single UNIX
- Specification (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_init</code>() function
- first appeared in <span class="Ux">FreeBSD 3.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 4, 1998</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_rwlockattr_setpshared.3 3.html b/static/freebsd/man3/pthread_rwlockattr_setpshared.3 3.html
deleted file mode 100644
index 527a421c..00000000
--- a/static/freebsd/man3/pthread_rwlockattr_setpshared.3 3.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_RWLOCKATTR_SETPSHARED(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_RWLOCKATTR_SETPSHARED(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">pthread_rwlockattr_setpshared</code> &#x2014;
- <span class="Nd">set the process shared attribute</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_rwlockattr_setpshared</code>(<var class="Fa" style="white-space: nowrap;">pthread_rwlockattr_t
- *attr</var>, <var class="Fa" style="white-space: nowrap;">int
- pshared</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_rwlockattr_setpshared"><code class="Fn" id="pthread_rwlockattr_setpshared">pthread_rwlockattr_setpshared</code></a>()
- function sets the process shared attribute of <var class="Fa">attr</var> to
- the value referenced by <var class="Fa">pshared</var>. The
- <var class="Fa">pshared</var> argument may be one of two values:</p>
-<dl class="Bl-tag">
- <dt id="PTHREAD_PROCESS_SHARED"><a class="permalink" href="#PTHREAD_PROCESS_SHARED"><code class="Dv">PTHREAD_PROCESS_SHARED</code></a></dt>
- <dd>Any thread of any process that has access to the memory where the
- read/write lock resides can manipulate the lock.</dd>
- <dt id="PTHREAD_PROCESS_PRIVATE"><a class="permalink" href="#PTHREAD_PROCESS_PRIVATE"><code class="Dv">PTHREAD_PROCESS_PRIVATE</code></a></dt>
- <dd>Only threads created within the same process as the thread that
- initialized the read/write lock can manipulate the lock. This is the
- default value.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_rwlockattr_setpshared</code>() function will return
- zero. Otherwise an error number will be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_setpshared</code>()
- function will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">attr</var> or
- <var class="Fa">pshared</var> is invalid.</dd>
-</dl>
-</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">pthread_rwlock_init(3)</a>,
- <a class="Xr">pthread_rwlockattr_getpshared(3)</a>,
- <a class="Xr">pthread_rwlockattr_init(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_setpshared</code>()
- function is expected to conform to <span class="St">Version&#x00A0;2 of the
- Single UNIX Specification (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_rwlockattr_setpshared</code>()
- function first appeared in <span class="Ux">FreeBSD 3.0</span>. Support for
- process-shared read/write locks appeared in <span class="Ux">FreeBSD
- 11.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">May 31, 2016</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_schedparam.3 3.html b/static/freebsd/man3/pthread_schedparam.3 3.html
deleted file mode 100644
index 6413a4f4..00000000
--- a/static/freebsd/man3/pthread_schedparam.3 3.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SCHEDPARAM(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SCHEDPARAM(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">pthread_setschedparam</code>,
- <code class="Nm">pthread_getschedparam</code> &#x2014;
- <span class="Nd">thread scheduling parameter manipulation</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_setschedparam</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">int policy</var>,
- <var class="Fa" style="white-space: nowrap;">const struct sched_param
- *param</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_getschedparam</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">int *restrict
- policy</var>, <var class="Fa" style="white-space: nowrap;">struct
- sched_param *restrict param</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_setschedparam"><code class="Fn" id="pthread_setschedparam">pthread_setschedparam</code></a>()
- and
- <a class="permalink" href="#pthread_getschedparam"><code class="Fn" id="pthread_getschedparam">pthread_getschedparam</code></a>()
- functions set and get the scheduling parameters of individual threads. The
- scheduling policy for a thread can either be
- <code class="Dv">SCHED_FIFO</code> (first in, first out),
- <code class="Dv">SCHED_RR</code> (round-robin), or
- <code class="Dv">SCHED_OTHER</code> (timesharing). Valid thread priorities
- (accessed via <var class="Va">param-&gt;sched_priority</var>) must be within
- the range returned by the <a class="Xr">sched_get_priority_min(2)</a> and
- <a class="Xr">sched_get_priority_max(2)</a> system calls.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, these functions return 0. Otherwise, an error
- number is returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_setschedparam</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>Invalid value for <var class="Fa">policy</var>.</dd>
- <dt id="ENOTSUP">[<a class="permalink" href="#ENOTSUP"><code class="Er">ENOTSUP</code></a>]</dt>
- <dd>Invalid value for scheduling parameters.</dd>
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The calling thread does not have sufficient privilege to perform the
- operation.</dd>
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>Non-existent thread <var class="Fa">thread</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_getschedparam</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="ESRCH~2">[<a class="permalink" href="#ESRCH~2"><code class="Er">ESRCH</code></a>]</dt>
- <dd>Non-existent thread <var class="Fa">thread</var>.</dd>
-</dl>
-</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">sched_get_priority_max(2)</a>,
- <a class="Xr">sched_get_priority_min(2)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_setschedparam</code>() and
- <code class="Fn">pthread_getschedparam</code>() functions conform to
- <span class="St">Version&#x00A0;2 of the Single UNIX Specification
- (&#x201C;SUSv2&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 17, 2022</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_self.3 4.html b/static/freebsd/man3/pthread_self.3 4.html
deleted file mode 100644
index c22ee712..00000000
--- a/static/freebsd/man3/pthread_self.3 4.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SELF(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SELF(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">pthread_self</code> &#x2014; <span class="Nd">get
- the calling thread's ID</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">pthread_t</var>
- <br/>
- <code class="Fn">pthread_self</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_self"><code class="Fn" id="pthread_self">pthread_self</code></a>()
- function returns the thread ID of the calling thread.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_self</code>() function returns the
- thread ID of the calling thread.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">None.</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">pthread_create(3)</a>,
- <a class="Xr">pthread_equal(3)</a>,
- <a class="Xr">pthread_getthreadid_np(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_self</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 4, 1996</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_set_name_np.3 3.html b/static/freebsd/man3/pthread_set_name_np.3 3.html
deleted file mode 100644
index 76e23cff..00000000
--- a/static/freebsd/man3/pthread_set_name_np.3 3.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SET_NAME_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SET_NAME_NP(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">pthread_get_name_np</code>,
- <code class="Nm">pthread_getname_np</code>,
- <code class="Nm">pthread_set_name_np</code>,
- <code class="Nm">pthread_setname_np</code> &#x2014; <span class="Nd">set and
- retrieve the thread name</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_get_name_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">char *name</var>,
- <var class="Fa" style="white-space: nowrap;">size_t len</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_getname_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">char *name</var>,
- <var class="Fa" style="white-space: nowrap;">size_t len</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_set_name_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">const char
- *name</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_setname_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">const char
- *name</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_set_name_np"><code class="Fn" id="pthread_set_name_np">pthread_set_name_np</code></a>()
- and
- <a class="permalink" href="#pthread_setname_np"><code class="Fn" id="pthread_setname_np">pthread_setname_np</code></a>()
- functions apply a copy of the given <var class="Fa">name</var> to the given
- <var class="Fa">thread</var>.</p>
-<p class="Pp" id="pthread_get_name_np">The
- <a class="permalink" href="#pthread_get_name_np"><code class="Fn">pthread_get_name_np</code></a>()
- and
- <a class="permalink" href="#pthread_getname_np"><code class="Fn" id="pthread_getname_np">pthread_getname_np</code></a>()
- functions retrieve the <var class="Fa">name</var> associated with
- <var class="Fa">thread</var>. If
- <code class="Fn">pthread_set_name_np</code>() was not previously called for
- <var class="Fa">thread</var>, the buffer pointed to by
- <var class="Fa">name</var> will be empty.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Nm">pthread_getname_np</code> and
- <code class="Nm">pthread_setname_np</code> will fail if</p>
-<dl class="Bl-tag">
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>No thread could be found in the current process corresponding to that
- specified by the given thread ID <var class="Fa">thread</var>.</dd>
-</dl>
-<p class="Pp">Because of the debugging nature of
- <code class="Nm">pthread_get_name_np</code> and
- <code class="Nm">pthread_set_name_np</code> functions, all errors that may
- appear inside are silently ignored.</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">thr_set_name(2)</a>,
- <a class="Xr">pthread_np(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp"><code class="Fn">pthread_set_name_np</code>() and
- <code class="Fn">pthread_get_name_np</code>() are non-standard extensions.
- <code class="Fn">pthread_setname_np</code>() and
- <code class="Fn">pthread_getname_np</code>() are also non-standard, but are
- implemented by larger number of operating systems so they are in fact more
- portable.</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">Alexey
- Zelkin</span>
- &lt;<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>&gt;
- and
- <br/>
- <span class="An">Yuri Pankov</span>
- &lt;<a class="Mt" href="mailto:yuripv@yuripv.net">yuripv@yuripv.net</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_setspecific.3 3.html b/static/freebsd/man3/pthread_setspecific.3 3.html
deleted file mode 100644
index 770dfe59..00000000
--- a/static/freebsd/man3/pthread_setspecific.3 3.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SETSPECIFIC(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SETSPECIFIC(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">pthread_setspecific</code> &#x2014;
- <span class="Nd">set a thread-specific data value</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_setspecific</code>(<var class="Fa" style="white-space: nowrap;">pthread_key_t
- key</var>, <var class="Fa" style="white-space: nowrap;">const void
- *value</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_setspecific"><code class="Fn" id="pthread_setspecific">pthread_setspecific</code></a>()
- function associates a thread-specific value with a <var class="Fa">key</var>
- obtained via a previous call to
- <a class="permalink" href="#pthread_key_create"><code class="Fn" id="pthread_key_create">pthread_key_create</code></a>().
- Different threads can bind different values to the same key. These values
- are typically pointers to blocks of dynamically allocated memory that have
- been reserved for use by the calling thread.</p>
-<p class="Pp" id="pthread_setspecific~2">The effect of calling
- <a class="permalink" href="#pthread_setspecific~2"><code class="Fn">pthread_setspecific</code></a>()
- with a key value not obtained from
- <a class="permalink" href="#pthread_key_create~2"><code class="Fn" id="pthread_key_create~2">pthread_key_create</code></a>()
- or after <var class="Fa">key</var> has been deleted with
- <a class="permalink" href="#pthread_key_delete"><code class="Fn" id="pthread_key_delete">pthread_key_delete</code></a>()
- is undefined.</p>
-<p class="Pp" id="pthread_setspecific~3">The
- <a class="permalink" href="#pthread_setspecific~3"><code class="Fn">pthread_setspecific</code></a>()
- function may be called from a thread-specific data destructor function,
- however this may result in lost storage or infinite loops if doing so causes
- non-NULL key values to remain after [PTHREAD_DESTRUCTOR_ITERATIONS]
- iterations of destructor calls have been made.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the <code class="Fn">pthread_setspecific</code>()
- function will return zero. Otherwise an error number will be returned to
- indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_setspecific</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory exists to associate the value with the
- <var class="Fa">key</var>.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The <var class="Fa">key</var> value is invalid.</dd>
-</dl>
-</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">pthread_getspecific(3)</a>,
- <a class="Xr">pthread_key_create(3)</a>,
- <a class="Xr">pthread_key_delete(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_setspecific</code>() function
- conforms to <span class="St">ISO/IEC 9945-1:1996
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 4, 1996</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_sigmask.3 3.html b/static/freebsd/man3/pthread_sigmask.3 3.html
deleted file mode 100644
index 02bfa4ad..00000000
--- a/static/freebsd/man3/pthread_sigmask.3 3.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SIGMASK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SIGMASK(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">pthread_sigmask</code> &#x2014;
- <span class="Nd">examine and/or change a thread's signal mask</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">signal.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_sigmask</code>(<var class="Fa" style="white-space: nowrap;">int
- how</var>, <var class="Fa" style="white-space: nowrap;">const sigset_t *
- restrict set</var>, <var class="Fa" style="white-space: nowrap;">sigset_t *
- restrict oset</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_sigmask"><code class="Fn" id="pthread_sigmask">pthread_sigmask</code></a>()
- function examines and/or changes the calling thread's signal mask.</p>
-<p class="Pp">If <var class="Fa">set</var> is not <code class="Dv">NULL</code>,
- it specifies a set of signals to be modified, and <var class="Fa">how</var>
- specifies what to set the signal mask to:</p>
-<dl class="Bl-tag">
- <dt id="SIG_BLOCK"><a class="permalink" href="#SIG_BLOCK"><code class="Dv">SIG_BLOCK</code></a></dt>
- <dd>Union of the current mask and <var class="Fa">set</var>.</dd>
- <dt id="SIG_UNBLOCK"><a class="permalink" href="#SIG_UNBLOCK"><code class="Dv">SIG_UNBLOCK</code></a></dt>
- <dd>Intersection of the current mask and the complement of
- <var class="Fa">set</var>.</dd>
- <dt id="SIG_SETMASK"><a class="permalink" href="#SIG_SETMASK"><code class="Dv">SIG_SETMASK</code></a></dt>
- <dd><var class="Fa">set</var>.</dd>
-</dl>
-<p class="Pp">If <var class="Fa">oset</var> is not NULL, the previous signal
- mask is stored in the location pointed to by <var class="Fa">oset</var>.</p>
-<p class="Pp"><code class="Dv">SIGKILL</code> and
- <code class="Dv">SIGSTOP</code> cannot be blocked, and will be silently
- ignored if included in the signal mask.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_sigmask</code>() returns
- 0. Otherwise, an error is returned.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_sigmask</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd><var class="Fa">how</var> is not one of the defined values.</dd>
-</dl>
-</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">sigpending(2)</a>,
- <a class="Xr">sigprocmask(2)</a>, <a class="Xr">sigsuspend(2)</a>,
- <a class="Xr">sigsetops(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_sigmask</code>() function conforms to
- <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span></p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">February 19, 2011</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_signals_block_np.3 3.html b/static/freebsd/man3/pthread_signals_block_np.3 3.html
deleted file mode 100644
index 04d9dc4d..00000000
--- a/static/freebsd/man3/pthread_signals_block_np.3 3.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SIGNALS_BLOCK_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SIGNALS_BLOCK_NP(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">pthread_signals_block_np</code>,
- <code class="Nm">pthread_signals_unblock_np</code> &#x2014;
- <span class="Nd">fast asynchronous signals blocking and
- unblocking</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_signals_block_np</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_signals_unblock_np</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_signals_block_np"><code class="Fn" id="pthread_signals_block_np">pthread_signals_block_np</code></a>()
- and
- <a class="permalink" href="#pthread_signals_unblock_np"><code class="Fn" id="pthread_signals_unblock_np">pthread_signals_unblock_np</code></a>()
- functions provide user programs an interface to the fast asynchronous
- signals blocking facility <a class="Xr">sigfastblock(2)</a>.</p>
-<p class="Pp" id="pthread_signals_block_np~2">Blocking signals with
- <a class="permalink" href="#pthread_signals_block_np~2"><code class="Fn">pthread_signals_block_np</code></a>()
- disables delivery of any asynchronous signal, until unblocked. Signal
- blocking establishes a critical section where the execution flow of the
- thread cannot be diverted into a signal handler. Blocking signals is fast,
- it is performed by a single memory write into a location established with
- the kernel.</p>
-<p class="Pp">Synchronous signal delivery cannot be blocked in general,
- including with these functions.</p>
-<p class="Pp" id="pthread_signals_block_np~3">The blocked state established by
- the
- <a class="permalink" href="#pthread_signals_block_np~3"><code class="Fn">pthread_signals_block_np</code></a>()
- is not completely POSIX-compliant. Specifically, system calls executed while
- in a blocked section, might abort sleep and return
- <code class="Er">EINTR</code> upon queuing of an asynchronous signal to the
- thread, but the signal handler is not called until the last unblock is
- done.</p>
-<p class="Pp">Calls to <code class="Nm">pthread_signals_block_np</code> can be
- nested, and must be complemented by an equal count of calls to
- <code class="Nm">pthread_signals_unblock_np</code> to return the calling
- thread to the standard mode of signal receiving.</p>
-<p class="Pp" id="sigprocmask">An example use of these function might be the
- construction of the CPU state that cannot be done atomically, and which
- includes stages where the state of the thread is not ABI compliant. If a
- signal is delivered while such state is not yet finished, signal handlers
- would misbehave. Using standard functions
- (<a class="permalink" href="#sigprocmask"><code class="Fn">sigprocmask</code></a>())
- to establish critical section might be much slower, because
- <code class="Fn">sigprocmask</code>() is system call, while
- <code class="Fn">pthread_signals_block_np</code>() consists of a single
- atomic memory write.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The functions do not return a value.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">There are no errors reported by the functions.</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">sigfastblock(2)</a>,
- <a class="Xr">sigprocmask(2)</a>, <a class="Xr">pthread_sigmask(3)</a>,
- <a class="Xr">pthread_np(3)</a></p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">May 16, 2025</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_sigqueue.3 3.html b/static/freebsd/man3/pthread_sigqueue.3 3.html
deleted file mode 100644
index b56d92a2..00000000
--- a/static/freebsd/man3/pthread_sigqueue.3 3.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SIGQUEUE(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SIGQUEUE(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">pthread_sigqueue</code> &#x2014;
- <span class="Nd">queue a signal to a specified thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">signal.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_sigqueue</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- thread</var>, <var class="Fa" style="white-space: nowrap;">int sig</var>,
- <var class="Fa" style="white-space: nowrap;">const union sigval
- value</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_queue"><code class="Fn" id="pthread_queue">pthread_queue</code></a>()
- function queues a signal, specified by <var class="Fa">sig</var>, to a
- thread, specified by <var class="Fa">thread</var>. If
- <var class="Fa">sig</var> is 0, error checking is performed, but no signal
- is actually sent. The <var class="Fa">value</var> is queued together with
- the signal, and becomes available in <var class="Vt">siginfo_t</var> data
- passed to the signal handler.</p>
-<p class="Pp">The <code class="Nm">pthread_sigqueue</code> function is similar
- to <a class="Xr">sigqueue(2)</a>, but targets a thread in the current
- process instead of a process. See <a class="Xr">sigqueue(2)</a> for details
- about signal queueing and delivery selection.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_sigqueue</code>() returns
- 0. Otherwise, an error number is returned.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_sigqueue</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>No resources are available to queue the signal. The current process has
- already queued {<code class="Dv">SIGQUEUE_MAX</code>} signals that are
- still pending, or a system-wide resource limit has been exceeded.</dd>
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd><var class="Fa">thread</var> is an invalid thread ID.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd><var class="Fa">sig</var> is an invalid or unsupported signal number.</dd>
-</dl>
-</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">sigqueue(2)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_sigqueue</code>() function is a
- <span class="Ux">FreeBSD</span> extension. An identical function with the
- same semantic is available in other operating systems.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 21, 2024</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_spin_init.3 3.html b/static/freebsd/man3/pthread_spin_init.3 3.html
deleted file mode 100644
index 53d4f70e..00000000
--- a/static/freebsd/man3/pthread_spin_init.3 3.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SPIN_INIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SPIN_INIT(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">pthread_spin_init</code>,
- <code class="Nm">pthread_spin_destroy</code> &#x2014;
- <span class="Nd">initialize or destroy a spin lock</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_spin_init</code>(<var class="Fa" style="white-space: nowrap;">pthread_spinlock_t
- *lock</var>, <var class="Fa" style="white-space: nowrap;">int
- pshared</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_spin_destroy</code>(<var class="Fa" style="white-space: nowrap;">pthread_spinlock_t
- *lock</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_spin_init"><code class="Fn" id="pthread_spin_init">pthread_spin_init</code></a>()
- function will initialize <var class="Fa">lock</var> to an unlocked state and
- allocate any resources necessary to begin using it. If
- <var class="Fa">pshared</var> is set to
- <code class="Dv">PTHREAD_PROCESS_SHARED</code>, any thread, whether
- belonging to the process in which the spinlock was created or not, that has
- access to the memory area where <var class="Fa">lock</var> resides, can use
- <var class="Fa">lock</var>. If it is set to
- <code class="Dv">PTHREAD_PROCESS_PRIVATE</code>, it can only be used by
- threads within the same process.</p>
-<p class="Pp" id="pthread_spin_destroy">The
- <a class="permalink" href="#pthread_spin_destroy"><code class="Fn">pthread_spin_destroy</code></a>()
- function will destroy <var class="Fa">lock</var> and release any resources
- that may have been allocated on its behalf.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, both <code class="Fn">pthread_spin_init</code>()
- and <code class="Fn">pthread_spin_destroy</code>() will return zero.
- Otherwise, an error number will be returned to indicate the error.</p>
-<p class="Pp">Neither of these functions will return
- <code class="Er">EINTR</code>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_spin_init</code>() and
- <code class="Fn">pthread_spin_destroy</code>() functions will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd>An attempt to initialize or destroy <var class="Fa">lock</var> while it is
- in use.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">lock</var> is invalid.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_spin_init</code>() function will fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EAGAIN">[<a class="permalink" href="#EAGAIN"><code class="Er">EAGAIN</code></a>]</dt>
- <dd>Insufficient resources, other than memory, to initialize
- <var class="Fa">lock</var>.</dd>
- <dt id="ENOMEM">[<a class="permalink" href="#ENOMEM"><code class="Er">ENOMEM</code></a>]</dt>
- <dd>Insufficient memory to initialize <var class="Fa">lock</var>.</dd>
-</dl>
-</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">pthread_spin_lock(3)</a>,
- <a class="Xr">pthread_spin_unlock(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_spin_init</code>() and
- <code class="Fn">pthread_spin_destroy</code>() functions first appeared in
- <span class="Lb">N:M Threading Library (libkse, -lkse)</span> in
- <span class="Ux">FreeBSD 5.2</span>, and in <span class="Lb">1:1 Threading
- Library (libthr, -lthr)</span> in <span class="Ux">FreeBSD 5.3</span>.
- Support for process-shared spinlocks appeared in <span class="Ux">FreeBSD
- 11.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">May 31, 2016</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_spin_lock.3 3.html b/static/freebsd/man3/pthread_spin_lock.3 3.html
deleted file mode 100644
index 1babc686..00000000
--- a/static/freebsd/man3/pthread_spin_lock.3 3.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SPIN_LOCK(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SPIN_LOCK(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">pthread_spin_lock</code>,
- <code class="Nm">pthread_spin_trylock</code>,
- <code class="Nm">pthread_spin_unlock</code> &#x2014; <span class="Nd">lock
- or unlock a spin lock</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_spin_lock</code>(<var class="Fa" style="white-space: nowrap;">pthread_spinlock_t
- *lock</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_spin_trylock</code>(<var class="Fa" style="white-space: nowrap;">pthread_spinlock_t
- *lock</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_spin_unlock</code>(<var class="Fa" style="white-space: nowrap;">pthread_spinlock_t
- *lock</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_spin_lock"><code class="Fn" id="pthread_spin_lock">pthread_spin_lock</code></a>()
- function will acquire <var class="Fa">lock</var> if it is not currently
- owned by another thread. If the lock cannot be acquired immediately, it will
- spin attempting to acquire the lock (it will not sleep) until it becomes
- available.</p>
-<p class="Pp" id="pthread_spin_trylock">The
- <a class="permalink" href="#pthread_spin_trylock"><code class="Fn">pthread_spin_trylock</code></a>()
- function is the same as <code class="Fn">pthread_spin_lock</code>() except
- that if it cannot acquire <var class="Fa">lock</var> immediately it will
- return with an error.</p>
-<p class="Pp" id="pthread_spin_unlock">The
- <a class="permalink" href="#pthread_spin_unlock"><code class="Fn">pthread_spin_unlock</code></a>()
- function will release <var class="Fa">lock</var>, which must have been
- previously locked by a call to <code class="Fn">pthread_spin_lock</code>()
- or <code class="Fn">pthread_spin_trylock</code>().</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, all these functions will return zero. Otherwise, an
- error number will be returned to indicate the error.</p>
-<p class="Pp">None of these functions will return
- <code class="Er">EINTR</code>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_spin_lock</code>(),
- <code class="Fn">pthread_spin_trylock</code>() and
- <code class="Fn">pthread_spin_unlock</code>() functions will fail if:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by <var class="Fa">lock</var> is invalid or is not
- initialized.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_spin_lock</code>() function may fail
- if:</p>
-<dl class="Bl-tag">
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>The calling thread already owns the lock.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_spin_trylock</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EBUSY">[<a class="permalink" href="#EBUSY"><code class="Er">EBUSY</code></a>]</dt>
- <dd>Another thread currently holds <var class="Fa">lock</var>.</dd>
-</dl>
-<p class="Pp">The <code class="Fn">pthread_spin_unlock</code>() function may
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EPERM">[<a class="permalink" href="#EPERM"><code class="Er">EPERM</code></a>]</dt>
- <dd>The calling thread does not own <var class="Fa">lock</var>.</dd>
-</dl>
-</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">pthread_spin_destroy(3)</a>,
- <a class="Xr">pthread_spin_init(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">pthread_spin_lock</code>(),
- <code class="Fn">pthread_spin_trylock</code>() and
- <code class="Fn">pthread_spin_unlock</code>() functions first appeared in
- <span class="Lb">N:M Threading Library (libkse, -lkse)</span> in
- <span class="Ux">FreeBSD 5.2</span>, and in <span class="Lb">1:1 Threading
- Library (libthr, -lthr)</span> in <span class="Ux">FreeBSD 5.3</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
-<p class="Pp">The implementation of <code class="Fn">pthread_spin_lock</code>(),
- <code class="Fn">pthread_spin_trylock</code>() and
- <code class="Fn">pthread_spin_unlock</code>() is expected to conform to
- <span class="St">IEEE Std 1003.2 (&#x201C;POSIX.2&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">January 22, 2004</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_suspend_all_np.3 4.html b/static/freebsd/man3/pthread_suspend_all_np.3 4.html
deleted file mode 100644
index ae0af02c..00000000
--- a/static/freebsd/man3/pthread_suspend_all_np.3 4.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SUSPEND_ALL_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SUSPEND_ALL_NP(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">pthread_suspend_all_np</code> &#x2014;
- <span class="Nd">suspend all active threads</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_suspend_all_np</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_suspend_all_np"><code class="Fn" id="pthread_suspend_all_np">pthread_suspend_all_np</code></a>()
- function causes all active threads to be suspended. The only exception is
- the current thread, the thread that called the
- <code class="Fn">pthread_suspend_all_np</code>() function.</p>
-<p class="Pp" id="pthread_suspend_all_np~2">It is not safe for the caller of the
- <a class="permalink" href="#pthread_suspend_all_np~2"><code class="Fn">pthread_suspend_all_np</code></a>()
- function to use any non-async signal safe functions, besides
- <a class="Xr">pthread_resume_all_np(3)</a>, until threads are resumed,
- unless measures are taken to ensure that all threads are suspended at safe
- points.</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">pthread_np(3)</a>,
- <a class="Xr">pthread_resume_all_np(3)</a>,
- <a class="Xr">pthread_resume_np(3)</a>,
- <a class="Xr">pthread_suspend_np(3)</a></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">Alexey
- Zelkin</span>
- &lt;<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_suspend_np.3 3.html b/static/freebsd/man3/pthread_suspend_np.3 3.html
deleted file mode 100644
index c9949026..00000000
--- a/static/freebsd/man3/pthread_suspend_np.3 3.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_SUSPEND_NP(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_SUSPEND_NP(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">pthread_suspend_np</code> &#x2014;
- <span class="Nd">suspend a thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread_np.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_suspend_np</code>(<var class="Fa" style="white-space: nowrap;">pthread_t
- tid</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_suspend_np"><code class="Fn" id="pthread_suspend_np">pthread_suspend_np</code></a>()
- function, called on an active thread, causes it to suspend.</p>
-<p class="Pp" id="pthread_suspend_np~2">It is not safe for the caller of the
- <a class="permalink" href="#pthread_suspend_np~2"><code class="Fn">pthread_suspend_np</code></a>()
- function to use any non-async signal safe functions, except
- <a class="Xr">pthread_resume_np(3)</a>, until suspended thread is resumed,
- unless measures are taken to ensure that the thread is suspended at a safe
- point.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, <code class="Fn">pthread_suspend_np</code>()
- function returns 0. Otherwise, an error number is returned to indicate the
- error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_suspend_np</code>() function will
- fail if:</p>
-<dl class="Bl-tag">
- <dt id="EDEADLK">[<a class="permalink" href="#EDEADLK"><code class="Er">EDEADLK</code></a>]</dt>
- <dd>An attempt was made to suspend the current thread.</dd>
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The value specified by the <var class="Fa">tid</var> argument is
- invalid.</dd>
- <dt id="ESRCH">[<a class="permalink" href="#ESRCH"><code class="Er">ESRCH</code></a>]</dt>
- <dd>No thread could be found corresponding to the thread ID specified by the
- <var class="Fa">tid</var> argument.</dd>
-</dl>
-</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">pthread_np(3)</a>,
- <a class="Xr">pthread_resume_all_np(3)</a>,
- <a class="Xr">pthread_resume_np(3)</a>,
- <a class="Xr">pthread_suspend_all_np(3)</a></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">Alexey
- Zelkin</span>
- &lt;<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 12, 2021</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_testcancel.3 3.html b/static/freebsd/man3/pthread_testcancel.3 3.html
deleted file mode 100644
index 27a2a47d..00000000
--- a/static/freebsd/man3/pthread_testcancel.3 3.html
+++ /dev/null
@@ -1,302 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_TESTCANCEL(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_TESTCANCEL(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">pthread_setcancelstate</code>,
- <code class="Nm">pthread_setcanceltype</code>,
- <code class="Nm">pthread_testcancel</code> &#x2014; <span class="Nd">set
- cancelability state</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_setcancelstate</code>(<var class="Fa" style="white-space: nowrap;">int
- state</var>, <var class="Fa" style="white-space: nowrap;">int
- *oldstate</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">pthread_setcanceltype</code>(<var class="Fa" style="white-space: nowrap;">int
- type</var>, <var class="Fa" style="white-space: nowrap;">int
- *oldtype</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_testcancel</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_setcancelstate"><code class="Fn" id="pthread_setcancelstate">pthread_setcancelstate</code></a>()
- function atomically both sets the calling thread's cancelability state to
- the indicated <var class="Fa">state</var> and, if
- <var class="Fa">oldstate</var> is not <code class="Dv">NULL</code>, returns
- the previous cancelability state at the location referenced by
- <var class="Fa">oldstate</var>. Legal values for <var class="Fa">state</var>
- are <code class="Dv">PTHREAD_CANCEL_ENABLE</code> and
- <code class="Dv">PTHREAD_CANCEL_DISABLE</code>. The function is
- async-signal-safe.</p>
-<p class="Pp" id="pthread_setcanceltype">The
- <a class="permalink" href="#pthread_setcanceltype"><code class="Fn">pthread_setcanceltype</code></a>()
- function atomically both sets the calling thread's cancelability type to the
- indicated <var class="Fa">type</var> and, if <var class="Fa">oldtype</var>
- is not <code class="Dv">NULL</code>, returns the previous cancelability type
- at the location referenced by <var class="Fa">oldtype</var>. Legal values
- for <var class="Fa">type</var> are
- <code class="Dv">PTHREAD_CANCEL_DEFERRED</code> and
- <code class="Dv">PTHREAD_CANCEL_ASYNCHRONOUS</code>.</p>
-<p class="Pp" id="main">The cancelability state and type of any newly created
- threads, including the thread in which
- <a class="permalink" href="#main"><code class="Fn">main</code></a>() was
- first invoked, are <code class="Dv">PTHREAD_CANCEL_ENABLE</code> and
- <code class="Dv">PTHREAD_CANCEL_DEFERRED</code> respectively.</p>
-<p class="Pp" id="pthread_testcancel">The
- <a class="permalink" href="#pthread_testcancel"><code class="Fn">pthread_testcancel</code></a>()
- function creates a cancellation point in the calling thread. The
- <code class="Fn">pthread_testcancel</code>() function has no effect if
- cancelability is disabled.</p>
-<section class="Ss">
-<h2 class="Ss" id="Cancelability_States"><a class="permalink" href="#Cancelability_States">Cancelability
- States</a></h2>
-<p class="Pp">The cancelability state of a thread determines the action taken
- upon receipt of a cancellation request. The thread may control cancellation
- in a number of ways.</p>
-<p class="Pp">Each thread maintains its own &#x201C;cancelability state&#x201D;
- which may be encoded in two bits:</p>
-<dl class="Bl-hang">
- <dt id="Cancelability"><a class="permalink" href="#Cancelability"><i class="Em">Cancelability
- Enable</i></a></dt>
- <dd>When cancelability is <code class="Dv">PTHREAD_CANCEL_DISABLE</code>,
- cancellation requests against the target thread are held pending.</dd>
- <dt id="Cancelability~2"><a class="permalink" href="#Cancelability~2"><i class="Em">Cancelability
- Type</i></a></dt>
- <dd>When cancelability is enabled and the cancelability type is
- <code class="Dv">PTHREAD_CANCEL_ASYNCHRONOUS</code>, new or pending
- cancellation requests may be acted upon at any time. When cancelability is
- enabled and the cancelability type is
- <code class="Dv">PTHREAD_CANCEL_DEFERRED</code>, cancellation requests are
- held pending until a cancellation point (see below) is reached. If
- cancelability is disabled, the setting of the cancelability type has no
- immediate effect as all cancellation requests are held pending; however,
- once cancelability is enabled again the new type will be in effect.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Cancellation_Points"><a class="permalink" href="#Cancellation_Points">Cancellation
- Points</a></h2>
-<p class="Pp">Cancellation points will occur when a thread is executing the
- following functions:</p>
-<dl class="Bl-tag Bl-compact">
- <dt id="accept"><a class="permalink" href="#accept"><code class="Fn">accept</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="accept4"><a class="permalink" href="#accept4"><code class="Fn">accept4</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="aio_suspend"><a class="permalink" href="#aio_suspend"><code class="Fn">aio_suspend</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="connect"><a class="permalink" href="#connect"><code class="Fn">connect</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="clock_nanosleep"><a class="permalink" href="#clock_nanosleep"><code class="Fn">clock_nanosleep</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="close"><a class="permalink" href="#close"><code class="Fn">close</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="creat"><a class="permalink" href="#creat"><code class="Fn">creat</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="fcntl"><a class="permalink" href="#fcntl"><code class="Fn">fcntl</code></a>()</dt>
- <dd>The <code class="Fn">fcntl</code>() function is a cancellation point if
- <var class="Fa">cmd</var> is <code class="Dv">F_SETLKW</code>.</dd>
- <dt id="fdatasync"><a class="permalink" href="#fdatasync"><code class="Fn">fdatasync</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="fsync"><a class="permalink" href="#fsync"><code class="Fn">fsync</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="kevent"><a class="permalink" href="#kevent"><code class="Fn">kevent</code></a>()</dt>
- <dd>The <code class="Fn">kevent</code>() function is a cancellation point if
- it is potentially blocking, such as when the <var class="Fa">nevents</var>
- argument is non-zero.</dd>
- <dt id="mq_receive"><a class="permalink" href="#mq_receive"><code class="Fn">mq_receive</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="mq_send"><a class="permalink" href="#mq_send"><code class="Fn">mq_send</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="mq_timedreceive"><a class="permalink" href="#mq_timedreceive"><code class="Fn">mq_timedreceive</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="mq_timedsend"><a class="permalink" href="#mq_timedsend"><code class="Fn">mq_timedsend</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="msync"><a class="permalink" href="#msync"><code class="Fn">msync</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="nanosleep"><a class="permalink" href="#nanosleep"><code class="Fn">nanosleep</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="open"><a class="permalink" href="#open"><code class="Fn">open</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="openat"><a class="permalink" href="#openat"><code class="Fn">openat</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="pause"><a class="permalink" href="#pause"><code class="Fn">pause</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="poll"><a class="permalink" href="#poll"><code class="Fn">poll</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="ppoll"><a class="permalink" href="#ppoll"><code class="Fn">ppoll</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="pselect"><a class="permalink" href="#pselect"><code class="Fn">pselect</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="pthread_cond_timedwait"><a class="permalink" href="#pthread_cond_timedwait"><code class="Fn">pthread_cond_timedwait</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="pthread_cond_wait"><a class="permalink" href="#pthread_cond_wait"><code class="Fn">pthread_cond_wait</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="pthread_join"><a class="permalink" href="#pthread_join"><code class="Fn">pthread_join</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt><code class="Fn">pthread_testcancel</code>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="read"><a class="permalink" href="#read"><code class="Fn">read</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="readv"><a class="permalink" href="#readv"><code class="Fn">readv</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="recv"><a class="permalink" href="#recv"><code class="Fn">recv</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="recvfrom"><a class="permalink" href="#recvfrom"><code class="Fn">recvfrom</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="recvmsg"><a class="permalink" href="#recvmsg"><code class="Fn">recvmsg</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="select"><a class="permalink" href="#select"><code class="Fn">select</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sem_timedwait"><a class="permalink" href="#sem_timedwait"><code class="Fn">sem_timedwait</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sem_clockwait_np"><a class="permalink" href="#sem_clockwait_np"><code class="Fn">sem_clockwait_np</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sem_wait"><a class="permalink" href="#sem_wait"><code class="Fn">sem_wait</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="send"><a class="permalink" href="#send"><code class="Fn">send</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sendmsg"><a class="permalink" href="#sendmsg"><code class="Fn">sendmsg</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sendto"><a class="permalink" href="#sendto"><code class="Fn">sendto</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sigsuspend"><a class="permalink" href="#sigsuspend"><code class="Fn">sigsuspend</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sigtimedwait"><a class="permalink" href="#sigtimedwait"><code class="Fn">sigtimedwait</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sigwaitinfo"><a class="permalink" href="#sigwaitinfo"><code class="Fn">sigwaitinfo</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sigwait"><a class="permalink" href="#sigwait"><code class="Fn">sigwait</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="sleep"><a class="permalink" href="#sleep"><code class="Fn">sleep</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="system"><a class="permalink" href="#system"><code class="Fn">system</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="tcdrain"><a class="permalink" href="#tcdrain"><code class="Fn">tcdrain</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="usleep"><a class="permalink" href="#usleep"><code class="Fn">usleep</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="wait"><a class="permalink" href="#wait"><code class="Fn">wait</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="wait3"><a class="permalink" href="#wait3"><code class="Fn">wait3</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="wait4"><a class="permalink" href="#wait4"><code class="Fn">wait4</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="wait6"><a class="permalink" href="#wait6"><code class="Fn">wait6</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="waitid"><a class="permalink" href="#waitid"><code class="Fn">waitid</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="waitpid"><a class="permalink" href="#waitpid"><code class="Fn">waitpid</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="write"><a class="permalink" href="#write"><code class="Fn">write</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt id="writev"><a class="permalink" href="#writev"><code class="Fn">writev</code></a>()</dt>
- <dd style="width: auto;">&#x00A0;</dd>
-</dl>
-</section>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="NOTES"><a class="permalink" href="#NOTES">NOTES</a></h1>
-<p class="Pp">The <code class="Fn">pthread_setcancelstate</code>() and
- <code class="Fn">pthread_setcanceltype</code>() functions are used to
- control the points at which a thread may be asynchronously canceled. For
- cancellation control to be usable in modular fashion, some rules must be
- followed.</p>
-<p class="Pp">For purposes of this discussion, consider an object to be a
- generalization of a procedure. It is a set of procedures and global
- variables written as a unit and called by clients not known by the object.
- Objects may depend on other objects.</p>
-<p class="Pp">First, cancelability should only be disabled on entry to an
- object, never explicitly enabled. On exit from an object, the cancelability
- state should always be restored to its value on entry to the object.</p>
-<p class="Pp">This follows from a modularity argument: if the client of an
- object (or the client of an object that uses that object) has disabled
- cancelability, it is because the client does not want to have to worry about
- how to clean up if the thread is canceled while executing some sequence of
- actions. If an object is called in such a state and it enables cancelability
- and a cancellation request is pending for that thread, then the thread will
- be canceled, contrary to the wish of the client that disabled.</p>
-<p class="Pp" id="deferred">Second, the cancelability type may be explicitly set
- to either
- <a class="permalink" href="#deferred"><i class="Em">deferred</i></a> or
- <a class="permalink" href="#asynchronous"><i class="Em" id="asynchronous">asynchronous</i></a>
- upon entry to an object. But as with the cancelability state, on exit from
- an object that cancelability type should always be restored to its value on
- entry to the object.</p>
-<p class="Pp">Finally, only functions that are cancel-safe may be called from a
- thread that is asynchronously cancelable.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">If successful, the
- <code class="Fn">pthread_setcancelstate</code>() and
- <code class="Fn">pthread_setcanceltype</code>() functions will return zero.
- Otherwise, an error number shall be returned to indicate the error.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The function <code class="Fn">pthread_setcancelstate</code>() may
- fail with:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL">[<a class="permalink" href="#EINVAL"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The specified state is not <code class="Dv">PTHREAD_CANCEL_ENABLE</code>
- or <code class="Dv">PTHREAD_CANCEL_DISABLE</code>.</dd>
-</dl>
-<p class="Pp">The function <code class="Fn">pthread_setcanceltype</code>() may
- fail with:</p>
-<dl class="Bl-tag">
- <dt id="EINVAL~2">[<a class="permalink" href="#EINVAL~2"><code class="Er">EINVAL</code></a>]</dt>
- <dd>The specified state is not <code class="Dv">PTHREAD_CANCEL_DEFERRED</code>
- or <code class="Dv">PTHREAD_CANCEL_ASYNCHRONOUS</code>.</dd>
-</dl>
-</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">pthread_cancel(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_testcancel</code>() function conforms
- to <span class="St">ISO/IEC 9945-1:1996 (&#x201C;POSIX.1&#x201D;)</span>.
- The standard allows implementations to make many more functions cancellation
- points.</p>
-<p class="Pp">The <code class="Fn">pthread_setcancelstate</code>() function is
- async-signal-safe as required by.</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
- Leonard</span>
- &lt;<a class="Mt" href="mailto:d@openbsd.org">d@openbsd.org</a>&gt; for the
- <span class="Ux">OpenBSD</span> implementation of
- <a class="Xr">pthread_cancel(3)</a>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">March 18, 2017</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/pthread_yield.3 4.html b/static/freebsd/man3/pthread_yield.3 4.html
deleted file mode 100644
index 0c922c5c..00000000
--- a/static/freebsd/man3/pthread_yield.3 4.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">PTHREAD_YIELD(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">PTHREAD_YIELD(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">pthread_yield</code> &#x2014;
- <span class="Nd">yield control of the current thread</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">POSIX Threads Library (libpthread,
- -lpthread)</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">pthread.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">pthread_yield</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The
- <a class="permalink" href="#pthread_yield"><code class="Fn" id="pthread_yield">pthread_yield</code></a>()
- forces the running thread to relinquish the processor until it again becomes
- the head of its thread list.</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">sched_yield(2)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">pthread_yield</code>() is a non-portable (but
- quite common) extension to <span class="St">IEEE Std 1003.1-2001
- (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">September 18, 2006</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/qmath.3 3.html b/static/freebsd/man3/qmath.3 3.html
deleted file mode 100644
index d5f66a94..00000000
--- a/static/freebsd/man3/qmath.3 3.html
+++ /dev/null
@@ -1,606 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">QMATH(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">QMATH(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">qmath</code> &#x2014;
- <span class="Nd">fixed-point math library based on the &#x201C;Q&#x201D;
- number format</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/qmath.h</a>&gt;</code></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The <code class="Nm">qmath</code> data types and APIs support
- fixed-point math based on the &#x201C;Q&#x201D; number format. The APIs have
- been built around the following data types: <var class="Vt">s8q_t</var>,
- <var class="Vt">u8q_t</var>, <var class="Vt">s16q_t</var>,
- <var class="Vt">u16q_t</var>, <var class="Vt">s32q_t</var>,
- <var class="Vt">u32q_t</var>, <var class="Vt">s64q_t</var>, and
- <var class="Vt">u64q_t</var>, which are referred to generically in the
- earlier API definitions as <var class="Fa">QTYPE</var>. The
- <var class="Fa">ITYPE</var> refers to the <a class="Xr">stdint(7)</a>
- integer types. <var class="Fa">NTYPE</var> is used to refer to any numeric
- type and is therefore a superset of <var class="Fa">QTYPE</var> and
- <var class="Fa">ITYPE</var>.</p>
-<p class="Pp" id="Q_INI">This scheme can represent Q numbers with [2, 4, 6, 8,
- 16, 32, 48] bits of precision after the binary radix point, depending on the
- <var class="Fa">rpshft</var> argument to
- <a class="permalink" href="#Q_INI"><code class="Fn">Q_INI</code></a>(). The
- number of bits available for the integral component is not explicitly
- specified, and implicitly consumes the remaining available bits of the
- chosen Q data type.</p>
-<p class="Pp">Operations on Q numbers maintain the precision of their arguments.
- The fractional component is truncated to fit into the destination, with no
- rounding. None of the operations is affected by the floating-point
- environment.</p>
-<p class="Pp">For more details, see the
- <a class="Sx" href="#IMPLEMENTATION_DETAILS">IMPLEMENTATION DETAILS</a>
- below.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIST_OF_FUNCTIONS"><a class="permalink" href="#LIST_OF_FUNCTIONS">LIST
- OF FUNCTIONS</a></h1>
-<section class="Ss">
-<h2 class="Ss" id="Functions_which_create/initialise_a_Q_number"><a class="permalink" href="#Functions_which_create/initialise_a_Q_number">Functions
- which create/initialise a Q number</a></h2>
-<table class="Bl-column">
- <tr id="Name">
- <td><a class="permalink" href="#Name"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_INI(3)</a></td>
- <td>initialise a Q number</td>
- </tr>
-</table>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Numeric_functions_which_operate_on_two_Q_numbers"><a class="permalink" href="#Numeric_functions_which_operate_on_two_Q_numbers">Numeric
- functions which operate on two Q numbers</a></h2>
-<table class="Bl-column">
- <tr id="Name~2">
- <td><a class="permalink" href="#Name~2"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QADDQ(3)</a></td>
- <td>addition</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QDIVQ(3)</a></td>
- <td>division</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QMULQ(3)</a></td>
- <td>multiplication</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QSUBQ(3)</a></td>
- <td>subtraction</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_NORMPREC(3)</a></td>
- <td>normalisation</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QMAXQ(3)</a></td>
- <td>maximum function</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QMINQ(3)</a></td>
- <td>minimum function</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QCLONEQ(3)</a></td>
- <td>identical copy</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QCPYVALQ(3)</a></td>
- <td>representational copy</td>
- </tr>
-</table>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Numeric_functions_which_apply_integers_to_a_Q_number"><a class="permalink" href="#Numeric_functions_which_apply_integers_to_a_Q_number">Numeric
- functions which apply integers to a Q number</a></h2>
-<table class="Bl-column">
- <tr id="Name~3">
- <td><a class="permalink" href="#Name~3"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QADDI(3)</a></td>
- <td>addition</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QDIVI(3)</a></td>
- <td>division</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QMULI(3)</a></td>
- <td>multiplication</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QSUBI(3)</a></td>
- <td>subtraction</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QFRACI(3)</a></td>
- <td>fraction</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QCPYVALI(3)</a></td>
- <td>overwrite</td>
- </tr>
-</table>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Numeric_functions_which_operate_on_a_single_Q_number"><a class="permalink" href="#Numeric_functions_which_operate_on_a_single_Q_number">Numeric
- functions which operate on a single Q number</a></h2>
-<table class="Bl-column">
- <tr id="Name~4">
- <td><a class="permalink" href="#Name~4"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QABS(3)</a></td>
- <td>absolute value</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_Q2D(3)</a></td>
- <td>double representation</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_Q2F(3)</a></td>
- <td>float representation</td>
- </tr>
-</table>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Comparison_and_logic_functions"><a class="permalink" href="#Comparison_and_logic_functions">Comparison
- and logic functions</a></h2>
-<table class="Bl-column">
- <tr id="Name~5">
- <td><a class="permalink" href="#Name~5"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SIGNED(3)</a></td>
- <td>determine sign</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_LTZ(3)</a></td>
- <td>less than zero</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_PRECEQ(3)</a></td>
- <td>compare bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QLTQ(3)</a></td>
- <td>less than</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QLEQ(3)</a></td>
- <td>less or equal</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QGTQ(3)</a></td>
- <td>greater than</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QGEQ(3)</a></td>
- <td>greater or equal</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QEQ(3)</a></td>
- <td>equal</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_QNEQ(3)</a></td>
- <td>not equal</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_OFLOW(3)</a></td>
- <td>would overflow</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_RELPREC(3)</a></td>
- <td>relative precision</td>
- </tr>
-</table>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Functions_which_manipulate_the_control/sign_data_bits"><a class="permalink" href="#Functions_which_manipulate_the_control/sign_data_bits">Functions
- which manipulate the control/sign data bits</a></h2>
-<table class="Bl-column">
- <tr id="Name~6">
- <td><a class="permalink" href="#Name~6"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SIGNSHFT(3)</a></td>
- <td>sign bit position</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SSIGN(3)</a></td>
- <td>sign bit</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_CRAWMASK(3)</a></td>
- <td>control bitmask</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SRAWMASK(3)</a></td>
- <td>sign bitmask</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GCRAW(3)</a></td>
- <td>raw control bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GCVAL(3)</a></td>
- <td>value of control bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SCVAL(3)</a></td>
- <td>set control bits</td>
- </tr>
-</table>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Functions_which_manipulate_the_combined_integer/fractional_data_bits"><a class="permalink" href="#Functions_which_manipulate_the_combined_integer/fractional_data_bits">Functions
- which manipulate the combined integer/fractional data bits</a></h2>
-<table class="Bl-column">
- <tr id="Name~7">
- <td><a class="permalink" href="#Name~7"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_IFRAWMASK(3)</a></td>
- <td>integer/fractional bitmask</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_IFVALIMASK(3)</a></td>
- <td>value of integer bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_IFVALFMASK(3)</a></td>
- <td>value of fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GIFRAW(3)</a></td>
- <td>raw integer/fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GIFABSVAL(3)</a></td>
- <td>absolute value of fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GIFVAL(3)</a></td>
- <td>real value of fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SIFVAL(3)</a></td>
- <td>set integer/fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SIFVALS(3)</a></td>
- <td>set separate integer/fractional values</td>
- </tr>
-</table>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Functions_which_manipulate_the_integer_data_bits"><a class="permalink" href="#Functions_which_manipulate_the_integer_data_bits">Functions
- which manipulate the integer data bits</a></h2>
-<table class="Bl-column">
- <tr id="Name~8">
- <td><a class="permalink" href="#Name~8"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_IRAWMASK(3)</a></td>
- <td>integer bitmask</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GIRAW(3)</a></td>
- <td>raw integer bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GIABSVAL(3)</a></td>
- <td>absolute value of integer bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GIVAL(3)</a></td>
- <td>real value of integer bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SIVAL(3)</a></td>
- <td>set integer bits</td>
- </tr>
-</table>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Functions_which_manipulate_the_fractional_data_bits"><a class="permalink" href="#Functions_which_manipulate_the_fractional_data_bits">Functions
- which manipulate the fractional data bits</a></h2>
-<table class="Bl-column">
- <tr id="Name~9">
- <td><a class="permalink" href="#Name~9"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_FRAWMASK(3)</a></td>
- <td>fractional bitmask</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GFRAW(3)</a></td>
- <td>raw fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GFABSVAL(3)</a></td>
- <td>absolute value of fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_GFVAL(3)</a></td>
- <td>real value of fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SFVAL(3)</a></td>
- <td>set fractional bits</td>
- </tr>
-</table>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Miscellaneous_functions/variables"><a class="permalink" href="#Miscellaneous_functions/variables">Miscellaneous
- functions/variables</a></h2>
-<table class="Bl-column">
- <tr id="Name~10">
- <td><a class="permalink" href="#Name~10"><i class="Em">Name</i></a></td>
- <td>Description</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_NCBITS(3)</a></td>
- <td>number of reserved control bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_BT(3)</a></td>
- <td>C data type</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_TC(3)</a></td>
- <td>casted data type</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_NTBITS(3)</a></td>
- <td>number of total bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_NFCBITS(3)</a></td>
- <td>number of control-encoded fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_MAXNFBITS(3)</a></td>
- <td>number of maximum fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_NFBITS(3)</a></td>
- <td>number of effective fractional bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_NIBITS(3)</a></td>
- <td>number of integer bits</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_RPSHFT(3)</a></td>
- <td>bit position of radix point</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_ABS(3)</a></td>
- <td>absolute value</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_MAXSTRLEN(3)</a></td>
- <td>number of characters to render string</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_TOSTR(3)</a></td>
- <td>render string</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SHL(3)</a></td>
- <td>left-shifted value</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_SHR(3)</a></td>
- <td>right-shifted value</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_DEBUG(3)</a></td>
- <td>render debugging information</td>
- </tr>
- <tr>
- <td><a class="Xr">Q_DFV2BFV(3)</a></td>
- <td>convert decimal fractional value</td>
- </tr>
-</table>
-</section>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_DETAILS"><a class="permalink" href="#IMPLEMENTATION_DETAILS">IMPLEMENTATION
- DETAILS</a></h1>
-<p class="Pp">The <code class="Nm">qmath</code> data types and APIs support
- fixed-point math based on the &#x201C;Q&#x201D; number format. This
- implementation uses the Q notation
- <a class="permalink" href="#Qm.n"><i class="Em" id="Qm.n">Qm.n</i></a>,
- where <a class="permalink" href="#m"><i class="Em" id="m">m</i></a>
- specifies the number of bits for integral data (excluding the sign bit for
- signed types), and
- <a class="permalink" href="#n"><i class="Em" id="n">n</i></a> specifies the
- number of bits for fractional data.</p>
-<p class="Pp">The APIs have been built around the following q_t derived data
- types:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>typedef int8_t s8q_t;
-typedef uint8_t u8q_t;
-typedef int16_t s16q_t;
-typedef uint16_t u16q_t;
-typedef int32_t s32q_t;
-typedef uint32_t u32q_t;
-typedef int64_t s64q_t;
-typedef uint64_t u64q_t;</pre>
-</div>
-<p class="Pp">These types are referred to generically in the earlier API
- definitions as <var class="Fa">QTYPE</var>, while
- <var class="Fa">ITYPE</var> refers to the <a class="Xr">stdint(7)</a>
- integer types the Q data types are derived from. <var class="Fa">NTYPE</var>
- is used to refer to any numeric type and is therefore a superset of
- <var class="Fa">QTYPE</var> and <var class="Fa">ITYPE</var>.</p>
-<p class="Pp">The 3 least significant bits (LSBs) of all q_t data types are
- reserved for embedded control data:</p>
-<ul class="Bl-dash">
- <li>bits 1-2 specify the binary radix point shift index operand, with
- 00,01,10,11 == 1,2,3,4.</li>
- <li>bit 3 specifies the radix point shift index operand multiplier as 2 (0) or
- 16 (1).</li>
-</ul>
-<p class="Pp">This scheme can therefore represent Q numbers with
- [2,4,6,8,16,32,48,64] bits of precision after the binary radix point. The
- number of bits available for the integral component is not explicitly
- specified, and implicitly consumes the remaining available bits of the
- chosen Q data type.</p>
-<p class="Pp">Additionally, the most significant bit (MSB) of signed Q types
- stores the sign bit, with bit value 0 representing a positive number and bit
- value 1 representing a negative number. Negative numbers are stored as
- absolute values with the sign bit set, rather than the more typical two's
- complement representation. This avoids having to bit shift negative numbers,
- which can result in undefined behaviour from some compilers.</p>
-<p class="Pp">This binary representation used for Q numbers therefore comprises
- a set of distinct data bit types and associated bit counts. Data bit
- types/labels, listed in LSB to MSB order, are: control &#x2018;C&#x2019;,
- fractional &#x2018;F&#x2019;, integer &#x2018;I&#x2019; and sign
- &#x2018;S&#x2019;. The following example illustrates the binary
- representation of a Q20.8 number represented using a s32q_t variable:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>M L
-S S
-B B
-
-3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
-1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
-
-S I I I I I I I I I I I I I I I I I I I I F F F F F F F F C C C</pre>
-</div>
-<p class="Pp">Important bit counts are: total, control, control-encoded
- fractional, maximum fractional, effective fractional and integer bits.</p>
-<p class="Pp">The count of total bits is derived from the size of the q_t data
- type. For example, a s32q_t has 32 total bits.</p>
-<p class="Pp">The count of control-encoded fractional bits is derived from
- calculating the number of fractional bits per the control bit encoding
- scheme. For example, the control bits binary value of 101 encodes a
- fractional bit count of 2 x 16 = 32 fractional bits.</p>
-<p class="Pp">The count of maximum fractional bits is derived from the
- difference between the counts of total bits and control/sign bits. For
- example, a s32q_t has a maximum of 32 - 3 - 1 = 28 fractional bits.</p>
-<p class="Pp">The count of effective fractional bits is derived from the minimum
- of the control-encoded fractional bits and the maximum fractional bits. For
- example, a s32q_t with 32 control-encoded fractional bits is effectively
- limited to 28 fractional bits.</p>
-<p class="Pp">The count of integer bits is derived from the difference between
- the counts of total bits and all other non-integer data bits (the sum of
- control, fractional and sign bits.) For example, a s32q_t with 8 effective
- fractional bits has 32 - 3 - 8 - 1 = 20 integer bits. The count of integer
- bits can be zero if all available numeric data bits have been reserved for
- fractional data, e.g., when the number of control-encoded fractional bits is
- greater than or equal to the underlying Q data type's maximum fractional
- bits.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<section class="Ss">
-<h2 class="Ss" id="Calculating_area_of_a_circle_with_r=4.2_and_rpshft=16"><a class="permalink" href="#Calculating_area_of_a_circle_with_r=4.2_and_rpshft=16">Calculating
- area of a circle with r=4.2 and rpshft=16</a></h2>
-<div class="Bd Bd-indent Li">
-<pre>u64q_t a, pi, r;
-char buf[32]
-
-Q_INI(&amp;a, 0, 0, 16);
-Q_INI(&amp;pi, 3, 14159, 16);
-Q_INI(&amp;r, 4, 2, 16);
-
-Q_QCLONEQ(&amp;a, r);
-Q_QMULQ(&amp;a, r);
-Q_QMULQ(&amp;a, pi);
-
-Q_TOSTR(a, -1, 10, buf, sizeof(buf));
-printf(&quot;%s\n&quot;, buf);</pre>
-</div>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Debugging"><a class="permalink" href="#Debugging">Debugging</a></h2>
-<p class="Pp">Declare a Q20.8 s32q_t number <var class="Fa">s32</var>,
- initialise it with the fixed-point value for 5/3, and render a debugging
- representation of the variable (including its full precision decimal
- C-string representation), to the console:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>s32q_t s32;
-Q_INI(&amp;s32, 0, 0, 8);
-Q_QFRACI(&amp;s32, 5, 3);
-char buf[Q_MAXSTRLEN(s32, 10)];
-Q_TOSTR(s32, -1, 10, buf, sizeof(buf));
-printf(Q_DEBUG(s32, &quot;&quot;, &quot;\n\ttostr=%s\n\n&quot;, 0), buf);</pre>
-</div>
-<p class="Pp">The above code outputs the following to the console:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>&quot;s32&quot;@0x7fffffffe7d4
- type=s32q_t, Qm.n=Q20.8, rpshft=11, imin=0xfff00001, \
-imax=0xfffff
- qraw=0x00000d53
- imask=0x7ffff800, fmask=0x000007f8, cmask=0x00000007, \
-ifmask=0x7ffffff8
- iraw=0x00000800, iabsval=0x1, ival=0x1
- fraw=0x00000550, fabsval=0xaa, fval=0xaa
- tostr=1.664</pre>
-</div>
-<p class="Pp">Note: The &quot;\&quot; present in the rendered output above
- indicates a manual line break inserted to keep the man page within 80
- columns and is not part of the actual output.</p>
-</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">errno(2)</a>, <a class="Xr">math(3)</a>,
- <a class="Xr">Q_FRAWMASK(3)</a>, <a class="Xr">Q_IFRAWMASK(3)</a>,
- <a class="Xr">Q_INI(3)</a>, <a class="Xr">Q_IRAWMASK(3)</a>,
- <a class="Xr">Q_QABS(3)</a>, <a class="Xr">Q_QADDI(3)</a>,
- <a class="Xr">Q_QADDQ(3)</a>, <a class="Xr">Q_SIGNED(3)</a>,
- <a class="Xr">Q_SIGNSHFT(3)</a>, <a class="Xr">stdint(7)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">qmath</code> functions first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <code class="Nm">qmath</code> functions and this manual page
- were written by <span class="An">Lawrence Stewart</span>
- &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;
- and sponsored by Netflix, Inc.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 4, 2019</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/queue.3 3.html b/static/freebsd/man3/queue.3 3.html
deleted file mode 100644
index d35abcb8..00000000
--- a/static/freebsd/man3/queue.3 3.html
+++ /dev/null
@@ -1,1187 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">QUEUE(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">QUEUE(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">SLIST_CLASS_ENTRY</code>,
- <code class="Nm">SLIST_CLASS_HEAD</code>,
- <code class="Nm">SLIST_CONCAT</code>, <code class="Nm">SLIST_EMPTY</code>,
- <code class="Nm">SLIST_EMPTY_ATOMIC</code>,
- <code class="Nm">SLIST_ENTRY</code>, <code class="Nm">SLIST_FIRST</code>,
- <code class="Nm">SLIST_FOREACH</code>,
- <code class="Nm">SLIST_FOREACH_FROM</code>,
- <code class="Nm">SLIST_FOREACH_FROM_SAFE</code>,
- <code class="Nm">SLIST_FOREACH_SAFE</code>,
- <code class="Nm">SLIST_HEAD</code>,
- <code class="Nm">SLIST_HEAD_INITIALIZER</code>,
- <code class="Nm">SLIST_INIT</code>,
- <code class="Nm">SLIST_INSERT_AFTER</code>,
- <code class="Nm">SLIST_INSERT_HEAD</code>,
- <code class="Nm">SLIST_NEXT</code>, <code class="Nm">SLIST_REMOVE</code>,
- <code class="Nm">SLIST_REMOVE_AFTER</code>,
- <code class="Nm">SLIST_REMOVE_HEAD</code>,
- <code class="Nm">SLIST_SPLIT_AFTER</code>,
- <code class="Nm">SLIST_SWAP</code>,
- <code class="Nm">STAILQ_CLASS_ENTRY</code>,
- <code class="Nm">STAILQ_CLASS_HEAD</code>,
- <code class="Nm">STAILQ_CONCAT</code>, <code class="Nm">STAILQ_EMPTY</code>,
- <code class="Nm">STAILQ_EMPTY_ATOMIC</code>,
- <code class="Nm">STAILQ_ENTRY</code>, <code class="Nm">STAILQ_FIRST</code>,
- <code class="Nm">STAILQ_FOREACH</code>,
- <code class="Nm">STAILQ_FOREACH_FROM</code>,
- <code class="Nm">STAILQ_FOREACH_FROM_SAFE</code>,
- <code class="Nm">STAILQ_FOREACH_SAFE</code>,
- <code class="Nm">STAILQ_HEAD</code>,
- <code class="Nm">STAILQ_HEAD_INITIALIZER</code>,
- <code class="Nm">STAILQ_INIT</code>,
- <code class="Nm">STAILQ_INSERT_AFTER</code>,
- <code class="Nm">STAILQ_INSERT_HEAD</code>,
- <code class="Nm">STAILQ_INSERT_TAIL</code>,
- <code class="Nm">STAILQ_LAST</code>, <code class="Nm">STAILQ_NEXT</code>,
- <code class="Nm">STAILQ_REMOVE</code>,
- <code class="Nm">STAILQ_REMOVE_AFTER</code>,
- <code class="Nm">STAILQ_REMOVE_HEAD</code>,
- <code class="Nm">STAILQ_REVERSE</code>,
- <code class="Nm">STAILQ_SPLIT_AFTER</code>,
- <code class="Nm">STAILQ_SWAP</code>,
- <code class="Nm">LIST_CLASS_ENTRY</code>,
- <code class="Nm">LIST_CLASS_HEAD</code>,
- <code class="Nm">LIST_CONCAT</code>, <code class="Nm">LIST_EMPTY</code>,
- <code class="Nm">LIST_EMPTY_ATOMIC</code>,
- <code class="Nm">LIST_ENTRY</code>, <code class="Nm">LIST_FIRST</code>,
- <code class="Nm">LIST_FOREACH</code>,
- <code class="Nm">LIST_FOREACH_FROM</code>,
- <code class="Nm">LIST_FOREACH_FROM_SAFE</code>,
- <code class="Nm">LIST_FOREACH_SAFE</code>,
- <code class="Nm">LIST_HEAD</code>,
- <code class="Nm">LIST_HEAD_INITIALIZER</code>,
- <code class="Nm">LIST_INIT</code>,
- <code class="Nm">LIST_INSERT_AFTER</code>,
- <code class="Nm">LIST_INSERT_BEFORE</code>,
- <code class="Nm">LIST_INSERT_HEAD</code>, <code class="Nm">LIST_NEXT</code>,
- <code class="Nm">LIST_PREV</code>, <code class="Nm">LIST_REMOVE</code>,
- <code class="Nm">LIST_REPLACE</code>,
- <code class="Nm">LIST_SPLIT_AFTER</code>, <code class="Nm">LIST_SWAP</code>,
- <code class="Nm">TAILQ_CLASS_ENTRY</code>,
- <code class="Nm">TAILQ_CLASS_HEAD</code>,
- <code class="Nm">TAILQ_CONCAT</code>, <code class="Nm">TAILQ_EMPTY</code>,
- <code class="Nm">TAILQ_EMPTY_ATOMIC</code>,
- <code class="Nm">TAILQ_ENTRY</code>, <code class="Nm">TAILQ_FIRST</code>,
- <code class="Nm">TAILQ_FOREACH</code>,
- <code class="Nm">TAILQ_FOREACH_FROM</code>,
- <code class="Nm">TAILQ_FOREACH_FROM_SAFE</code>,
- <code class="Nm">TAILQ_FOREACH_REVERSE</code>,
- <code class="Nm">TAILQ_FOREACH_REVERSE_FROM</code>,
- <code class="Nm">TAILQ_FOREACH_REVERSE_FROM_SAFE</code>,
- <code class="Nm">TAILQ_FOREACH_REVERSE_SAFE</code>,
- <code class="Nm">TAILQ_FOREACH_SAFE</code>,
- <code class="Nm">TAILQ_HEAD</code>,
- <code class="Nm">TAILQ_HEAD_INITIALIZER</code>,
- <code class="Nm">TAILQ_INIT</code>,
- <code class="Nm">TAILQ_INSERT_AFTER</code>,
- <code class="Nm">TAILQ_INSERT_BEFORE</code>,
- <code class="Nm">TAILQ_INSERT_HEAD</code>,
- <code class="Nm">TAILQ_INSERT_TAIL</code>,
- <code class="Nm">TAILQ_LAST</code>, <code class="Nm">TAILQ_NEXT</code>,
- <code class="Nm">TAILQ_PREV</code>, <code class="Nm">TAILQ_REMOVE</code>,
- <code class="Nm">TAILQ_REPLACE</code>,
- <code class="Nm">TAILQ_SPLIT_AFTER</code>,
- <code class="Nm">TAILQ_SWAP</code> &#x2014; <span class="Nd">implementations
- of singly-linked lists, singly-linked tail queues, lists and tail
- queues</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/queue.h</a>&gt;</code></p>
-<p class="Pp"><code class="Fn">SLIST_CLASS_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">CLASSTYPE</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_CLASS_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">CLASSTYPE</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_CONCAT</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head1</var>, <var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head2</var>, <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_EMPTY</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_EMPTY_ATOMIC</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_FIRST</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_FOREACH</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_FOREACH_FROM</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_FOREACH_FROM_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY
- NAME</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_FOREACH_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY
- NAME</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_HEAD_INITIALIZER</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- head</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_INIT</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_INSERT_AFTER</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *listelm</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_INSERT_HEAD</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_NEXT</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_REMOVE_AFTER</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_REMOVE_HEAD</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_SPLIT_AFTER</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">SLIST_HEAD *rest</var>,
- <var class="Fa" style="white-space: nowrap;">SLIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">SLIST_SWAP</code>(<var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head1</var>, <var class="Fa" style="white-space: nowrap;">SLIST_HEAD
- *head2</var>, <var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_CLASS_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">CLASSTYPE</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_CLASS_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">CLASSTYPE</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_CONCAT</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head1</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head2</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_EMPTY</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_EMPTY_ATOMIC</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_FIRST</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_FOREACH</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_FOREACH_FROM</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_FOREACH_FROM_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY
- NAME</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_FOREACH_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY
- NAME</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_HEAD_INITIALIZER</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- head</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_INIT</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_INSERT_AFTER</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *listelm</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_INSERT_HEAD</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_INSERT_TAIL</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_LAST</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_NEXT</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_REMOVE_AFTER</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_REMOVE_HEAD</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_REVERSE</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_SPLIT_AFTER</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">STAILQ_HEAD *rest</var>,
- <var class="Fa" style="white-space: nowrap;">STAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">STAILQ_SWAP</code>(<var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head1</var>, <var class="Fa" style="white-space: nowrap;">STAILQ_HEAD
- *head2</var>, <var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">LIST_CLASS_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">CLASSTYPE</var>);</p>
-<p class="Pp"><code class="Fn">LIST_CLASS_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">CLASSTYPE</var>);</p>
-<p class="Pp"><code class="Fn">LIST_CONCAT</code>(<var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head1</var>, <var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head2</var>, <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">LIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_EMPTY</code>(<var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">LIST_EMPTY_ATOMIC</code>(<var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">LIST_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">LIST_FIRST</code>(<var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">LIST_FOREACH</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">LIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_FOREACH_FROM</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">LIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_FOREACH_FROM_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">LIST_ENTRY
- NAME</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">LIST_FOREACH_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">LIST_ENTRY
- NAME</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">LIST_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">LIST_HEAD_INITIALIZER</code>(<var class="Fa" style="white-space: nowrap;">LIST_HEAD
- head</var>);</p>
-<p class="Pp"><code class="Fn">LIST_INIT</code>(<var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">LIST_INSERT_AFTER</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *listelm</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">LIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_INSERT_BEFORE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *listelm</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">LIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_INSERT_HEAD</code>(<var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">LIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_NEXT</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">LIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_PREV</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">LIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">LIST_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_REPLACE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">TYPE *new</var>,
- <var class="Fa" style="white-space: nowrap;">LIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_SPLIT_AFTER</code>(<var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">LIST_HEAD *rest</var>,
- <var class="Fa" style="white-space: nowrap;">LIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">LIST_SWAP</code>(<var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head1</var>, <var class="Fa" style="white-space: nowrap;">LIST_HEAD
- *head2</var>, <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">LIST_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_CLASS_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">CLASSTYPE</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_CLASS_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">CLASSTYPE</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_CONCAT</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head1</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head2</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_EMPTY</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_EMPTY_ATOMIC</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_FIRST</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_FOREACH</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_FOREACH_FROM</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_FOREACH_FROM_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY
- NAME</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_FOREACH_REVERSE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_FOREACH_REVERSE_FROM</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_FOREACH_REVERSE_FROM_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_FOREACH_REVERSE_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_FOREACH_SAFE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *var</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY
- NAME</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *temp_var</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_HEAD_INITIALIZER</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- head</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_INIT</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_INSERT_AFTER</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *listelm</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_INSERT_BEFORE</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *listelm</var>, <var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_INSERT_HEAD</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_INSERT_TAIL</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_LAST</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>,
- <var class="Fa" style="white-space: nowrap;">HEADNAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_NEXT</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_PREV</code>(<var class="Fa" style="white-space: nowrap;">TYPE
- *elm</var>, <var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_REPLACE</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE *new</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_SPLIT_AFTER</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head</var>, <var class="Fa" style="white-space: nowrap;">TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD *rest</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>);</p>
-<p class="Pp"><code class="Fn">TAILQ_SWAP</code>(<var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head1</var>, <var class="Fa" style="white-space: nowrap;">TAILQ_HEAD
- *head2</var>, <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">TAILQ_ENTRY NAME</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">These macros define and operate on four types of data structures
- which can be used in both C and C++ source code:</p>
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>Lists</li>
- <li>Singly-linked lists</li>
- <li>Singly-linked tail queues</li>
- <li>Tail queues</li>
-</ol>
-All four structures support the following functionality:
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>Insertion of a new entry at the head of the list.</li>
- <li>Insertion of a new entry after any element in the list.</li>
- <li>O(1) removal of an entry from the head of the list.</li>
- <li>Forward traversal through the list.</li>
- <li>Splitting a list in two after any element in the list.</li>
- <li>Swapping the contents of two lists.</li>
-</ol>
-<p class="Pp">Singly-linked lists are the simplest of the four data structures
- and support only the above functionality. Singly-linked lists are ideal for
- applications with large datasets and few or no removals, or for implementing
- a LIFO queue. Singly-linked lists add the following functionality:</p>
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>O(n) removal of any entry in the list.</li>
- <li>O(n) concatenation of two lists.</li>
-</ol>
-<p class="Pp">Singly-linked tail queues add the following functionality:</p>
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>Entries can be added at the end of a list.</li>
- <li>O(n) removal of any entry in the list.</li>
- <li>They may be concatenated.</li>
-</ol>
-However:
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>All list insertions must specify the head of the list.</li>
- <li>Each head entry requires two pointers rather than one.</li>
- <li>Code size is about 15% greater and operations run about 20% slower than
- singly-linked lists.</li>
-</ol>
-<p class="Pp">Singly-linked tail queues are ideal for applications with large
- datasets and few or no removals, or for implementing a FIFO queue.</p>
-<p class="Pp">All doubly linked types of data structures (lists and tail queues)
- additionally allow:</p>
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>Insertion of a new entry before any element in the list.</li>
- <li>O(1) removal of any entry in the list.</li>
-</ol>
-However:
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>Each element requires two pointers rather than one.</li>
- <li>Code size and execution time of operations (except for removal) is about
- twice that of the singly-linked data-structures.</li>
-</ol>
-<p class="Pp">Linked lists are the simplest of the doubly linked data
- structures. They add the following functionality over the above:</p>
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>O(n) concatenation of two lists.</li>
- <li>They may be traversed backwards.</li>
-</ol>
-However:
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>To traverse backwards, an entry to begin the traversal and the list in
- which it is contained must be specified.</li>
-</ol>
-<p class="Pp">Tail queues add the following functionality:</p>
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>Entries can be added at the end of a list.</li>
- <li>They may be traversed backwards, from tail to head.</li>
- <li>They may be concatenated.</li>
-</ol>
-However:
-<ol class="Bl-enum Bd-indent Bl-compact">
- <li>All list insertions and removals must specify the head of the list.</li>
- <li>Each head entry requires two pointers rather than one.</li>
- <li>Code size is about 15% greater and operations run about 20% slower than
- singly-linked lists.</li>
-</ol>
-<p class="Pp">In the macro definitions, <var class="Fa">TYPE</var> is the name
- of a user defined structure. The structure must contain a field called
- <var class="Fa">NAME</var> which is of type
- <code class="Li">SLIST_ENTRY</code>, <code class="Li">STAILQ_ENTRY</code>,
- <code class="Li">LIST_ENTRY</code>, or <code class="Li">TAILQ_ENTRY</code>.
- In the macro definitions, <var class="Fa">CLASSTYPE</var> is the name of a
- user defined class. The class must contain a field called
- <var class="Fa">NAME</var> which is of type
- <code class="Li">SLIST_CLASS_ENTRY</code>,
- <code class="Li">STAILQ_CLASS_ENTRY</code>,
- <code class="Li">LIST_CLASS_ENTRY</code>, or
- <code class="Li">TAILQ_CLASS_ENTRY</code>. The argument
- <var class="Fa">HEADNAME</var> is the name of a user defined structure that
- must be declared using the macros <code class="Li">SLIST_HEAD</code>,
- <code class="Li">SLIST_CLASS_HEAD</code>,
- <code class="Li">STAILQ_HEAD</code>,
- <code class="Li">STAILQ_CLASS_HEAD</code>,
- <code class="Li">LIST_HEAD</code>, <code class="Li">LIST_CLASS_HEAD</code>,
- <code class="Li">TAILQ_HEAD</code>, or
- <code class="Li">TAILQ_CLASS_HEAD</code>. See the examples below for further
- explanation of how these macros are used.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SINGLY-LINKED_LISTS"><a class="permalink" href="#SINGLY-LINKED_LISTS">SINGLY-LINKED
- LISTS</a></h1>
-<p class="Pp">A singly-linked list is headed by a structure defined by the
- <code class="Nm">SLIST_HEAD</code> macro. This structure contains a single
- pointer to the first element on the list. The elements are singly linked for
- minimum space and pointer manipulation overhead at the expense of O(n)
- removal for arbitrary elements. New elements can be added to the list after
- an existing element or at the head of the list. An
- <var class="Fa">SLIST_HEAD</var> structure is declared as follows:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>SLIST_HEAD(HEADNAME, TYPE) head;</pre>
-</div>
-<p class="Pp">where <var class="Fa">HEADNAME</var> is the name of the structure
- to be defined, and <var class="Fa">TYPE</var> is the type of the elements to
- be linked into the list. A pointer to the head of the list can later be
- declared as:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct HEADNAME *headp;</pre>
-</div>
-<p class="Pp">(The names <code class="Li">head</code> and
- <code class="Li">headp</code> are user selectable.)</p>
-<p class="Pp">The macro <code class="Nm">SLIST_HEAD_INITIALIZER</code> evaluates
- to an initializer for the list <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_CONCAT</code> concatenates the
- list headed by <var class="Fa">head2</var> onto the end of the one headed by
- <var class="Fa">head1</var> removing all entries from the former. Use of
- this macro should be avoided as it traverses the entirety of the
- <var class="Fa">head1</var> list. A singly-linked tail queue should be used
- if this macro is needed in high-usage code paths or to operate on long
- lists.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_EMPTY</code> evaluates to true if
- there are no elements in the list. The
- <code class="Nm">SLIST_EMPTY_ATOMIC</code> variant has the same behavior,
- but can be safely used in contexts where it is possible that a different
- thread is concurrently updating the list.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_ENTRY</code> declares a structure
- that connects the elements in the list.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_FIRST</code> returns the first
- element in the list or NULL if the list is empty.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_FOREACH</code> traverses the list
- referenced by <var class="Fa">head</var> in the forward direction, assigning
- each element in turn to <var class="Fa">var</var>.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_FOREACH_FROM</code> behaves
- identically to <code class="Nm">SLIST_FOREACH</code> when
- <var class="Fa">var</var> is NULL, else it treats <var class="Fa">var</var>
- as a previously found SLIST element and begins the loop at
- <var class="Fa">var</var> instead of the first element in the SLIST
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp" id="SLIST_FOREACH">The macro
- <code class="Nm">SLIST_FOREACH_SAFE</code> traverses the list referenced by
- <var class="Fa">head</var> in the forward direction, assigning each element
- in turn to <var class="Fa">var</var>. However, unlike
- <a class="permalink" href="#SLIST_FOREACH"><code class="Fn">SLIST_FOREACH</code></a>()
- here it is permitted to both remove <var class="Fa">var</var> as well as
- free it from within the loop safely without interfering with the
- traversal.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_FOREACH_FROM_SAFE</code> behaves
- identically to <code class="Nm">SLIST_FOREACH_SAFE</code> when
- <var class="Fa">var</var> is NULL, else it treats <var class="Fa">var</var>
- as a previously found SLIST element and begins the loop at
- <var class="Fa">var</var> instead of the first element in the SLIST
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_INIT</code> initializes the list
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_INSERT_HEAD</code> inserts the
- new element <var class="Fa">elm</var> at the head of the list.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_INSERT_AFTER</code> inserts the
- new element <var class="Fa">elm</var> after the element
- <var class="Fa">listelm</var>.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_NEXT</code> returns the next
- element in the list.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_REMOVE_AFTER</code> removes the
- element after <var class="Fa">elm</var> from the list. Unlike
- <var class="Fa">SLIST_REMOVE</var>, this macro does not traverse the entire
- list.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_REMOVE_HEAD</code> removes the
- element <var class="Fa">elm</var> from the head of the list. For optimum
- efficiency, elements being removed from the head of the list should
- explicitly use this macro instead of the generic
- <var class="Fa">SLIST_REMOVE</var> macro.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_REMOVE</code> removes the element
- <var class="Fa">elm</var> from the list. Use of this macro should be avoided
- as it traverses the entire list. A doubly-linked list should be used if this
- macro is needed in high-usage code paths or to operate on long lists.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_SPLIT_AFTER</code> splits the
- list referenced by <var class="Fa">head</var>, making
- <var class="Fa">rest</var> reference the list formed by elements after
- <var class="Fa">elm</var> in <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">SLIST_SWAP</code> swaps the contents of
- <var class="Fa">head1</var> and <var class="Fa">head2</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SINGLY-LINKED_LIST_EXAMPLE"><a class="permalink" href="#SINGLY-LINKED_LIST_EXAMPLE">SINGLY-LINKED
- LIST EXAMPLE</a></h1>
-<div class="Bd Li">
-<pre>SLIST_HEAD(slisthead, entry) head =
- SLIST_HEAD_INITIALIZER(head);
-struct slisthead *headp; /* Singly-linked List head. */
-struct entry {
- ...
- SLIST_ENTRY(entry) entries; /* Singly-linked List. */
- ...
-} *n1, *n2, *n3, *np;
-
-SLIST_INIT(&amp;head); /* Initialize the list. */
-
-n1 = malloc(sizeof(struct entry)); /* Insert at the head. */
-SLIST_INSERT_HEAD(&amp;head, n1, entries);
-
-n2 = malloc(sizeof(struct entry)); /* Insert after. */
-SLIST_INSERT_AFTER(n1, n2, entries);
-
-SLIST_REMOVE(&amp;head, n2, entry, entries);/* Deletion. */
-free(n2);
-
-n3 = SLIST_FIRST(&amp;head);
-SLIST_REMOVE_HEAD(&amp;head, entries); /* Deletion from the head. */
-free(n3);
- /* Forward traversal. */
-SLIST_FOREACH(np, &amp;head, entries)
- np-&gt; ...
- /* Safe forward traversal. */
-SLIST_FOREACH_SAFE(np, &amp;head, entries, np_temp) {
- np-&gt;do_stuff();
- ...
- SLIST_REMOVE(&amp;head, np, entry, entries);
- free(np);
-}
-
-while (!SLIST_EMPTY(&amp;head)) { /* List Deletion. */
- n1 = SLIST_FIRST(&amp;head);
- SLIST_REMOVE_HEAD(&amp;head, entries);
- free(n1);
-}</pre>
-</div>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SINGLY-LINKED_TAIL_QUEUES"><a class="permalink" href="#SINGLY-LINKED_TAIL_QUEUES">SINGLY-LINKED
- TAIL QUEUES</a></h1>
-<p class="Pp">A singly-linked tail queue is headed by a structure defined by the
- <code class="Nm">STAILQ_HEAD</code> macro. This structure contains a pair of
- pointers, one to the first element in the tail queue and the other to the
- last element in the tail queue. The elements are singly linked for minimum
- space and pointer manipulation overhead at the expense of O(n) removal for
- arbitrary elements. New elements can be added to the tail queue after an
- existing element, at the head of the tail queue, or at the end of the tail
- queue. A <var class="Fa">STAILQ_HEAD</var> structure is declared as
- follows:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>STAILQ_HEAD(HEADNAME, TYPE) head;</pre>
-</div>
-<p class="Pp">where <code class="Li">HEADNAME</code> is the name of the
- structure to be defined, and <code class="Li">TYPE</code> is the type of the
- elements to be linked into the tail queue. A pointer to the head of the tail
- queue can later be declared as:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct HEADNAME *headp;</pre>
-</div>
-<p class="Pp">(The names <code class="Li">head</code> and
- <code class="Li">headp</code> are user selectable.)</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_HEAD_INITIALIZER</code>
- evaluates to an initializer for the tail queue
- <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_CONCAT</code> concatenates the
- tail queue headed by <var class="Fa">head2</var> onto the end of the one
- headed by <var class="Fa">head1</var> removing all entries from the
- former.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_EMPTY</code> evaluates to true
- if there are no items on the tail queue. The
- <code class="Nm">STAILQ_EMPTY_ATOMIC</code> variant has the same behavior,
- but can be safely used in contexts where it is possible that a different
- thread is concurrently updating the queue.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_ENTRY</code> declares a
- structure that connects the elements in the tail queue.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_FIRST</code> returns the first
- item on the tail queue or NULL if the tail queue is empty.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_FOREACH</code> traverses the
- tail queue referenced by <var class="Fa">head</var> in the forward
- direction, assigning each element in turn to <var class="Fa">var</var>.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_FOREACH_FROM</code> behaves
- identically to <code class="Nm">STAILQ_FOREACH</code> when
- <var class="Fa">var</var> is NULL, else it treats <var class="Fa">var</var>
- as a previously found STAILQ element and begins the loop at
- <var class="Fa">var</var> instead of the first element in the STAILQ
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp" id="STAILQ_FOREACH">The macro
- <code class="Nm">STAILQ_FOREACH_SAFE</code> traverses the tail queue
- referenced by <var class="Fa">head</var> in the forward direction, assigning
- each element in turn to <var class="Fa">var</var>. However, unlike
- <a class="permalink" href="#STAILQ_FOREACH"><code class="Fn">STAILQ_FOREACH</code></a>()
- here it is permitted to both remove <var class="Fa">var</var> as well as
- free it from within the loop safely without interfering with the
- traversal.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_FOREACH_FROM_SAFE</code> behaves
- identically to <code class="Nm">STAILQ_FOREACH_SAFE</code> when
- <var class="Fa">var</var> is NULL, else it treats <var class="Fa">var</var>
- as a previously found STAILQ element and begins the loop at
- <var class="Fa">var</var> instead of the first element in the STAILQ
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_INIT</code> initializes the tail
- queue referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_INSERT_HEAD</code> inserts the
- new element <var class="Fa">elm</var> at the head of the tail queue.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_INSERT_TAIL</code> inserts the
- new element <var class="Fa">elm</var> at the end of the tail queue.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_INSERT_AFTER</code> inserts the
- new element <var class="Fa">elm</var> after the element
- <var class="Fa">listelm</var>.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_LAST</code> returns the last
- item on the tail queue. If the tail queue is empty the return value is
- <code class="Dv">NULL</code>.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_NEXT</code> returns the next
- item on the tail queue, or NULL this item is the last.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_REMOVE_AFTER</code> removes the
- element after <var class="Fa">elm</var> from the tail queue. Unlike
- <var class="Fa">STAILQ_REMOVE</var>, this macro does not traverse the entire
- tail queue.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_REMOVE_HEAD</code> removes the
- element at the head of the tail queue. For optimum efficiency, elements
- being removed from the head of the tail queue should use this macro
- explicitly rather than the generic <var class="Fa">STAILQ_REMOVE</var>
- macro.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_REMOVE</code> removes the
- element <var class="Fa">elm</var> from the tail queue. Use of this macro
- should be avoided as it traverses the entire list. A doubly-linked tail
- queue should be used if this macro is needed in high-usage code paths or to
- operate on long tail queues.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_REVERSE</code> reverses the
- queue in place.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_SPLIT_AFTER</code> splits the
- tail queue referenced by <var class="Fa">head</var>, making
- <var class="Fa">rest</var> reference the tail queue formed by elements after
- <var class="Fa">elm</var> in <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">STAILQ_SWAP</code> swaps the contents
- of <var class="Fa">head1</var> and <var class="Fa">head2</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SINGLY-LINKED_TAIL_QUEUE_EXAMPLE"><a class="permalink" href="#SINGLY-LINKED_TAIL_QUEUE_EXAMPLE">SINGLY-LINKED
- TAIL QUEUE EXAMPLE</a></h1>
-<div class="Bd Li">
-<pre>STAILQ_HEAD(stailhead, entry) head =
- STAILQ_HEAD_INITIALIZER(head);
-struct stailhead *headp; /* Singly-linked tail queue head. */
-struct entry {
- ...
- STAILQ_ENTRY(entry) entries; /* Tail queue. */
- ...
-} *n1, *n2, *n3, *np;
-
-STAILQ_INIT(&amp;head); /* Initialize the queue. */
-
-n1 = malloc(sizeof(struct entry)); /* Insert at the head. */
-STAILQ_INSERT_HEAD(&amp;head, n1, entries);
-
-n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */
-STAILQ_INSERT_TAIL(&amp;head, n1, entries);
-
-n2 = malloc(sizeof(struct entry)); /* Insert after. */
-STAILQ_INSERT_AFTER(&amp;head, n1, n2, entries);
- /* Deletion. */
-STAILQ_REMOVE(&amp;head, n2, entry, entries);
-free(n2);
- /* Deletion from the head. */
-n3 = STAILQ_FIRST(&amp;head);
-STAILQ_REMOVE_HEAD(&amp;head, entries);
-free(n3);
- /* Forward traversal. */
-STAILQ_FOREACH(np, &amp;head, entries)
- np-&gt; ...
- /* Safe forward traversal. */
-STAILQ_FOREACH_SAFE(np, &amp;head, entries, np_temp) {
- np-&gt;do_stuff();
- ...
- STAILQ_REMOVE(&amp;head, np, entry, entries);
- free(np);
-}
- /* TailQ Deletion. */
-while (!STAILQ_EMPTY(&amp;head)) {
- n1 = STAILQ_FIRST(&amp;head);
- STAILQ_REMOVE_HEAD(&amp;head, entries);
- free(n1);
-}
- /* Faster TailQ Deletion. */
-n1 = STAILQ_FIRST(&amp;head);
-while (n1 != NULL) {
- n2 = STAILQ_NEXT(n1, entries);
- free(n1);
- n1 = n2;
-}
-STAILQ_INIT(&amp;head);</pre>
-</div>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LISTS"><a class="permalink" href="#LISTS">LISTS</a></h1>
-<p class="Pp">A list is headed by a structure defined by the
- <code class="Nm">LIST_HEAD</code> macro. This structure contains a single
- pointer to the first element on the list. The elements are doubly linked so
- that an arbitrary element can be removed without traversing the list. New
- elements can be added to the list after an existing element, before an
- existing element, or at the head of the list. A
- <var class="Fa">LIST_HEAD</var> structure is declared as follows:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>LIST_HEAD(HEADNAME, TYPE) head;</pre>
-</div>
-<p class="Pp">where <var class="Fa">HEADNAME</var> is the name of the structure
- to be defined, and <var class="Fa">TYPE</var> is the type of the elements to
- be linked into the list. A pointer to the head of the list can later be
- declared as:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct HEADNAME *headp;</pre>
-</div>
-<p class="Pp">(The names <code class="Li">head</code> and
- <code class="Li">headp</code> are user selectable.)</p>
-<p class="Pp">The macro <code class="Nm">LIST_HEAD_INITIALIZER</code> evaluates
- to an initializer for the list <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">LIST_CONCAT</code> concatenates the
- list headed by <var class="Fa">head2</var> onto the end of the one headed by
- <var class="Fa">head1</var> removing all entries from the former. Use of
- this macro should be avoided as it traverses the entirety of the
- <var class="Fa">head1</var> list. A tail queue should be used if this macro
- is needed in high-usage code paths or to operate on long lists.</p>
-<p class="Pp">The macro <code class="Nm">LIST_EMPTY</code> evaluates to true if
- there are no elements in the list. The
- <code class="Nm">LIST_EMPTY_ATOMIC</code> variant has the same behavior, but
- can be safely used in contexts where it is possible that a different thread
- is concurrently updating the list.</p>
-<p class="Pp">The macro <code class="Nm">LIST_ENTRY</code> declares a structure
- that connects the elements in the list.</p>
-<p class="Pp">The macro <code class="Nm">LIST_FIRST</code> returns the first
- element in the list or NULL if the list is empty.</p>
-<p class="Pp">The macro <code class="Nm">LIST_FOREACH</code> traverses the list
- referenced by <var class="Fa">head</var> in the forward direction, assigning
- each element in turn to <var class="Fa">var</var>.</p>
-<p class="Pp">The macro <code class="Nm">LIST_FOREACH_FROM</code> behaves
- identically to <code class="Nm">LIST_FOREACH</code> when
- <var class="Fa">var</var> is NULL, else it treats <var class="Fa">var</var>
- as a previously found LIST element and begins the loop at
- <var class="Fa">var</var> instead of the first element in the LIST
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp" id="LIST_FOREACH">The macro
- <code class="Nm">LIST_FOREACH_SAFE</code> traverses the list referenced by
- <var class="Fa">head</var> in the forward direction, assigning each element
- in turn to <var class="Fa">var</var>. However, unlike
- <a class="permalink" href="#LIST_FOREACH"><code class="Fn">LIST_FOREACH</code></a>()
- here it is permitted to both remove <var class="Fa">var</var> as well as
- free it from within the loop safely without interfering with the
- traversal.</p>
-<p class="Pp">The macro <code class="Nm">LIST_FOREACH_FROM_SAFE</code> behaves
- identically to <code class="Nm">LIST_FOREACH_SAFE</code> when
- <var class="Fa">var</var> is NULL, else it treats <var class="Fa">var</var>
- as a previously found LIST element and begins the loop at
- <var class="Fa">var</var> instead of the first element in the LIST
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">LIST_INIT</code> initializes the list
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">LIST_INSERT_HEAD</code> inserts the new
- element <var class="Fa">elm</var> at the head of the list.</p>
-<p class="Pp">The macro <code class="Nm">LIST_INSERT_AFTER</code> inserts the
- new element <var class="Fa">elm</var> after the element
- <var class="Fa">listelm</var>.</p>
-<p class="Pp">The macro <code class="Nm">LIST_INSERT_BEFORE</code> inserts the
- new element <var class="Fa">elm</var> before the element
- <var class="Fa">listelm</var>.</p>
-<p class="Pp">The macro <code class="Nm">LIST_NEXT</code> returns the next
- element in the list, or NULL if this is the last.</p>
-<p class="Pp">The macro <code class="Nm">LIST_PREV</code> returns the previous
- element in the list, or NULL if this is the first. List
- <var class="Fa">head</var> must contain element
- <var class="Fa">elm</var>.</p>
-<p class="Pp">The macro <code class="Nm">LIST_REMOVE</code> removes the element
- <var class="Fa">elm</var> from the list.</p>
-<p class="Pp" id="LIST_REPLACE">The macro
- <a class="permalink" href="#LIST_REPLACE"><code class="Fn">LIST_REPLACE</code></a>()
- replaces the element <var class="Fa">elm</var> with
- <var class="Fa">new</var> in the list. The element <var class="Fa">new</var>
- must not already be on a list.</p>
-<p class="Pp">The macro <code class="Nm">LIST_SPLIT_AFTER</code> splits the list
- referenced by <var class="Fa">head</var>, making <var class="Fa">rest</var>
- reference the list formed by elements after <var class="Fa">elm</var> in
- <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">LIST_SWAP</code> swaps the contents of
- <var class="Fa">head1</var> and <var class="Fa">head2</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIST_EXAMPLE"><a class="permalink" href="#LIST_EXAMPLE">LIST
- EXAMPLE</a></h1>
-<div class="Bd Li">
-<pre>LIST_HEAD(listhead, entry) head =
- LIST_HEAD_INITIALIZER(head);
-struct listhead *headp; /* List head. */
-struct entry {
- ...
- LIST_ENTRY(entry) entries; /* List. */
- ...
-} *n1, *n2, *n3, *np, *np_temp;
-
-LIST_INIT(&amp;head); /* Initialize the list. */
-
-n1 = malloc(sizeof(struct entry)); /* Insert at the head. */
-LIST_INSERT_HEAD(&amp;head, n1, entries);
-
-n2 = malloc(sizeof(struct entry)); /* Insert after. */
-LIST_INSERT_AFTER(n1, n2, entries);
-
-n3 = malloc(sizeof(struct entry)); /* Insert before. */
-LIST_INSERT_BEFORE(n2, n3, entries);
-
-LIST_REMOVE(n2, entries); /* Deletion. */
-free(n2);
- /* Forward traversal. */
-LIST_FOREACH(np, &amp;head, entries)
- np-&gt; ...
-
- /* Safe forward traversal. */
-LIST_FOREACH_SAFE(np, &amp;head, entries, np_temp) {
- np-&gt;do_stuff();
- ...
- LIST_REMOVE(np, entries);
- free(np);
-}
-
-while (!LIST_EMPTY(&amp;head)) { /* List Deletion. */
- n1 = LIST_FIRST(&amp;head);
- LIST_REMOVE(n1, entries);
- free(n1);
-}
-
-n1 = LIST_FIRST(&amp;head); /* Faster List Deletion. */
-while (n1 != NULL) {
- n2 = LIST_NEXT(n1, entries);
- free(n1);
- n1 = n2;
-}
-LIST_INIT(&amp;head);</pre>
-</div>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="TAIL_QUEUES"><a class="permalink" href="#TAIL_QUEUES">TAIL
- QUEUES</a></h1>
-<p class="Pp">A tail queue is headed by a structure defined by the
- <code class="Nm">TAILQ_HEAD</code> macro. This structure contains a pair of
- pointers, one to the first element in the tail queue and the other to the
- last element in the tail queue. The elements are doubly linked so that an
- arbitrary element can be removed without traversing the tail queue. New
- elements can be added to the tail queue after an existing element, before an
- existing element, at the head of the tail queue, or at the end of the tail
- queue. A <var class="Fa">TAILQ_HEAD</var> structure is declared as
- follows:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>TAILQ_HEAD(HEADNAME, TYPE) head;</pre>
-</div>
-<p class="Pp">where <code class="Li">HEADNAME</code> is the name of the
- structure to be defined, and <code class="Li">TYPE</code> is the type of the
- elements to be linked into the tail queue. A pointer to the head of the tail
- queue can later be declared as:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct HEADNAME *headp;</pre>
-</div>
-<p class="Pp">(The names <code class="Li">head</code> and
- <code class="Li">headp</code> are user selectable.)</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_HEAD_INITIALIZER</code> evaluates
- to an initializer for the tail queue <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_CONCAT</code> concatenates the
- tail queue headed by <var class="Fa">head2</var> onto the end of the one
- headed by <var class="Fa">head1</var> removing all entries from the
- former.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_EMPTY</code> evaluates to true if
- there are no items on the tail queue. The
- <code class="Nm">TAILQ_EMPTY_ATOMIC</code> variant has the same behavior,
- but can be safely used in contexts where it is possible that a different
- thread is concurrently updating the queue.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_ENTRY</code> declares a structure
- that connects the elements in the tail queue.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_FIRST</code> returns the first
- item on the tail queue or NULL if the tail queue is empty.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_FOREACH</code> traverses the tail
- queue referenced by <var class="Fa">head</var> in the forward direction,
- assigning each element in turn to <var class="Fa">var</var>.
- <var class="Fa">var</var> is set to <code class="Dv">NULL</code> if the loop
- completes normally, or if there were no elements.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_FOREACH_FROM</code> behaves
- identically to <code class="Nm">TAILQ_FOREACH</code> when
- <var class="Fa">var</var> is NULL, else it treats <var class="Fa">var</var>
- as a previously found TAILQ element and begins the loop at
- <var class="Fa">var</var> instead of the first element in the TAILQ
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_FOREACH_REVERSE</code> traverses
- the tail queue referenced by <var class="Fa">head</var> in the reverse
- direction, assigning each element in turn to <var class="Fa">var</var>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_FOREACH_REVERSE_FROM</code>
- behaves identically to <code class="Nm">TAILQ_FOREACH_REVERSE</code> when
- <var class="Fa">var</var> is NULL, else it treats <var class="Fa">var</var>
- as a previously found TAILQ element and begins the reverse loop at
- <var class="Fa">var</var> instead of the last element in the TAILQ
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macros <code class="Nm">TAILQ_FOREACH_SAFE</code> and
- <code class="Nm">TAILQ_FOREACH_REVERSE_SAFE</code> traverse the list
- referenced by <var class="Fa">head</var> in the forward or reverse direction
- respectively, assigning each element in turn to <var class="Fa">var</var>.
- However, unlike their unsafe counterparts,
- <code class="Nm">TAILQ_FOREACH</code> and
- <code class="Nm">TAILQ_FOREACH_REVERSE</code> permit to both remove
- <var class="Fa">var</var> as well as free it from within the loop safely
- without interfering with the traversal.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_FOREACH_FROM_SAFE</code> behaves
- identically to <code class="Nm">TAILQ_FOREACH_SAFE</code> when
- <var class="Fa">var</var> is NULL, else it treats <var class="Fa">var</var>
- as a previously found TAILQ element and begins the loop at
- <var class="Fa">var</var> instead of the first element in the TAILQ
- referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_FOREACH_REVERSE_FROM_SAFE</code>
- behaves identically to <code class="Nm">TAILQ_FOREACH_REVERSE_SAFE</code>
- when <var class="Fa">var</var> is NULL, else it treats
- <var class="Fa">var</var> as a previously found TAILQ element and begins the
- reverse loop at <var class="Fa">var</var> instead of the last element in the
- TAILQ referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_INIT</code> initializes the tail
- queue referenced by <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_INSERT_HEAD</code> inserts the
- new element <var class="Fa">elm</var> at the head of the tail queue.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_INSERT_TAIL</code> inserts the
- new element <var class="Fa">elm</var> at the end of the tail queue.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_INSERT_AFTER</code> inserts the
- new element <var class="Fa">elm</var> after the element
- <var class="Fa">listelm</var>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_INSERT_BEFORE</code> inserts the
- new element <var class="Fa">elm</var> before the element
- <var class="Fa">listelm</var>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_LAST</code> returns the last item
- on the tail queue. If the tail queue is empty the return value is
- <code class="Dv">NULL</code>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_NEXT</code> returns the next item
- on the tail queue, or NULL if this item is the last.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_PREV</code> returns the previous
- item on the tail queue, or NULL if this item is the first.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_REMOVE</code> removes the element
- <var class="Fa">elm</var> from the tail queue.</p>
-<p class="Pp" id="TAILQ_REPLACE">The macro
- <a class="permalink" href="#TAILQ_REPLACE"><code class="Fn">TAILQ_REPLACE</code></a>()
- replaces the element <var class="Fa">elm</var> with
- <var class="Fa">new</var> in the tail queue. The element
- <var class="Fa">new</var> must not already be on a list.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_SPLIT_AFTER</code> splits the
- tail queue referenced by <var class="Fa">head</var>, making
- <var class="Fa">rest</var> reference the tail queue formed by elements after
- <var class="Fa">elm</var> in <var class="Fa">head</var>.</p>
-<p class="Pp">The macro <code class="Nm">TAILQ_SWAP</code> swaps the contents of
- <var class="Fa">head1</var> and <var class="Fa">head2</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="TAIL_QUEUE_EXAMPLE"><a class="permalink" href="#TAIL_QUEUE_EXAMPLE">TAIL
- QUEUE EXAMPLE</a></h1>
-<div class="Bd Li">
-<pre>TAILQ_HEAD(tailhead, entry) head =
- TAILQ_HEAD_INITIALIZER(head);
-struct tailhead *headp; /* Tail queue head. */
-struct entry {
- ...
- TAILQ_ENTRY(entry) entries; /* Tail queue. */
- ...
-} *n1, *n2, *n3, *n4, *np;
-
-TAILQ_INIT(&amp;head); /* Initialize the queue. */
-
-n1 = malloc(sizeof(struct entry)); /* Insert at the head. */
-TAILQ_INSERT_HEAD(&amp;head, n1, entries);
-
-n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */
-TAILQ_INSERT_TAIL(&amp;head, n1, entries);
-
-n2 = malloc(sizeof(struct entry)); /* Insert after. */
-TAILQ_INSERT_AFTER(&amp;head, n1, n2, entries);
-
-n3 = malloc(sizeof(struct entry)); /* Insert before. */
-TAILQ_INSERT_BEFORE(n2, n3, entries);
-
-TAILQ_REMOVE(&amp;head, n2, entries); /* Deletion. */
-free(n2);
-
-n4 = malloc(sizeof(struct entry)); /* Replacement. */
-TAILQ_REPLACE(&amp;head, n3, n4, entries);
-free(n3);
- /* Forward traversal. */
-TAILQ_FOREACH(np, &amp;head, entries)
- np-&gt; ...
- /* Safe forward traversal. */
-TAILQ_FOREACH_SAFE(np, &amp;head, entries, np_temp) {
- np-&gt;do_stuff();
- ...
- TAILQ_REMOVE(&amp;head, np, entries);
- free(np);
-}
- /* Reverse traversal. */
-TAILQ_FOREACH_REVERSE(np, &amp;head, tailhead, entries)
- np-&gt; ...
- /* TailQ Deletion. */
-while (!TAILQ_EMPTY(&amp;head)) {
- n1 = TAILQ_FIRST(&amp;head);
- TAILQ_REMOVE(&amp;head, n1, entries);
- free(n1);
-}
- /* Faster TailQ Deletion. */
-n1 = TAILQ_FIRST(&amp;head);
-while (n1 != NULL) {
- n2 = TAILQ_NEXT(n1, entries);
- free(n1);
- n1 = n2;
-}
-TAILQ_INIT(&amp;head);</pre>
-</div>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DIAGNOSTICS"><a class="permalink" href="#DIAGNOSTICS">DIAGNOSTICS</a></h1>
-<p class="Pp"><code class="Nm">queue(3)</code> provides several diagnostic and
- debugging facilities.</p>
-<p class="Pp">Check code that performs basic integrity and API conformance
- checks is automatically inserted when using queue macros in the kernel if
- compiling it with <var class="Va">INVARIANTS</var>. One can request
- insertion or elision of check code by respectively defining one of the
- macros <var class="Va">QUEUE_MACRO_DEBUG_ASSERTIONS</var> or
- <var class="Va">QUEUE_MACRO_NO_DEBUG_ASSERTIONS</var> before first inclusion
- of <code class="In">&lt;<a class="In">sys/queue.h</a>&gt;</code>. When check
- code encounters an anomaly, it panics the kernel or aborts the program. To
- this end, in the kernel or in <var class="Va">_STANDALONE</var> builds, it
- by default calls <code class="Fn">panic</code>(), while in userland builds
- it prints the diagnostic message on <code class="Dv">stderr</code> and then
- calls <code class="Fn">abort</code>(). These behaviors can be overridden by
- defining a custom <code class="Fn">QMD_PANIC</code>() macro before first
- inclusion of <code class="In">&lt;<a class="In">sys/queue.h</a>&gt;</code>.
- The diagnostic messages automatically include the source file, line and
- function where the failing check occurred. This behavior can be overridden
- by defining a custom <code class="Fn">QMD_ASSERT</code>() macro before first
- inclusion of
- <code class="In">&lt;<a class="In">sys/queue.h</a>&gt;</code>.</p>
-<p class="Pp">The <code class="Fn">SLIST_REMOVE_PREVPTR</code>() macro is
- available to aid debugging:</p>
-<dl class="Bl-hang Bd-indent">
- <dt><code class="Fn">SLIST_REMOVE_PREVPTR</code>(<var class="Fa">TYPE
- **prev</var>, <var class="Fa">TYPE *elm</var>, <var class="Fa">SLIST_ENTRY
- NAME</var>)</dt>
- <dd>
- <p class="Pp">Removes element <var class="Fa">elm</var>, which must directly
- follow the element whose <var class="Va">&amp;SLIST_NEXT()</var> is
- <var class="Fa">prev</var>, from the list. This macro may insert, under
- conditions detailed above, check code that validates that
- <var class="Fa">elm</var> indeed follows <var class="Fa">prev</var> in
- the list (through the <code class="Fn">QMD_SLIST_CHECK_PREVPTR</code>()
- macro).</p>
- </dd>
-</dl>
-<p class="Pp">When debugging, it can be useful to trace queue changes. To enable
- tracing, define the macro <var class="Va">QUEUE_MACRO_DEBUG_TRACE</var>.
- Note that, at the moment, only macros for regular tail queues have been
- instrumented.</p>
-<p class="Pp">It can also be useful to trash pointers that have been unlinked
- from a queue, to detect use after removal. To enable pointer trashing,
- define the macro <var class="Va">QUEUE_MACRO_DEBUG_TRASH</var> at compile
- time. Note that, at the moment, only a limited number of macros have been
- instrumented. The macro
- <code class="Fn">QMD_IS_TRASHED</code>(<var class="Fa">void *ptr</var>)
- returns true if <var class="Fa">ptr</var> has been trashed by the
- <var class="Va">QUEUE_MACRO_DEBUG_TRASH</var> option.</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">arb(3)</a>, <a class="Xr">tree(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">queue</code> functions first appeared in
- <span class="Ux">4.4BSD</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 28, 2025</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/sigevent.3 3.html b/static/freebsd/man3/sigevent.3 3.html
deleted file mode 100644
index 794ab90d..00000000
--- a/static/freebsd/man3/sigevent.3 3.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">SIGEVENT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">SIGEVENT(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">sigevent</code> &#x2014;
- <span class="Nd">asynchronous event notification</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">signal.h</a>&gt;</code></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">Some operations permit threads to request asynchronous
- notification of events via a <var class="Vt">struct sigevent</var>
- structure. This structure contains several fields that describe the
- requested notification:</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>
- <td><var class="Vt">int</var></td>
- <td>sigev_notify</td>
- <td>notification method</td>
- </tr>
- <tr>
- <td><var class="Vt">int</var></td>
- <td>sigev_signo</td>
- <td>signal number</td>
- </tr>
- <tr>
- <td><var class="Vt">union sigval</var></td>
- <td>sigev_value</td>
- <td>signal value</td>
- </tr>
- <tr>
- <td><var class="Vt">int</var></td>
- <td>sigev_notify_kqueue</td>
- <td><a class="Xr">kqueue(2)</a> file descriptor</td>
- </tr>
- <tr>
- <td><var class="Vt">unsigned short</var></td>
- <td>sigev_notify_kevent_flags</td>
- <td>kevent flags</td>
- </tr>
- <tr>
- <td><var class="Vt">lwpid_t</var></td>
- <td>sigev_notify_thread_id</td>
- <td>LWP ID</td>
- </tr>
- <tr>
- <td><var class="Vt">void (*)(union sigval)</var></td>
- <td>sigev_notify_function</td>
- <td>callback function pointer</td>
- </tr>
- <tr>
- <td><var class="Vt">pthread_attr_t *</var></td>
- <td>sigev_notify_attributes</td>
- <td>callback thread attributes</td>
- </tr>
-</table>
-<p class="Pp">The <var class="Va">sigev_notify</var> field specifies the
- notification method used when the event triggers:</p>
-<dl class="Bl-tag">
- <dt id="SIGEV_NONE"><a class="permalink" href="#SIGEV_NONE"><code class="Dv">SIGEV_NONE</code></a></dt>
- <dd>No notification is sent.</dd>
- <dt id="SIGEV_SIGNAL"><a class="permalink" href="#SIGEV_SIGNAL"><code class="Dv">SIGEV_SIGNAL</code></a></dt>
- <dd>The signal <var class="Va">sigev_signo</var> is queued as a real-time
- signal to the calling process. The value stored in
- <var class="Va">sigev_value</var> will be present in the
- <var class="Va">si_value</var> of the <var class="Vt">siginfo_t</var>
- structure of the queued signal.</dd>
- <dt id="SIGEV_THREAD"><a class="permalink" href="#SIGEV_THREAD"><code class="Dv">SIGEV_THREAD</code></a></dt>
- <dd>The notification function in <var class="Va">sigev_notify_function</var>
- is called in a separate thread context. The thread is created with the
- attributes specified in <var class="Va">*sigev_notify_attributes</var>.
- The value stored in <var class="Va">sigev_value</var> is passed as the
- sole argument to <var class="Va">sigev_notify_function</var>. If
- <var class="Va">sigev_notify_attributes</var> is
- <code class="Dv">NULL</code>, the thread is created with default
- attributes.</dd>
- <dt id="SIGEV_KEVENT"><a class="permalink" href="#SIGEV_KEVENT"><code class="Dv">SIGEV_KEVENT</code></a></dt>
- <dd>A new kevent is posted to the kqueue
- <var class="Va">sigev_notify_kqueue</var>. The <var class="Va">udata</var>
- member of the kevent structure contains the value stored in
- <var class="Va">sigev_value</var>. The meaning of other fields in the
- kevent are specific to the type of triggered event.</dd>
- <dt id="SIGEV_THREAD_ID"><a class="permalink" href="#SIGEV_THREAD_ID"><code class="Dv">SIGEV_THREAD_ID</code></a></dt>
- <dd>The signal <var class="Va">sigev_signo</var> is queued to the thread whose
- LWP ID is <var class="Va">sigev_notify_thread_id</var>. The value stored
- in <var class="Va">sigev_value</var> will be present in the
- <var class="Va">si_value</var> of the <var class="Vt">siginfo_t</var>
- structure of the queued signal.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="NOTES"><a class="permalink" href="#NOTES">NOTES</a></h1>
-<p class="Pp">Note that programs wishing to use
- <code class="Dv">SIGEV_THREAD</code> notifications must link against the
- <span class="Lb">POSIX Real-time Library (librt, -lrt)</span>.</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">mq_notify(2)</a>,
- <a class="Xr">timer_create(2)</a>, <a class="Xr">siginfo(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">struct sigevent</var> type conforms to
- <span class="St">IEEE Std 1003.1-2004 (&#x201C;POSIX.1&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <var class="Va">sigevent</var> structure first appeared in
- <span class="Ux">FreeBSD 3.3</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">February 25, 2020</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/siginfo.3 3.html b/static/freebsd/man3/siginfo.3 3.html
deleted file mode 100644
index fb0a09d2..00000000
--- a/static/freebsd/man3/siginfo.3 3.html
+++ /dev/null
@@ -1,528 +0,0 @@
-<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> &#x2014; <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
- &lt;<a class="In">signal.h</a>&gt;</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">&lt;<a class="In">errno.h</a>&gt;</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">&lt;<a class="In">errno.h</a>&gt;</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 (&#x201C;POSIX.1&#x201D;)</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>
- &lt;<a class="Mt" href="mailto:davidxu@FreeBSD.org">davidxu@FreeBSD.org</a>&gt;.</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>
diff --git a/static/freebsd/man3/snl.3 3.html b/static/freebsd/man3/snl.3 3.html
deleted file mode 100644
index 5af578e0..00000000
--- a/static/freebsd/man3/snl.3 3.html
+++ /dev/null
@@ -1,395 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">SNL(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">SNL(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">snl_init</code>,
- <code class="Nm">snl_free</code>, <code class="Nm">snl_read_message</code>,
- <code class="Nm">snl_send</code>, <code class="Nm">snl_get_seq</code>,
- <code class="Nm">snl_allocz</code>, <code class="Nm">snl_clear_lb</code>,
- <code class="Nm">snl_parse_nlmsg</code>,
- <code class="Nm">snl_parse_header</code>,
- <code class="Nm">snl_parse_attrs</code>,
- <code class="Nm">snl_parse_attrs_raw</code>,
- <code class="Nm">snl_attr_get_flag</code>,
- <code class="Nm">snl_attr_get_ip</code>,
- <code class="Nm">snl_attr_get_uint16</code>,
- <code class="Nm">snl_attr_get_uint32</code>,
- <code class="Nm">snl_attr_get_string</code>,
- <code class="Nm">snl_attr_get_stringn</code>,
- <code class="Nm">snl_attr_get_nla</code>,
- <code class="Nm">snl_field_get_uint8</code>,
- <code class="Nm">snl_field_get_uint16</code>,
- <code class="Nm">snl_field_get_uint32</code> &#x2014;
- <span class="Nd">simple netlink library</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">netlink/netlink_snl.h</a>&gt;</code>
- <br/>
- <code class="In">#include
- &lt;<a class="In">netlink/netlink_snl_route.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_init</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">int
- netlink_family</var>);</p>
-<p class="Pp"><code class="Fn">snl_free</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>);</p>
-<p class="Pp"><var class="Ft">struct nlmsghdr *</var>
- <br/>
- <code class="Fn">snl_read_message</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_send</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">void
- *data</var>, <var class="Fa" style="white-space: nowrap;">int sz</var>);</p>
-<p class="Pp"><var class="Ft">uint32_t</var>
- <br/>
- <code class="Fn">snl_get_seq</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>);</p>
-<p class="Pp"><var class="Ft">void *</var>
- <br/>
- <code class="Fn">snl_allocz</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">int
- len</var>);</p>
-<p class="Pp"><code class="Fn">snl_clear_lb</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_parse_nlmsg</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlmsghdr *hdr</var>, <var class="Fa" style="white-space: nowrap;">const
- struct snl_hdr_parser *ps</var>,
- <var class="Fa" style="white-space: nowrap;">void *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_parse_header</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">void
- *hdr</var>, <var class="Fa" style="white-space: nowrap;">int len</var>,
- <var class="Fa" style="white-space: nowrap;">const struct snl_hdr_parser
- *ps</var>, <var class="Fa" style="white-space: nowrap;">int pslen</var>,
- <var class="Fa" style="white-space: nowrap;">void *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_parse_attrs</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlmsghdr *hdr</var>, <var class="Fa" style="white-space: nowrap;">int
- hdrlen</var>, <var class="Fa" style="white-space: nowrap;">const struct
- snl_attr_parser *ps</var>, <var class="Fa" style="white-space: nowrap;">int
- pslen</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_parse_attrs_raw</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla_head</var>, <var class="Fa" style="white-space: nowrap;">int
- len</var>, <var class="Fa" style="white-space: nowrap;">const struct
- snl_attr_parser *ps</var>, <var class="Fa" style="white-space: nowrap;">int
- pslen</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_flag</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_uint8</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_uint16</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_uint32</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_uint64</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_string</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_stringn</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_nla</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_ip</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">snl_attr_get_ipvia</code>(<var class="Fa" style="white-space: nowrap;">struct
- snl_state *ss</var>, <var class="Fa" style="white-space: nowrap;">struct
- nlattr *nla</var>, <var class="Fa" style="white-space: nowrap;">void
- *target</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The <a class="Xr">snl(3)</a> library provides an easy way of
- sending and receiving Netlink messages, taking care of serialisation and
- deserialisation.</p>
-<section class="Ss">
-<h2 class="Ss" id="INITIALISATION"><a class="permalink" href="#INITIALISATION">INITIALISATION</a></h2>
-<p class="Pp">Call
- <a class="permalink" href="#snl_init"><code class="Fn" id="snl_init">snl_init</code></a>()
- with a pointer to the <code class="Dv">struct snl_state</code> and the
- desired Netlink family to initialise the library instance. To free the
- library instance, call
- <a class="permalink" href="#snl_free"><code class="Fn" id="snl_free">snl_free</code></a>().</p>
-<p class="Pp">The library functions are NOT multithread-safe. If multithreading
- is desired, consider initializing an instance per thread.</p>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="MEMORY_ALLOCATION"><a class="permalink" href="#MEMORY_ALLOCATION">MEMORY
- ALLOCATION</a></h2>
-<p class="Pp">The library uses pre-allocated extendable memory buffers to handle
- message parsing. The typical usage pattern is to allocate the necessary data
- structures during the message parsing or writing process via
- <a class="permalink" href="#snl_allocz"><code class="Fn" id="snl_allocz">snl_allocz</code></a>()
- and free all allocated data at once using
- <a class="permalink" href="#snl_clear_lb"><code class="Fn" id="snl_clear_lb">snl_clear_lb</code></a>()
- after handling the message.</p>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="COMPOSING_AND_SENDING_MESSAGES"><a class="permalink" href="#COMPOSING_AND_SENDING_MESSAGES">COMPOSING
- AND SENDING MESSAGES</a></h2>
-<p class="Pp">The library does not currently offer any wrappers for writing
- netlink messages. Simple request messages can be composed by filling in all
- needed fields directly. Example for constructing an interface dump
- request:</p>
-<div class="Bd Pp Li">
-<pre> struct {
- struct nlmsghdr hdr;
- struct ifinfomsg ifmsg;
- } msg = {
- .hdr.nlmsg_type = RTM_GETLINK,
- .hdr.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
- .hdr.nlmsg_seq = snl_get_seq(ss),
- };
- msg.hdr.nlmsg_len = sizeof(msg);</pre>
-</div>
-<a class="permalink" href="#snl_get_seq"><code class="Fn" id="snl_get_seq">snl_get_seq</code></a>()
- can be used to generate a unique message number. To send the resulting
- message,
- <a class="permalink" href="#snl_send"><code class="Fn" id="snl_send">snl_send</code></a>()
- can be used.
-</section>
-<section class="Ss">
-<h2 class="Ss" id="RECEIVING_AND_PARSING_MESSAGES"><a class="permalink" href="#RECEIVING_AND_PARSING_MESSAGES">RECEIVING
- AND PARSING MESSAGES</a></h2>
-<p class="Pp">To receive a message, use
- <a class="permalink" href="#snl_read_message"><code class="Fn" id="snl_read_message">snl_read_message</code></a>().
- Currently, this call is blocking.</p>
-<p class="Pp" id="SNL_VERIFY_PARSERS">The library provides an easy way to
- convert the message to the pre-defined C structure. For each message type,
- one needs to define rules, converting the protocol header fields and the
- desired attributes to the specified structure. It can be accomplished by
- using message parsers. Each message parser consists of an array of attribute
- getters and an array of header field getters. The former array needs to be
- sorted by the attribute type. There is a
- <a class="permalink" href="#SNL_VERIFY_PARSERS"><code class="Fn">SNL_VERIFY_PARSERS</code></a>()
- macro to check if the order is correct.
- <a class="permalink" href="#SNL_DECLARE_PARSER"><code class="Fn" id="SNL_DECLARE_PARSER">SNL_DECLARE_PARSER</code></a>(<var class="Fa">parser_name</var>,
- <var class="Fa">family header type</var>, <var class="Fa">struct
- snl_field_parser[]</var>, <var class="Fa">struct snl_attr_parser[]</var>)
- can be used to create a new parser.
- <a class="permalink" href="#SNL_DECLARE_ATTR_PARSER"><code class="Fn" id="SNL_DECLARE_ATTR_PARSER">SNL_DECLARE_ATTR_PARSER</code></a>(<var class="Fa">parser_name</var>,
- <var class="Fa">struct snl_field_parser[]</var>) can be used to create an
- attribute-only message parser.</p>
-<p class="Pp">Each attribute getter needs to be embedded in the following
- structure:</p>
-<div class="Bd Pp Li">
-<pre>typedef bool snl_parse_attr_f(struct snl_state *ss, struct nlattr *attr, const void *arg, void *target);
-struct snl_attr_parser {
- uint16_t type; /* Attribute type */
- uint16_t off; /* field offset in the target structure */
- snl_parse_attr_f *cb; /* getter function to call */
- const void *arg; /* getter function custom argument */
-};</pre>
-</div>
-The generic attribute getter has the following signature:
- <var class="Ft">bool</var>
- <a class="permalink" href="#snl_attr_get__type_"><code class="Fn" id="snl_attr_get__type_">snl_attr_get_&lt;type&gt;</code></a>(<var class="Fa">struct
- snl_state *ss</var>, <var class="Fa">struct nlattr *nla</var>,
- <var class="Fa">const void *arg</var>, <var class="Fa">void *target</var>).
- nla contains the pointer of the attribute to use as the datasource. The target
- field is the pointer to the field in the target structure. It is up to the
- getter to know the type of the target field. The getter must check the input
- attribute and return false if the attribute is not formed correctly.
- Otherwise, the getter fetches the attribute value and stores it in the target,
- then returns true. It is possible to use <code class="Fn">snl_allocz</code>()
- to create the desired data structure . A number of predefined getters for the
- common data types exist.
- <a class="permalink" href="#snl_attr_get_flag"><code class="Fn" id="snl_attr_get_flag">snl_attr_get_flag</code></a>()
- converts a flag-type attribute to an uint8_t value of 1 or 0, depending on the
- attribute presence.
- <a class="permalink" href="#snl_attr_get_uint8"><code class="Fn" id="snl_attr_get_uint8">snl_attr_get_uint8</code></a>()
- stores a uint8_t type attribute into the uint8_t target field.
- <a class="permalink" href="#snl_attr_get_uint16"><code class="Fn" id="snl_attr_get_uint16">snl_attr_get_uint16</code></a>()
- stores a uint16_t type attribute into the uint16_t target field.
- <a class="permalink" href="#snl_attr_get_uint32"><code class="Fn" id="snl_attr_get_uint32">snl_attr_get_uint32</code></a>()
- stores a uint32_t type attribute into the uint32_t target field.
- <a class="permalink" href="#snl_attr_get_uint64"><code class="Fn" id="snl_attr_get_uint64">snl_attr_get_uint64</code></a>()
- stores a uint64_t type attribute into the uint64_t target field.
- <a class="permalink" href="#snl_attr_get_ip"><code class="Fn" id="snl_attr_get_ip">snl_attr_get_ip</code></a>()
- and
- <a class="permalink" href="#snl_attr_get_ipvia"><code class="Fn" id="snl_attr_get_ipvia">snl_attr_get_ipvia</code></a>()
- stores a pointer to the sockaddr structure with the IPv4/IPv6 address
- contained in the attribute. Sockaddr is allocated using
- <code class="Fn">snl_allocz</code>().
- <a class="permalink" href="#snl_attr_get_string"><code class="Fn" id="snl_attr_get_string">snl_attr_get_string</code></a>()
- stores a pointer to the NULL-terminated string. The string itself is allocated
- using <code class="Fn">snl_allocz</code>().
- <a class="permalink" href="#snl_attr_get_nla"><code class="Fn" id="snl_attr_get_nla">snl_attr_get_nla</code></a>()
- stores a pointer to the specified attribute.
- <a class="permalink" href="#snl_attr_get_stringn"><code class="Fn" id="snl_attr_get_stringn">snl_attr_get_stringn</code></a>()
- stores a pointer to the non-NULL-terminated string.
-<p class="Pp">Similarly, each family header getter needs to be embedded in the
- following structure:</p>
-<div class="Bd Pp Li">
-<pre>typedef void snl_parse_field_f(struct snl_state *ss, void *hdr, void *target);
-struct snl_field_parser {
- uint16_t off_in; /* field offset in the input structure */
- uint16_t off_out;/* field offset in the target structure */
- snl_parse_field_f *cb; /* getter function to call */
-};</pre>
-</div>
-The generic field getter has the following signature: <var class="Ft">void</var>
- snl_field_get_&lt;type&gt; &quot;struct snl_state *ss&quot; &quot;void
- *src&quot; &quot;void *target&quot; . A number of pre-defined getters for the
- common data types exist.
- <a class="permalink" href="#snl_field_get_uint8"><code class="Fn" id="snl_field_get_uint8">snl_field_get_uint8</code></a>()
- fetches an uint8_t value and stores it in the target.
- <a class="permalink" href="#snl_field_get_uint16"><code class="Fn" id="snl_field_get_uint16">snl_field_get_uint16</code></a>()
- fetches an uint8_t value and stores it in the target.
- <a class="permalink" href="#snl_field_get_uint32"><code class="Fn" id="snl_field_get_uint32">snl_field_get_uint32</code></a>()
- fetches an uint32_t value and stores it in the target.
-</section>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<p class="Pp">The following example demonstrates how to list all system
- interfaces using netlink.</p>
-<div class="Bd Pp Li">
-<pre>#include &lt;stdio.h&gt;
-
-#include &lt;netlink/netlink.h&gt;
-#include &lt;netlink/netlink_route.h&gt;
-#include &quot;netlink/netlink_snl.h&quot;
-#include &quot;netlink/netlink_snl_route.h&quot;
-
-struct nl_parsed_link {
- uint32_t ifi_index;
- uint32_t ifla_mtu;
- char *ifla_ifname;
-};
-
-#define _IN(_field) offsetof(struct ifinfomsg, _field)
-#define _OUT(_field) offsetof(struct nl_parsed_link, _field)
-static const struct snl_attr_parser ap_link[] = {
- { .type = IFLA_IFNAME, .off = _OUT(ifla_ifname), .cb = snl_attr_get_string },
- { .type = IFLA_MTU, .off = _OUT(ifla_mtu), .cb = snl_attr_get_uint32 },
-};
-static const struct snl_field_parser fp_link[] = {
- {.off_in = _IN(ifi_index), .off_out = _OUT(ifi_index), .cb = snl_field_get_uint32 },
-};
-#undef _IN
-#undef _OUT
-SNL_DECLARE_PARSER(link_parser, struct ifinfomsg, fp_link, ap_link);
-
-
-int
-main(int ac, char *argv[])
-{
- struct snl_state ss;
-
- if (!snl_init(&amp;ss, NETLINK_ROUTE))
- return (1);
-
- struct {
- struct nlmsghdr hdr;
- struct ifinfomsg ifmsg;
- } msg = {
- .hdr.nlmsg_type = RTM_GETLINK,
- .hdr.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
- .hdr.nlmsg_seq = snl_get_seq(&amp;ss),
- };
- msg.hdr.nlmsg_len = sizeof(msg);
-
- if (!snl_send(&amp;ss, &amp;msg, sizeof(msg))) {
- snl_free(&amp;ss);
- return (1);
- }
-
- struct nlmsghdr *hdr;
- while ((hdr = snl_read_message(&amp;ss)) != NULL &amp;&amp; hdr-&gt;nlmsg_type != NLMSG_DONE) {
- if (hdr-&gt;nlmsg_seq != msg.hdr.nlmsg_seq)
- break;
-
- struct nl_parsed_link link = {};
- if (!snl_parse_nlmsg(&amp;ss, hdr, &amp;link_parser, &amp;link))
- continue;
- printf(&quot;Link#%u %s mtu %u\n&quot;, link.ifi_index, link.ifla_ifname, link.ifla_mtu);
- }
-
- return (0);
-}</pre>
-</div>
-</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">genetlink(4)</a>, <a class="Xr">netlink(4)</a>, and
- <a class="Xr">rtnetlink(4)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Dv">SNL</code> library appeared in
- <span class="Ux">FreeBSD 13.2</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">This library was implemented by <span class="An">Alexander
- Chernikov</span>
- &lt;<a class="Mt" href="mailto:melifaro@FreeBSD.org">melifaro@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">December 16, 2022</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/stats.3 3.html b/static/freebsd/man3/stats.3 3.html
deleted file mode 100644
index fb277eab..00000000
--- a/static/freebsd/man3/stats.3 3.html
+++ /dev/null
@@ -1,725 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">STATS(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">STATS(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">stats</code> &#x2014; <span class="Nd">statistics
- gathering</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
-<p class="Pp"><span class="Lb">library &#x201C;libstats&#x201D;</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/arb.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">sys/qmath.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">sys/stats.h</a>&gt;</code></p>
-<section class="Ss">
-<h2 class="Ss" id="Stats_Blob_Template_Management_Functions"><a class="permalink" href="#Stats_Blob_Template_Management_Functions">Stats
- Blob Template Management Functions</a></h2>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_tpl_alloc</code>(<var class="Fa">const char
- *name</var>, <var class="Fa">uint32_t flags</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_tpl_fetch_allocid</code>(<var class="Fa">const char
- *name</var>, <var class="Fa">uint32_t hash</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_tpl_fetch</code>(<var class="Fa">int tpl_id</var>,
- <var class="Fa">struct statsblob_tpl **tpl</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_tpl_id2name</code>(<var class="Fa">uint32_t
- tpl_id</var>, <var class="Fa">char *buf</var>, <var class="Fa">size_t
- len</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_tpl_sample_rates</code>(<var class="Fa">SYSCTL_HANDLER_ARGS</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_tpl_sample_rollthedice</code>(<var class="Fa">struct
- stats_tpl_sample_rate *rates</var>, <var class="Fa">int nrates</var>,
- <var class="Fa">void *seed_bytes</var>, <var class="Fa">size_t
- seed_len</var>);</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_SUM</code>();</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_MAX</code>();</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_MIN</code>();</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_CRHIST&lt;32|64&gt;_LIN</code>(<var class="Fa">lb</var>,
- <var class="Fa">ub</var>, <var class="Fa">stepinc</var>,
- <var class="Fa">vsdflags</var>);</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_CRHIST&lt;32|64&gt;_EXP</code>(<var class="Fa">lb</var>,
- <var class="Fa">ub</var>, <var class="Fa">stepbase</var>,
- <var class="Fa">stepexp</var>, <var class="Fa">vsdflags</var>);</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_CRHIST&lt;32|64&gt;_LINEXP</code>(<var class="Fa">lb</var>,
- <var class="Fa">ub</var>, <var class="Fa">nlinsteps</var>,
- <var class="Fa">stepbase</var>, <var class="Fa">vsdflags</var>);</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_CRHIST&lt;32|64&gt;_USR</code>(<b class="Sy">HBKTS</b>(<a class="permalink" href="#CRBKT"><b class="Sy" id="CRBKT">CRBKT</b></a>(<i class="Em">lb</i>),
- <i class="Em">...</i>), <var class="Fa">vsdflags</var>);</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_DRHIST&lt;32|64&gt;_USR</code>(<b class="Sy">HBKTS</b>(<a class="permalink" href="#DRBKT"><b class="Sy" id="DRBKT">DRBKT</b></a>(<i class="Em">lb</i>,
- <a class="permalink" href="#ub"><i class="Em" id="ub">ub</i></a>),
- <i class="Em">...</i>), <var class="Fa">vsdflags</var>);</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_DVHIST&lt;32|64&gt;_USR</code>(<b class="Sy">HBKTS</b>(<a class="permalink" href="#DVBKT"><b class="Sy" id="DVBKT">DVBKT</b></a>(<a class="permalink" href="#val"><i class="Em" id="val">val</i></a>),
- <i class="Em">...</i>), <var class="Fa">vsdflags</var>);</p>
-<p class="Pp"><var class="Ft">struct voistatspec</var>
- <br/>
- <code class="Fn">STATS_VSS_TDGSTCLUST&lt;32|64&gt;</code>(<var class="Fa">nctroids</var>,
- <var class="Fa">prec</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_tpl_add_voistats</code>(<var class="Fa">uint32_t
- tpl_id</var>, <var class="Fa">int32_t voi_id</var>, <var class="Fa">const
- char *voi_name</var>, <var class="Fa">enum vsd_dtype voi_dtype</var>,
- <var class="Fa">uint32_t nvss</var>, <var class="Fa">struct voistatspec
- *vss</var>, <var class="Fa">uint32_t flags</var>);</p>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Stats_Blob_Data_Gathering_Functions"><a class="permalink" href="#Stats_Blob_Data_Gathering_Functions">Stats
- Blob Data Gathering Functions</a></h2>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_voi_update_&lt;abs|rel&gt;_&lt;dtype&gt;</code>(<var class="Fa">struct
- statsblob *sb</var>, <var class="Fa">int32_t voi_id</var>,
- <var class="Fa">&lt;dtype&gt; voival</var>);</p>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Stats_Blob_Utility_Functions"><a class="permalink" href="#Stats_Blob_Utility_Functions">Stats
- Blob Utility Functions</a></h2>
-<p class="Pp"><var class="Ft">struct statsblob *</var>
- <br/>
- <code class="Fn">stats_blob_alloc</code>(<var class="Fa">uint32_t
- tpl_id</var>, <var class="Fa">uint32_t flags</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_blob_init</code>(<var class="Fa">struct statsblob
- *sb</var>, <var class="Fa">uint32_t tpl_id</var>, <var class="Fa">uint32_t
- flags</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_blob_clone</code>(<var class="Fa">struct statsblob
- **dst</var>, <var class="Fa">size_t dstmaxsz</var>, <var class="Fa">struct
- statsblob *src</var>, <var class="Fa">uint32_t flags</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">stats_blob_destroy</code>(<var class="Fa">struct statsblob
- *sb</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_voistat_fetch_dptr</code>(<var class="Fa">struct
- statsblob *sb</var>, <var class="Fa">int32_t voi_id</var>,
- <var class="Fa">enum voi_stype stype</var>, <var class="Fa">enum vsd_dtype
- *retdtype</var>, <var class="Fa">struct voistatdata **retvsd</var>,
- <var class="Fa">size_t *retvsdsz</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_voistat_fetch_&lt;dtype&gt;</code>(<var class="Fa">struct
- statsblob *sb</var>, <var class="Fa">int32_t voi_id</var>,
- <var class="Fa">enum voi_stype stype</var>, <var class="Fa">&lt;dtype&gt;
- *ret</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_blob_snapshot</code>(<var class="Fa">struct statsblob
- **dst</var>, <var class="Fa">size_t dstmaxsz</var>, <var class="Fa">struct
- statsblob *src</var>, <var class="Fa">uint32_t flags</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_blob_tostr</code>(<var class="Fa">struct statsblob
- *sb</var>, <var class="Fa">struct sbuf *buf</var>, <var class="Fa">enum
- sb_str_fmt fmt</var>, <var class="Fa">uint32_t flags</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_voistatdata_tostr</code>(<var class="Fa">const struct
- voistatdata *vsd</var>, <var class="Fa">enum vsd_dtype dtype</var>,
- <var class="Fa">enum sb_str_fmt fmt</var>, <var class="Fa">struct sbuf
- *buf</var>, <var class="Fa">int objdump</var>);</p>
-<p class="Pp"><var class="Ft">typedef int</var>
- <br/>
- <code class="Fn">(*stats_blob_visitcb_t)</code>(<var class="Fa" style="white-space: nowrap;">struct
- sb_visit *sbv</var>, <var class="Fa" style="white-space: nowrap;">void
- *usrctx</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">stats_blob_visit</code>(<var class="Fa">struct statsblob
- *sb</var>, <var class="Fa">stats_blob_visitcb_t func</var>,
- <var class="Fa">void *usrctx</var>);</p>
-</section>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The <code class="Nm">stats</code> framework facilitates real-time
- kernel and user space statistics gathering. The framework is built around
- the &#x201C;statsblob&#x201D;, an object embedded within a contiguous memory
- allocation that is mostly opaque to consumers and stores all required state.
- A &#x201C;statsblob&#x201D; object can itself be embedded within other
- objects either directly or indirectly using a pointer.</p>
-<p class="Pp">Objects or subsystems for which statistics are to be gathered are
- initialized from a template &#x201C;statsblob&#x201D;, which acts as the
- blueprint for an arbitrary set of Variables Of Interest (VOIs) and their
- associated statistics. Each template defines a schema plus associated
- metadata, which are kept separate to minimize the memory footprint of
- blobs.</p>
-<p class="Pp">Data gathering hook functions added at appropriate locations
- within the code base of interest feed VOI data into the framework for
- processing.</p>
-<p class="Pp">Each &#x201C;statsblob&#x201D;, consists of a
- <var class="Vt">struct statsblob</var> header and opaque internal blob
- structure per the following diagram:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>---------------------------------------------------------
-| struct | uint8_t |
-| statsblob | opaque[] |
----------------------------------------------------------</pre>
-</div>
-<p class="Pp">The publicly visible 8-byte header is defined as:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct statsblob {
- uint8_t abi;
- uint8_t endian;
- uint16_t flags;
- uint16_t maxsz;
- uint16_t cursz;
- uint8_t opaque[];
-};</pre>
-</div>
-<p class="Pp"><var class="Va">abi</var> specifies which API version the blob's
- <var class="Va">opaque</var> internals conform to
- (<code class="Dv">STATS_ABI_V1 is the only version currently
- defined</code>). <var class="Va">endian</var> specifies the endianness of
- the blob's fields (<code class="Dv">SB_LE</code> for little endian,
- <code class="Dv">SB_BE</code> for big endian, or
- <code class="Dv">SB_UE</code> for unknown endianness).
- <var class="Va">cursz</var> specifies the size of the blob, while
- <var class="Va">maxsz</var> specifies the size of the underlying memory
- allocation in which the blob is embedded. Both <var class="Va">cursz</var>
- and <var class="Va">maxsz</var> default to units of bytes, unless a flag is
- set in <var class="Va">flags</var> that dictates otherwise.</p>
-<p class="Pp">Templates are constructed by associating arbitrary VOI IDs with a
- set of statistics, where each statistic is specified using a
- <var class="Vt">struct voistatspec</var> per the definition below:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct voistatspec {
- vss_hlpr_fn hlpr;
- struct vss_hlpr_info *hlprinfo;
- struct voistatdata *iv;
- size_t vsdsz;
- uint32_t flags;
- enum vsd_dtype vs_dtype : 8;
- enum voi_stype stype : 8;
-};</pre>
-</div>
-<p class="Pp" id="STATS_VSS_*">It is generally expected that consumers will not
- work with <var class="Vt">struct voistatspec</var> directly, and instead use
- the
- <a class="permalink" href="#STATS_VSS_*"><code class="Fn">STATS_VSS_*</code></a>()
- helper macros.</p>
-<p class="Pp">The <code class="Nm">stats</code> framework offers the following
- statistics for association with VOIs:</p>
-<dl class="Bl-tag">
- <dt id="VS_STYPE_SUM"><a class="permalink" href="#VS_STYPE_SUM"><code class="Dv">VS_STYPE_SUM</code></a></dt>
- <dd>The sum of VOI values.</dd>
- <dt id="VS_STYPE_MAX"><a class="permalink" href="#VS_STYPE_MAX"><code class="Dv">VS_STYPE_MAX</code></a></dt>
- <dd>The maximum VOI value.</dd>
- <dt id="VS_STYPE_MIN"><a class="permalink" href="#VS_STYPE_MIN"><code class="Dv">VS_STYPE_MIN</code></a></dt>
- <dd>The minimum VOI value.</dd>
- <dt id="VS_STYPE_HIST"><a class="permalink" href="#VS_STYPE_HIST"><code class="Dv">VS_STYPE_HIST</code></a></dt>
- <dd>A static bucket histogram of VOI values, including a count of
- &#x201C;out-of-band/bucket&#x201D; values which did not match any bucket.
- Histograms can be specified as
- &#x201C;<a class="permalink" href="#C"><i class="Em" id="C">C</i></a>ontinuous
- <i class="Em">R</i>ange&#x201D; (CRHIST),
- &#x201C;<i class="Em">D</i>iscrete <i class="Em">R</i>ange&#x201D;
- (DRHIST) or &#x201C;<i class="Em">D</i>iscrete
- <a class="permalink" href="#V"><i class="Em" id="V">V</i></a>alue&#x201D;
- (DVHIST), with 32 or 64 bit bucket counters, depending on the VOI
- semantics.</dd>
- <dt id="VS_STYPE_TDGST"><a class="permalink" href="#VS_STYPE_TDGST"><code class="Dv">VS_STYPE_TDGST</code></a></dt>
- <dd>A dynamic bucket histogram of VOI values based on the t-digest method
- (refer to the t-digest paper in the <a class="Sx" href="#SEE_ALSO">SEE
- ALSO</a> section below).</dd>
-</dl>
-<p class="Pp">A &#x201C;visitor software design pattern&#x201D;-like scheme is
- employed to facilitate iterating over a blob's data without concern for the
- blob's structure. The data provided to visitor callback functions is
- encapsulated in <var class="Vt">struct sb_visit</var> per the definition
- below:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct sb_visit {
- struct voistatdata *vs_data;
- uint32_t tplhash;
- uint32_t flags;
- int16_t voi_id;
- int16_t vs_dsz;
- enum vsd_dtype voi_dtype : 8;
- enum vsd_dtype vs_dtype : 8;
- int8_t vs_stype;
- uint16_t vs_errs;
-};</pre>
-</div>
-<p class="Pp" id="stats_tpl_sample_rates">The
- <a class="permalink" href="#stats_tpl_sample_rates"><code class="Fn">stats_tpl_sample_rates</code></a>()
- and <code class="Fn">stats_tpl_sample_rollthedice</code>() functions utilize
- <var class="Vt">struct stats_tpl_sample_rate</var> to encapsulate
- per-template sample rate information per the definition below:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct stats_tpl_sample_rate {
- int32_t tpl_slot_id;
- uint32_t tpl_sample_pct;
-};</pre>
-</div>
-<p class="Pp" id="stats_tpl_alloc">The <var class="Va">tpl_slot_id</var> member
- holds the template's slot ID obtained from
- <a class="permalink" href="#stats_tpl_alloc"><code class="Fn">stats_tpl_alloc</code></a>()
- or <code class="Fn">stats_tpl_fetch_allocid</code>(). The
- <var class="Va">tpl_sample_pct</var> member holds the template's sample rate
- as an integer percentage in the range [0,100].</p>
-<p class="Pp" id="stats_tpl_sample_rates~2">The
- <var class="Vt">stats_tpl_sr_cb_t</var> conformant function pointer that is
- required as the <var class="Fa">arg1</var> of
- <a class="permalink" href="#stats_tpl_sample_rates~2"><code class="Fn">stats_tpl_sample_rates</code></a>()
- is defined as:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>enum stats_tpl_sr_cb_action {
- TPL_SR_UNLOCKED_GET,
- TPL_SR_RLOCKED_GET,
- TPL_SR_RUNLOCK,
- TPL_SR_PUT
-};
-typedef int (*stats_tpl_sr_cb_t)(enum stats_tpl_sr_cb_action action,
- struct stats_tpl_sample_rate **rates, int *nrates, void *ctx);</pre>
-</div>
-<p class="Pp">It is required that a conformant function:</p>
-<ul class="Bl-dash">
- <li>Return an appropriate <a class="Xr">errno(2)</a> on error, otherwise
- 0.</li>
- <li>When called with &quot;action == TPL_SR_*_GET&quot;, return the
- subsystem's rates list ptr and count, locked or unlocked as
- requested.</li>
- <li>When called with &quot;action == TPL_SR_RUNLOCK&quot;, unlock the
- subsystem's rates list ptr and count. Pair with a prior &quot;action ==
- TPL_SR_RLOCKED_GET&quot; call.</li>
- <li id="stats_tpl_sample_rates~3">When called with &quot;action ==
- TPL_SR_PUT&quot;, update the subsystem's rates list ptr and count to the
- sysctl processed values and return the inactive list details in
- <var class="Fa">rates</var> and <var class="Fa">nrates</var> for garbage
- collection by
- <a class="permalink" href="#stats_tpl_sample_rates~3"><code class="Fn">stats_tpl_sample_rates</code></a>().</li>
-</ul>
-<p class="Pp">Where templates need to be referenced via textual means, for
- example via a MIB variable, the following string based template spec formats
- can be used:</p>
-<ol class="Bl-enum">
- <li>&quot;&lt;tplname&gt;&quot;:&lt;tplhash&gt;, for example
- &quot;TCP_DEFAULT&quot;:1731235399</li>
- <li>&quot;&lt;tplname&gt;&quot;, for example &quot;TCP_DEFAULT&quot;</li>
- <li>:&lt;tplhash&gt;, for example :1731235399</li>
-</ol>
-<p class="Pp">The first form is the normative spec format generated by the
- framework, while the second and third forms are convenience formats
- primarily for user input. The use of inverted commas around the template
- name is optional.</p>
-<section class="Ss">
-<h2 class="Ss" id="MIB_Variables"><a class="permalink" href="#MIB_Variables">MIB
- Variables</a></h2>
-<p class="Pp">The in-kernel <code class="Nm">stats</code> framework exposes the
- following framework-specific variables in the
- <var class="Va">kern.stats</var> branch of the <a class="Xr">sysctl(3)</a>
- MIB.</p>
-<dl class="Bl-tag">
- <dt>templates</dt>
- <dd>Read-only CSV list of registered templates in normative template spec
- form.</dd>
-</dl>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Template_Management_Functions"><a class="permalink" href="#Template_Management_Functions">Template
- Management Functions</a></h2>
-<p class="Pp">The
- <a class="permalink" href="#stats_tpl_alloc~2"><code class="Fn" id="stats_tpl_alloc~2">stats_tpl_alloc</code></a>()
- function allocates a new template with the specified unique name and returns
- its runtime-stable template slot ID for use with other API functions. The
- <var class="Fa">flags</var> argument is currently unused.</p>
-<p class="Pp" id="stats_tpl_fetch_allocid">The
- <a class="permalink" href="#stats_tpl_fetch_allocid"><code class="Fn">stats_tpl_fetch_allocid</code></a>()
- function returns the runtime-stable template slot ID of any registered
- template matching the specified name and hash.</p>
-<p class="Pp" id="stats_tpl_fetch">The
- <a class="permalink" href="#stats_tpl_fetch"><code class="Fn">stats_tpl_fetch</code></a>()
- function returns the pointer to the registered template object at the
- specified template slot ID.</p>
-<p class="Pp" id="stats_tpl_id2name">The
- <a class="permalink" href="#stats_tpl_id2name"><code class="Fn">stats_tpl_id2name</code></a>()
- function returns the name of the registered template object at the specified
- template slot ID.</p>
-<p class="Pp" id="stats_tpl_sample_rates~4">The
- <a class="permalink" href="#stats_tpl_sample_rates~4"><code class="Fn">stats_tpl_sample_rates</code></a>()
- function provides a generic handler for template sample rates management and
- reporting via <a class="Xr">sysctl(3)</a> MIB variables. Subsystems can use
- this function to create a subsystem-specific
- <a class="Xr">SYSCTL_PROC(9)</a> MIB variable that manages and reports
- subsystem-specific template sampling rates. Subsystems must supply a
- <var class="Vt">stats_tpl_sr_cb_t</var> conformant function pointer as the
- sysctl's <var class="Fa">arg1</var>, which is a callback used to interact
- with the subsystem's stats template sample rates list. Subsystems can
- optionally specify the sysctl's <var class="Fa">arg2</var> as non-zero,
- which causes a zero-initialized allocation of arg2-sized contextual memory
- to be heap-allocated and passed in to all subsystem callbacks made during
- the operation of <code class="Fn">stats_tpl_sample_rates</code>().</p>
-<p class="Pp" id="stats_tpl_sample_rollthedice">The
- <a class="permalink" href="#stats_tpl_sample_rollthedice"><code class="Fn">stats_tpl_sample_rollthedice</code></a>()
- function makes a weighted random template selection from the supplied array
- of template sampling rates. The cumulative percentage of all sampling rates
- should not exceed 100. If no seed is supplied, a PRNG is used to generate a
- true random number so that every selection is independent. If a seed is
- supplied, selection will be made randomly across different seeds, but
- deterministically given the same seed.</p>
-<p class="Pp" id="stats_tpl_add_voistats">The
- <a class="permalink" href="#stats_tpl_add_voistats"><code class="Fn">stats_tpl_add_voistats</code></a>()
- function is used to add a VOI and associated set of statistics to the
- registered template object at the specified template slot ID. The set of
- statistics is passed as an array of <var class="Vt">struct voistatspec</var>
- which can be initialized using the <code class="Fn">STATS_VSS_*</code>()
- helper macros or manually for non-standard use cases. For static
- <var class="Fa">vss</var> arrays, the <var class="Fa">nvss</var> count of
- array elements can be determined by passing <var class="Fa">vss</var> to the
- <a class="permalink" href="#NVSS"><code class="Fn" id="NVSS">NVSS</code></a>()
- macro. The <code class="Dv">SB_VOI_RELUPDATE</code> flag can be passed to
- configure the VOI for use with
- <a class="permalink" href="#stats_voi_update_rel__dtype_"><code class="Fn" id="stats_voi_update_rel__dtype_">stats_voi_update_rel_&lt;dtype&gt;</code></a>(),
- which entails maintaining an extra 8 bytes of state in the blob at each
- update.</p>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Data_Gathering_Functions"><a class="permalink" href="#Data_Gathering_Functions">Data
- Gathering Functions</a></h2>
-<p class="Pp">The
- <a class="permalink" href="#stats_voi_update_abs__dtype_"><code class="Fn" id="stats_voi_update_abs__dtype_">stats_voi_update_abs_&lt;dtype&gt;</code></a>()
- and <code class="Fn">stats_voi_update_rel_&lt;dtype&gt;</code>() functions
- both update all the statistics associated with the VOI identified by
- <var class="Fa">voi_id</var>. The &#x201C;abs&#x201D; call uses
- <var class="Fa">voival</var> as an absolute value, whereas the
- &#x201C;rel&#x201D; call uses <var class="Fa">voival</var> as a value
- relative to that of the previous update function call, by adding it to the
- previous value and using the result for the update. Relative updates are
- only possible for VOIs that were added to the template with the
- <code class="Dv">SB_VOI_RELUPDATE</code> flag specified to
- <code class="Fn">stats_tpl_add_voistats</code>().</p>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Utility_Functions"><a class="permalink" href="#Utility_Functions">Utility
- Functions</a></h2>
-<p class="Pp">The <code class="Fn">stats_blob_alloc</code>() function allocates
- and initializes a new blob based on the registered template object at the
- specified template slot ID.</p>
-<p class="Pp" id="stats_blob_init">The
- <a class="permalink" href="#stats_blob_init"><code class="Fn">stats_blob_init</code></a>()
- function initializes a new blob in an existing memory allocation based on
- the registered template object at the specified template slot ID.</p>
-<p class="Pp" id="stats_blob_clone">The
- <a class="permalink" href="#stats_blob_clone"><code class="Fn">stats_blob_clone</code></a>()
- function duplicates the <var class="Fa">src</var> blob into
- <var class="Fa">dst</var>, leaving only the <var class="Va">maxsz</var>
- field of <var class="Fa">dst</var> untouched. The
- <code class="Dv">SB_CLONE_ALLOCDST</code> flag can be passed to instruct the
- function to allocate a new blob of appropriate size into which to clone
- <var class="Fa">src</var>, storing the new pointer in
- <var class="Fa">*dst</var>. The
- <code class="Dv">SB_CLONE_USRDSTNOFAULT</code> or
- <code class="Dv">SB_CLONE_USRDST</code> flags can be set to respectively
- signal that <a class="Xr">copyout_nofault(9)</a> or
- <a class="Xr">copyout(9)</a> should be used because
- <var class="Fa">*dst</var> is a user space address.</p>
-<p class="Pp" id="stats_blob_snapshot">The
- <a class="permalink" href="#stats_blob_snapshot"><code class="Fn">stats_blob_snapshot</code></a>()
- function calls <code class="Fn">stats_blob_clone</code>() to obtain a copy
- of <var class="Fa">src</var> and then performs any additional functions
- required to produce a coherent blob snapshot. The flags interpreted by
- <code class="Fn">stats_blob_clone</code>() also apply to
- <code class="Fn">stats_blob_snapshot</code>(). Additionally, the
- <code class="Dv">SB_CLONE_RSTSRC</code> flag can be used to effect a reset
- of the <var class="Fa">src</var> blob's statistics after a snapshot is
- successfully taken.</p>
-<p class="Pp" id="stats_blob_destroy">The
- <a class="permalink" href="#stats_blob_destroy"><code class="Fn">stats_blob_destroy</code></a>()
- function destroys a blob previously created with
- <a class="permalink" href="#stats_blob_alloc"><code class="Fn" id="stats_blob_alloc">stats_blob_alloc</code></a>(),
- <code class="Fn">stats_blob_clone</code>() or
- <code class="Fn">stats_blob_snapshot</code>().</p>
-<p class="Pp" id="stats_blob_visit">The
- <a class="permalink" href="#stats_blob_visit"><code class="Fn">stats_blob_visit</code></a>()
- function allows the caller to iterate over the contents of a blob. The
- callback function <var class="Fa">func</var> is called for every VOI and
- statistic in the blob, passing a <var class="Vt">struct sb_visit</var> and
- the user context argument <var class="Fa">usrctx</var> to the callback
- function. The <var class="Fa">sbv</var> passed to the callback function may
- have one or more of the following flags set in the
- <var class="Va">flags</var> struct member to provide useful metadata about
- the iteration: <code class="Dv">SB_IT_FIRST_CB</code>,
- <code class="Dv">SB_IT_LAST_CB</code>,
- <code class="Dv">SB_IT_FIRST_VOI</code>,
- <code class="Dv">SB_IT_LAST_VOI</code>,
- <code class="Dv">SB_IT_FIRST_VOISTAT</code>,
- <code class="Dv">SB_IT_LAST_VOISTAT</code>,
- <code class="Dv">SB_IT_NULLVOI</code> and
- <code class="Dv">SB_IT_NULLVOISTAT</code>. Returning a non-zero value from
- the callback function terminates the iteration.</p>
-<p class="Pp" id="stats_blob_tostr">The
- <a class="permalink" href="#stats_blob_tostr"><code class="Fn">stats_blob_tostr</code></a>()
- renders a string representation of a blob into the <a class="Xr">sbuf(9)</a>
- <var class="Fa">buf</var>. Currently supported render formats are
- <code class="Dv">SB_STRFMT_FREEFORM</code> and
- <code class="Dv">SB_STRFMT_JSON</code>. The
- <code class="Dv">SB_TOSTR_OBJDUMP</code> flag can be passed to render
- version specific opaque implementation detail for debugging or
- string-to-binary blob reconstruction purposes. The
- <code class="Dv">SB_TOSTR_META</code> flag can be passed to render template
- metadata into the string representation, using the blob's template hash to
- lookup the corresponding template.</p>
-<p class="Pp" id="stats_voistatdata_tostr">The
- <a class="permalink" href="#stats_voistatdata_tostr"><code class="Fn">stats_voistatdata_tostr</code></a>()
- renders a string representation of an individual statistic's data into the
- <a class="Xr">sbuf(9)</a> <var class="Fa">buf</var>. The same render formats
- supported by the <code class="Fn">stats_blob_tostr</code>() function can be
- specified, and the <var class="Fa">objdump</var> boolean has the same
- meaning as the <code class="Dv">SB_TOSTR_OBJDUMP</code> flag.</p>
-<p class="Pp" id="stats_voistat_fetch_dptr">The
- <a class="permalink" href="#stats_voistat_fetch_dptr"><code class="Fn">stats_voistat_fetch_dptr</code></a>()
- function returns an internal blob pointer to the specified
- <var class="Fa">stype</var> statistic data for the VOI
- <var class="Fa">voi_id</var>. The
- <a class="permalink" href="#stats_voistat_fetch__dtype_"><code class="Fn" id="stats_voistat_fetch__dtype_">stats_voistat_fetch_&lt;dtype&gt;</code></a>()
- functions are convenience wrappers around
- <code class="Fn">stats_voistat_fetch_dptr</code>() to perform the extraction
- for simple data types.</p>
-</section>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">The following notes apply to STATS_ABI_V1 format statsblobs.</p>
-<section class="Ss">
-<h2 class="Ss" id="Space-Time_Complexity"><a class="permalink" href="#Space-Time_Complexity">Space-Time
- Complexity</a></h2>
-<p class="Pp">Blobs are laid out as three distinct memory regions following the
- header:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>------------------------------------------------------
-| struct | struct | struct | struct |
-| statsblobv1 | voi [] | voistat [] | voistatdata [] |
-------------------------------------------------------</pre>
-</div>
-<p class="Pp">Blobs store VOI and statistic blob state (8 bytes for
- <var class="Vt">struct voi</var> and 8 bytes for <var class="Vt">struct
- voistat</var> respectively) in sparse arrays, using the
- <var class="Fa">voi_id</var> and <var class="Vt">enum voi_stype</var> as
- array indices. This allows O(1) access to any voi/voistat pair in the blob,
- at the expense of 8 bytes of wasted memory per vacant slot for templates
- which do not specify contiguously numbered VOIs and/or statistic types. Data
- storage for statistics is only allocated for non-vacant slot pairs.</p>
-<p class="Pp">To provide a concrete example, a blob with the following
- specification:</p>
-<ul class="Bl-dash">
- <li>Two VOIs; ID 0 and 2; added to the template in that order</li>
- <li>VOI 0 is of data type <var class="Vt">int64_t</var>, is configured with
- <code class="Dv">SB_VOI_RELUPDATE</code> to enable support for relative
- updates using
- <code class="Fn">stats_voi_update_rel_&lt;dtype&gt;</code>(), and has a
- <code class="Dv">VS_STYPE_MIN</code> statistic associated with it.</li>
- <li>VOI 2 is of data type <var class="Vt">uint32_t</var> with
- <code class="Dv">VS_STYPE_SUM</code> and
- <code class="Dv">VS_STYPE_MAX</code> statistics associated with it.</li>
-</ul>
-<p class="Pp">would have the following memory layout:</p>
-<div class="Bd Pp Li">
-<pre>--------------------------------------
-| header | struct statsblobv1, 32 bytes
-|------------------------------------|
-| voi[0] | struct voi, 8 bytes
-| voi[1] (vacant) | struct voi, 8 bytes
-| voi[2] | struct voi, 8 bytes
-|------------------------------------|
-| voi[2]voistat[VOISTATE] (vacant) | struct voistat, 8 bytes
-| voi[2]voistat[SUM] | struct voistat, 8 bytes
-| voi[2]voistat[MAX] | struct voistat, 8 bytes
-| voi[0]voistat[VOISTATE] | struct voistat, 8 bytes
-| voi[0]voistat[SUM] (vacant) | struct voistat, 8 bytes
-| voi[0]voistat[MAX] (vacant) | struct voistat, 8 bytes
-| voi[0]voistat[MIN] | struct voistat, 8 bytes
-|------------------------------------|
-| voi[2]voistat[SUM]voistatdata | struct voistatdata_int32, 4 bytes
-| voi[2]voistat[MAX]voistatdata | struct voistatdata_int32, 4 bytes
-| voi[0]voistat[VOISTATE]voistatdata | struct voistatdata_numeric, 8 bytes
-| voi[0]voistat[MIN]voistatdata | struct voistatdata_int64, 8 bytes
---------------------------------------
- TOTAL 136 bytes</pre>
-</div>
-<p class="Pp">When rendered to string format using
- <code class="Fn">stats_blob_tostr</code>(), the
- <code class="Dv">SB_STRFMT_FREEFORM</code> <var class="Fa">fmt</var> and the
- <code class="Dv">SB_TOSTR_OBJDUMP</code> flag, the rendered output is:</p>
-<div class="Bd Pp Li">
-<pre>struct statsblobv1@0x8016250a0, abi=1, endian=1, maxsz=136, cursz=136, \
- created=6294158585626144, lastrst=6294158585626144, flags=0x0000, \
- stats_off=56, statsdata_off=112, tplhash=2994056564
- vois[0]: id=0, name=&quot;&quot;, flags=0x0001, dtype=INT_S64, voistatmaxid=3, \
- stats_off=80
- vois[0]stat[0]: stype=VOISTATE, flags=0x0000, dtype=VOISTATE, \
- dsz=8, data_off=120
- voistatdata: prev=0
- vois[0]stat[1]: stype=-1
- vois[0]stat[2]: stype=-1
- vois[0]stat[3]: stype=MIN, flags=0x0000, dtype=INT_S64, \
- dsz=8, data_off=128
- voistatdata: 9223372036854775807
- vois[1]: id=-1
- vois[2]: id=2, name=&quot;&quot;, flags=0x0000, dtype=INT_U32, voistatmaxid=2, \
- stats_off=56
- vois[2]stat[0]: stype=-1
- vois[2]stat[1]: stype=SUM, flags=0x0000, dtype=INT_U32, dsz=4, \
- data_off=112
- voistatdata: 0
- vois[2]stat[2]: stype=MAX, flags=0x0000, dtype=INT_U32, dsz=4, \
- data_off=116
- voistatdata: 0</pre>
-</div>
-<p class="Pp">Note: The &quot;\&quot; present in the rendered output above
- indicates a manual line break inserted to keep the man page within 80
- columns and is not part of the actual output.</p>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Locking"><a class="permalink" href="#Locking">Locking</a></h2>
-<p class="Pp">The <code class="Nm">stats</code> framework does not provide any
- concurrency protection at the individual blob level, instead requiring that
- consumers guarantee mutual exclusion when calling API functions that
- reference a non-template blob.</p>
-<p class="Pp">The list of templates is protected with a
- <a class="Xr">rwlock(9)</a> in-kernel, and <a class="Xr">pthread(3)</a> rw
- lock in user space to support concurrency between template management and
- blob initialization operations.</p>
-</section>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp"><code class="Fn">stats_tpl_alloc</code>() returns a runtime-stable
- template slot ID on success, or a negative errno on failure. -EINVAL is
- returned if any problems are detected with the arguments. -EEXIST is
- returned if an existing template is registered with the same name. -ENOMEM
- is returned if a required memory allocation fails.</p>
-<p class="Pp"><code class="Fn">stats_tpl_fetch_allocid</code>() returns a
- runtime-stable template slot ID, or negative errno on failure. -ESRCH is
- returned if no registered template matches the specified name and/or
- hash.</p>
-<p class="Pp"><code class="Fn">stats_tpl_fetch</code>() returns 0 on success, or
- ENOENT if an invalid <var class="Fa">tpl_id</var> is specified.</p>
-<p class="Pp"><code class="Fn">stats_tpl_id2name</code>() returns 0 on success,
- or an errno on failure. EOVERFLOW is returned if the length of
- <var class="Fa">buf</var> specified by <var class="Fa">len</var> is too
- short to hold the template's name. ENOENT is returned if an invalid
- <var class="Fa">tpl_id</var> is specified.</p>
-<p class="Pp"><code class="Fn">stats_tpl_sample_rollthedice</code>() returns a
- valid template slot id selected from <var class="Fa">rates</var> or -1 if a
- NULL selection was made, that is no stats collection this roll.</p>
-<p class="Pp"><code class="Fn">stats_tpl_add_voistats</code>() return 0 on
- success, or an errno on failure. EINVAL is returned if any problems are
- detected with the arguments. EFBIG is returned if the resulting blob would
- have exceeded the maximum size. EOPNOTSUPP is returned if an attempt is made
- to add more VOI stats to a previously configured VOI. ENOMEM is returned if
- a required memory allocation fails.</p>
-<p class="Pp"><code class="Fn">stats_voi_update_abs_&lt;dtype&gt;</code>() and
- <code class="Fn">stats_voi_update_rel_&lt;dtype&gt;</code>() return 0 on
- success, or EINVAL if any problems are detected with the arguments.</p>
-<p class="Pp"><code class="Fn">stats_blob_init</code>() returns 0 on success, or
- an errno on failure. EINVAL is returned if any problems are detected with
- the arguments. EOVERFLOW is returned if the template blob's
- <var class="Fa">cursz</var> is larger than the <var class="Fa">maxsz</var>
- of the blob being initialized.</p>
-<p class="Pp"><code class="Fn">stats_blob_alloc</code>() returns a pointer to a
- newly allocated and initialized blob based on the specified template with
- slot ID <var class="Fa">tpl_id</var>, or NULL if the memory allocation
- failed.</p>
-<p class="Pp"><code class="Fn">stats_blob_clone</code>() and
- <code class="Fn">stats_blob_snapshot</code>() return 0 on success, or an
- errno on failure. EINVAL is returned if any problems are detected with the
- arguments. ENOMEM is returned if the SB_CLONE_ALLOCDST flag was specified
- and the memory allocation for <var class="Fa">dst</var> fails. EOVERFLOW is
- returned if the src blob's <var class="Fa">cursz</var> is larger than the
- <var class="Fa">maxsz</var> of the <var class="Fa">dst</var> blob.</p>
-<p class="Pp"><code class="Fn">stats_blob_visit</code>() returns 0 on success,
- or EINVAL if any problems are detected with the arguments.</p>
-<p class="Pp"><code class="Fn">stats_blob_tostr</code>() and
- <code class="Fn">stats_voistatdata_tostr</code>() return 0 on success, or an
- errno on failure. EINVAL is returned if any problems are detected with the
- arguments, otherwise any error returned by
- <code class="Fn">sbuf_error</code>() for <var class="Fa">buf</var> is
- returned.</p>
-<p class="Pp"><code class="Fn">stats_voistat_fetch_dptr</code>() returns 0 on
- success, or EINVAL if any problems are detected with the arguments.</p>
-<p class="Pp"><code class="Fn">stats_voistat_fetch_&lt;dtype&gt;</code>()
- returns 0 on success, or an errno on failure. EINVAL is returned if any
- problems are detected with the arguments. EFTYPE is returned if the
- requested data type does not match the blob's data type for the specified
- <var class="Fa">voi_id</var> and <var class="Fa">stype</var>.</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">errno(2)</a>, <a class="Xr">arb(3)</a>,
- <a class="Xr">qmath(3)</a>, <a class="Xr">tcp(4)</a>,
- <a class="Xr">sbuf(9)</a></p>
-<p class="Pp"><cite class="Rs"><span class="RsA">Ted Dunning</span> and
- <span class="RsA">Otmar Ertl</span>, <span class="RsT">Computing Extremely
- Accurate Quantiles Using t-digests</span>,
- <a class="RsU" href="https://github.com/tdunning/t-digest/raw/master/docs/t-digest-paper/histo.pdf">https://github.com/tdunning/t-digest/raw/master/docs/t-digest-paper/histo.pdf</a>.</cite></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">stats</code> framework first appeared in
- <span class="Ux">FreeBSD 13.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <code class="Nm">stats</code> framework and this manual page
- were written by <span class="An">Lawrence Stewart</span>
- &#x27E8;lstewart@FreeBSD.org&#x27E9; and sponsored by Netflix, Inc.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="CAVEATS"><a class="permalink" href="#CAVEATS">CAVEATS</a></h1>
-<p class="Pp">Granularity of timing-dependent network statistics, in particular
- TCP_RTT, depends on the <code class="Dv">HZ</code> timer. To minimize the
- measurement error avoid using HZ lower than 1000.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">December 2, 2019</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/stdarg.3 3.html b/static/freebsd/man3/stdarg.3 3.html
deleted file mode 100644
index 287f235a..00000000
--- a/static/freebsd/man3/stdarg.3 3.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">STDARG(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">STDARG(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">stdarg</code> &#x2014; <span class="Nd">variable
- argument lists</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">stdarg.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">va_start</code>(<var class="Fa" style="white-space: nowrap;">va_list
- ap</var>, <var class="Fa" style="white-space: nowrap;">last</var>);</p>
-<p class="Pp"><var class="Ft">type</var>
- <br/>
- <code class="Fn">va_arg</code>(<var class="Fa" style="white-space: nowrap;">va_list
- ap</var>, <var class="Fa" style="white-space: nowrap;">type</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">va_copy</code>(<var class="Fa" style="white-space: nowrap;">va_list
- dest</var>, <var class="Fa" style="white-space: nowrap;">va_list
- src</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">va_end</code>(<var class="Fa" style="white-space: nowrap;">va_list
- ap</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">A function may be called with a varying number of arguments of
- varying types. The include file
- <code class="In">&lt;<a class="In">stdarg.h</a>&gt;</code> declares a type
- (<i class="Em">va_list</i>) and defines four macros for stepping through a
- list of arguments whose number and types are not known to the called
- function.</p>
-<p class="Pp" id="va_start">The called function must declare an object of type
- <i class="Em">va_list</i> which is used by the macros
- <a class="permalink" href="#va_start"><code class="Fn">va_start</code></a>(),
- <code class="Fn">va_arg</code>(), <code class="Fn">va_copy</code>(), and
- <code class="Fn">va_end</code>().</p>
-<p class="Pp" id="va_start~2">The
- <a class="permalink" href="#va_start~2"><code class="Fn">va_start</code></a>()
- macro initializes <var class="Fa">ap</var> for subsequent use by
- <code class="Fn">va_arg</code>(), <code class="Fn">va_copy</code>(), and
- <code class="Fn">va_end</code>(), and must be called first.</p>
-<p class="Pp">The parameter <var class="Fa">last</var> is the name of the last
- parameter before the variable argument list, i.e., the last parameter of
- which the calling function knows the type.</p>
-<p class="Pp" id="va_start~3">Because the address of this parameter is used in
- the
- <a class="permalink" href="#va_start~3"><code class="Fn">va_start</code></a>()
- macro, it should not be declared as a register variable, or as a function or
- an array type.</p>
-<p class="Pp" id="va_arg">The
- <a class="permalink" href="#va_arg"><code class="Fn">va_arg</code></a>()
- macro expands to an expression that has the type and value of the next
- argument in the call. The parameter <var class="Fa">ap</var> is the
- <i class="Em">va_list</i> <var class="Fa">ap</var> initialized by
- <code class="Fn">va_start</code>() or <code class="Fn">va_copy</code>().
- Each call to <code class="Fn">va_arg</code>() modifies
- <var class="Fa">ap</var> so that the next call returns the next argument.
- The parameter <var class="Fa">type</var> is a type name specified so that
- the type of a pointer to an object that has the specified type can be
- obtained simply by adding a * to <var class="Fa">type</var>.</p>
-<p class="Pp">If there is no next argument, or if <var class="Fa">type</var> is
- not compatible with the type of the actual next argument (as promoted
- according to the default argument promotions), random errors will occur.</p>
-<p class="Pp" id="va_arg~2">The first use of the
- <a class="permalink" href="#va_arg~2"><code class="Fn">va_arg</code></a>()
- macro after that of the <code class="Fn">va_start</code>() macro returns the
- argument after <var class="Fa">last</var>. Successive invocations return the
- values of the remaining arguments.</p>
-<p class="Pp" id="va_copy">The
- <a class="permalink" href="#va_copy"><code class="Fn">va_copy</code></a>()
- macro copies a variable argument list, previously initialized by
- <code class="Fn">va_start</code>(), from <var class="Fa">src</var> to
- <var class="Fa">dest</var>. The state is preserved such that it is
- equivalent to calling <code class="Fn">va_start</code>() with the same
- second argument used with <var class="Fa">src</var>, and calling
- <code class="Fn">va_arg</code>() the same number of times as called with
- <var class="Fa">src</var>.</p>
-<p class="Pp" id="va_end">The
- <a class="permalink" href="#va_end"><code class="Fn">va_end</code></a>()
- macro cleans up any state associated with the variable argument list
- <var class="Fa">ap</var>.</p>
-<p class="Pp" id="va_start~4">Each invocation of
- <a class="permalink" href="#va_start~4"><code class="Fn">va_start</code></a>()
- or <code class="Fn">va_copy</code>() must be paired with a corresponding
- invocation of <code class="Fn">va_end</code>() in the same function.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Fn">va_arg</code>() macro returns the value of
- the next argument.</p>
-<p class="Pp">The <code class="Fn">va_start</code>(),
- <code class="Fn">va_copy</code>(), and <code class="Fn">va_end</code>()
- macros return no value.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<p class="Pp">The function
- <a class="permalink" href="#foo"><i class="Em" id="foo">foo</i></a> takes a
- string of format characters and prints out the argument associated with each
- format character based on the type.</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>void foo(char *fmt, ...)
-{
- va_list ap;
- int d;
- char c, *s;
-
- va_start(ap, fmt);
- while (*fmt)
- switch(*fmt++) {
- case 's': /* string */
- s = va_arg(ap, char *);
- printf(&quot;string %s\n&quot;, s);
- break;
- case 'd': /* int */
- d = va_arg(ap, int);
- printf(&quot;int %d\n&quot;, d);
- break;
- case 'c': /* char */
- /* Note: char is promoted to int. */
- c = va_arg(ap, int);
- printf(&quot;char %c\n&quot;, c);
- break;
- }
- va_end(ap);
-}</pre>
-</div>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="COMPATIBILITY"><a class="permalink" href="#COMPATIBILITY">COMPATIBILITY</a></h1>
-<p class="Pp">These macros are
- <a class="permalink" href="#not"><i class="Em" id="not">not</i></a>
- compatible with the historic macros they replace.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The <code class="Fn">va_start</code>(),
- <code class="Fn">va_arg</code>(), <code class="Fn">va_copy</code>(), and
- <code class="Fn">va_end</code>() macros conform to <span class="St">ISO/IEC
- 9899:1999 (&#x201C;ISO&#x00A0;C99&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">va_start</code>(),
- <code class="Fn">va_arg</code>() and <code class="Fn">va_end</code>() macros
- were introduced in <span class="St">ANSI X3.159-1989
- (&#x201C;ANSI&#x00A0;C89&#x201D;)</span>. The
- <code class="Fn">va_copy</code>() macro was introduced in
- <span class="St">ISO/IEC 9899:1999
- (&#x201C;ISO&#x00A0;C99&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
-<p class="Pp">Unlike the <i class="Em">varargs</i> macros, the
- <code class="Nm">stdarg</code> macros do not permit programmers to code a
- function with no fixed arguments. This problem generates work mainly when
- converting <i class="Em">varargs</i> code to <code class="Nm">stdarg</code>
- code, but it also creates difficulties for variadic functions that wish to
- pass all of their arguments on to a function that takes a
- <i class="Em">va_list</i> argument, such as
- <a class="Xr">vfprintf(3)</a>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">October 18, 2024</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/stdbit.3 4.html b/static/freebsd/man3/stdbit.3 4.html
deleted file mode 100644
index d2ae955c..00000000
--- a/static/freebsd/man3/stdbit.3 4.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">STDBIT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">STDBIT(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">stdbit</code> &#x2014; <span class="Nd">bit and
- byte utilities</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<p class="Pp"><span class="Lb">Standard C&#x00A0;Library (libc, -lc)</span>
- <br/>
- <code class="In">#include &lt;<a class="In">stdbit.h</a>&gt;</code></p>
-<p class="Pp"><code class="Fd">#define __STDC_ENDIAN_LITTLE__</code>
- <br/>
- <code class="Fd">#define __STDC_ENDIAN_BIG__</code>
- <br/>
- <code class="Fd">#define __STDC_ENDIAN_NATIVE__</code></p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_count_leading_zeros</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_count_leading_ones</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_count_trailing_zeros</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_count_trailing_ones</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_first_leading_zero</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_first_leading_one</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_first_trailing_zero</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_first_trailing_one</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_count_zeros</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_count_ones</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">stdc_has_single_bit</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">unsigned int</var>
- <br/>
- <code class="Fn">stdc_bit_width</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">typeof</var>(<i class="Em">value</i>)
- <br/>
- <code class="Fn">stdc_bit_floor</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-<p class="Pp"><var class="Ft">typeof</var>(<i class="Em">value</i>)
- <br/>
- <code class="Fn">stdc_bit_ceil</code>(<var class="Fa" style="white-space: nowrap;">value</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The <code class="Dv">__STDC_ENDIAN_NATIVE__</code> macro describes
- the byte order or endianness of the machine for which the program is built.
- If the machine has big-endian byte order, this macro is equal to
- <code class="Dv">__STDC_ENDIAN_BIG__</code>. If the machine has
- little-endian byte order, this macro is equal to
- <code class="Dv">__STDC_ENDIAN_LITTLE__</code>. Otherwise, the macro has a
- value that is equal to neither.</p>
-<p class="Pp" id="uc">The bit and byte utility functions analyze the bits within
- a datum. Each function <i class="Em">func</i> is provided in five variants
- <code class="Nm">stdc_</code><i class="Em">func</i><i class="Em">_</i><i class="Em">type</i>(<i class="Em">value</i>)
- where <var class="Fa">value</var> is of type <var class="Va">unsigned
- char</var>, <var class="Va">unsigned short</var>, <var class="Va">unsigned
- int</var>, <var class="Va">unsigned long</var>, or <var class="Va">unsigned
- long long</var> for <i class="Em">type</i> being
- <a class="permalink" href="#uc"><b class="Sy">uc</b></a>,
- <a class="permalink" href="#us"><b class="Sy" id="us">us</b></a>,
- <a class="permalink" href="#ui"><b class="Sy" id="ui">ui</b></a>,
- <a class="permalink" href="#ul"><b class="Sy" id="ul">ul</b></a>, or
- <a class="permalink" href="#ull"><b class="Sy" id="ull">ull</b></a>
- respectively. Additionally, for each <i class="Em">func</i>, a type-generic
- macro
- <code class="Nm">stdc_</code><i class="Em">func</i>(<i class="Em">value</i>)
- that picks the appropriate function
- <code class="Nm">stdc_</code><i class="Em">func</i><i class="Em">_</i><i class="Em">type</i>(<i class="Em">value</i>)
- based on the type of <var class="Fa">value</var> is provided.</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">arch(7)</a>, <a class="Xr">bitstring(3)</a>,
- <a class="Xr">ffs(3)</a>, <a class="Xr">fls(3)</a>,
- <a class="Xr">stdc_count_leading_zeros(3)</a>,
- <a class="Xr">stdc_count_leading_ones(3)</a>,
- <a class="Xr">stdc_count_trailing_zeros(3)</a>,
- <a class="Xr">stdc_count_trailing_ones(3)</a>,
- <a class="Xr">stdc_first_leading_zero(3)</a>,
- <a class="Xr">stdc_first_leading_one(3)</a>,
- <a class="Xr">stdc_first_trailing_zero(3)</a>,
- <a class="Xr">stdc_first_trailing_one(3)</a>,
- <a class="Xr">stdc_count_zeros(3)</a>, <a class="Xr">stdc_count_ones(3)</a>,
- <a class="Xr">stdc_has_single_bit(3)</a>,
- <a class="Xr">stdc_bit_width(3)</a>, <a class="Xr">stdc_bit_floor(3)</a>,
- <a class="Xr">stdc_bit_ceil(3)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The macros and functions of the
- <code class="In">&lt;<a class="In">stdbit.h</a>&gt;</code> header conform
- to.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="In">&lt;<a class="In">stdbit.h</a>&gt;</code>
- header and the macros and functions defined therein where added in
- <span class="Ux">FreeBSD 15.1.</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHOR"><a class="permalink" href="#AUTHOR">AUTHOR</a></h1>
-<p class="Pp"><span class="An">Robert Clausecker</span>
- &lt;<a class="Mt" href="mailto:fuz@FreeBSD.org">fuz@FreeBSD.org</a>&gt;</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">November 9, 2025</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/stdckdint.3 3.html b/static/freebsd/man3/stdckdint.3 3.html
deleted file mode 100644
index 5434f16e..00000000
--- a/static/freebsd/man3/stdckdint.3 3.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">STDCKDINT(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">STDCKDINT(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">stdckdint</code> &#x2014;
- <span class="Nd">checked integer arithmetic</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">stdckdint.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">ckd_add</code>(<var class="Fa" style="white-space: nowrap;">type1
- *result</var>, <var class="Fa" style="white-space: nowrap;">type2 a</var>,
- <var class="Fa" style="white-space: nowrap;">type3 b</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">ckd_sub</code>(<var class="Fa" style="white-space: nowrap;">type1
- *result</var>, <var class="Fa" style="white-space: nowrap;">type2 a</var>,
- <var class="Fa" style="white-space: nowrap;">type3 b</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">ckd_mul</code>(<var class="Fa" style="white-space: nowrap;">type1
- *result</var>, <var class="Fa" style="white-space: nowrap;">type2 a</var>,
- <var class="Fa" style="white-space: nowrap;">type3 b</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The function-like macros <code class="Nm">ckd_add</code>,
- <code class="Nm">ckd_sub</code>, and <code class="Nm">ckd_mul</code> perform
- checked integer addition, subtraction, and multiplication, respectively. If
- the result of adding, subtracting, or multiplying <var class="Fa">a</var>
- and <var class="Fa">b</var> as if their respective types had infinite range
- fits in <var class="Ft">type1</var>, it is stored in the location pointed to
- by <var class="Fa">result</var> and the macro evaluates to
- <code class="Dv">false</code>. Otherwise, the macro evaluates to
- <code class="Dv">true</code> and the contents of the location pointed to by
- <var class="Fa">result</var> is the result of the operation wrapped to the
- range of <var class="Ft">type1</var>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
- VALUES</a></h1>
-<p class="Pp">The <code class="Nm">ckd_add</code>,
- <code class="Nm">ckd_sub</code>, and <code class="Nm">ckd_mul</code> macros
- evaluate to <code class="Dv">true</code> if the requested operation
- overflowed the result type and <code class="Dv">false</code> otherwise.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<div class="Bd Bd-indent Li">
-<pre>#include &lt;assert.h&gt;
-#include &lt;limits.h&gt;
-#include &lt;stdckdint.h&gt;
-
-int main(void)
-{
- int result;
-
- assert(!ckd_add(&amp;result, INT_MAX, 0));
- assert(result == INT_MAX);
- assert(ckd_add(&amp;result, INT_MAX, 1));
- assert(result == INT_MIN);
-
- assert(!ckd_sub(&amp;result, INT_MIN, 0));
- assert(result == INT_MIN);
- assert(ckd_sub(&amp;result, INT_MIN, 1));
- assert(result == INT_MAX);
-
- assert(!ckd_mul(&amp;result, INT_MAX / 2, 2));
- assert(result == INT_MAX - 1);
- assert(ckd_mul(&amp;result, INT_MAX / 2 + 1, 2));
- assert(result == INT_MIN);
-
- return 0;
-}</pre>
-</div>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">ckd_add</code>,
- <code class="Nm">ckd_sub</code>, and <code class="Nm">ckd_mul</code> macros
- were first introduced in <span class="Ux">FreeBSD 14.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <code class="Nm">ckd_add</code>,
- <code class="Nm">ckd_sub</code>, and <code class="Nm">ckd_mul</code> macros
- and this manual page were written by <span class="An">Dag-Erling
- Sm&#x00F8;rgrav</span>
- &lt;<a class="Mt" href="mailto:des@FreeBSD.org">des@FreeBSD.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">September 5, 2023</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/sysexits.3 3.html b/static/freebsd/man3/sysexits.3 3.html
deleted file mode 100644
index 3991825f..00000000
--- a/static/freebsd/man3/sysexits.3 3.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">SYSEXITS(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">SYSEXITS(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">sysexits</code> &#x2014; <span class="Nd">legacy
- exit status codes for system programs</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">sysexits.h</a>&gt;</code></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">Some commands attempt to describe the nature of a failure
- condition by using these pre-defined exit codes. This interface has been
- deprecated and is retained only for compatibility. Its use is
- discouraged.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="ERRORS"><a class="permalink" href="#ERRORS">ERRORS</a></h1>
-<p class="Pp">The successful exit is always indicated by a status of 0, or
- <a class="permalink" href="#EX_OK"><b class="Sy" id="EX_OK">EX_OK</b></a>.
- Error numbers begin at
- <a class="permalink" href="#EX__BASE"><b class="Sy" id="EX__BASE">EX__BASE</b></a>
- to reduce the possibility of clashing with other exit statuses that random
- programs may already return. The meaning of the codes is approximately as
- follows:</p>
-<dl class="Bl-tag">
- <dt id="EX_USAGE"><a class="permalink" href="#EX_USAGE"><b class="Sy">EX_USAGE</b></a>
- (64)</dt>
- <dd>The command was used incorrectly, e.g., with the wrong number of
- arguments, a bad flag, a bad syntax in a parameter, or whatever.</dd>
- <dt id="EX_DATAERR"><a class="permalink" href="#EX_DATAERR"><b class="Sy">EX_DATAERR</b></a>
- (65)</dt>
- <dd>The input data was incorrect in some way. This should only be used for
- user's data and not system files.</dd>
- <dt id="EX_NOINPUT"><a class="permalink" href="#EX_NOINPUT"><b class="Sy">EX_NOINPUT</b></a>
- (66)</dt>
- <dd>An input file (not a system file) did not exist or was not readable. This
- could also include errors like &#x201C;No message&#x201D; to a mailer (if
- it cared to catch it).</dd>
- <dt id="EX_NOUSER"><a class="permalink" href="#EX_NOUSER"><b class="Sy">EX_NOUSER</b></a>
- (67)</dt>
- <dd>The user specified did not exist. This might be used for mail addresses or
- remote logins.</dd>
- <dt id="EX_NOHOST"><a class="permalink" href="#EX_NOHOST"><b class="Sy">EX_NOHOST</b></a>
- (68)</dt>
- <dd>The host specified did not exist. This is used in mail addresses or
- network requests.</dd>
- <dt id="EX_UNAVAILABLE"><a class="permalink" href="#EX_UNAVAILABLE"><b class="Sy">EX_UNAVAILABLE</b></a>
- (69)</dt>
- <dd>A service is unavailable. This can occur if a support program or file does
- not exist. This can also be used as a catchall message when something you
- wanted to do does not work, but you do not know why.</dd>
- <dt id="EX_SOFTWARE"><a class="permalink" href="#EX_SOFTWARE"><b class="Sy">EX_SOFTWARE</b></a>
- (70)</dt>
- <dd>An internal software error has been detected. This should be limited to
- non-operating system related errors as possible.</dd>
- <dt id="EX_OSERR"><a class="permalink" href="#EX_OSERR"><b class="Sy">EX_OSERR</b></a>
- (71)</dt>
- <dd>An operating system error has been detected. This is intended to be used
- for such things as &#x201C;cannot fork&#x201D;, &#x201C;cannot create
- pipe&#x201D;, or the like. It includes things like getuid returning a user
- that does not exist in the passwd file.</dd>
- <dt id="EX_OSFILE"><a class="permalink" href="#EX_OSFILE"><b class="Sy">EX_OSFILE</b></a>
- (72)</dt>
- <dd>Some system file (e.g., <span class="Pa">/etc/passwd</span>,
- <span class="Pa">/var/run/utx.active</span>, etc.) does not exist, cannot
- be opened, or has some sort of error (e.g., syntax error).</dd>
- <dt id="EX_CANTCREAT"><a class="permalink" href="#EX_CANTCREAT"><b class="Sy">EX_CANTCREAT</b></a>
- (73)</dt>
- <dd>A (user specified) output file cannot be created.</dd>
- <dt id="EX_IOERR"><a class="permalink" href="#EX_IOERR"><b class="Sy">EX_IOERR</b></a>
- (74)</dt>
- <dd>An error occurred while doing I/O on some file.</dd>
- <dt id="EX_TEMPFAIL"><a class="permalink" href="#EX_TEMPFAIL"><b class="Sy">EX_TEMPFAIL</b></a>
- (75)</dt>
- <dd>Temporary failure, indicating something that is not really an error. In
- sendmail, this means that a mailer (e.g.) could not create a connection,
- and the request should be reattempted later.</dd>
- <dt id="EX_PROTOCOL"><a class="permalink" href="#EX_PROTOCOL"><b class="Sy">EX_PROTOCOL</b></a>
- (76)</dt>
- <dd>The remote system returned something that was &#x201C;not possible&#x201D;
- during a protocol exchange.</dd>
- <dt id="EX_NOPERM"><a class="permalink" href="#EX_NOPERM"><b class="Sy">EX_NOPERM</b></a>
- (77)</dt>
- <dd>You did not have sufficient permission to perform the operation. This is
- not intended for file system problems, which should use
- <b class="Sy">EX_NOINPUT</b> or <b class="Sy">EX_CANTCREAT</b>, but rather
- for higher level permissions.</dd>
- <dt id="EX_CONFIG"><a class="permalink" href="#EX_CONFIG"><b class="Sy">EX_CONFIG</b></a>
- (78)</dt>
- <dd>Something was found in an unconfigured or misconfigured state.</dd>
-</dl>
-<p class="Pp">The numerical values corresponding to the symbolical ones are
- given in parenthesis for easy reference.</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">err(3)</a>, <a class="Xr">exit(3)</a>,
- <a class="Xr">style(9)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">sysexits</code> file first appeared in
- <span class="Ux">4BSD</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">J&#x00F6;rg
- Wunsch</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
-<dl class="Bl-tag Bl-compact">
- <dt>This interface is not portable.</dt>
- <dd style="width: auto;">&#x00A0;</dd>
- <dt>The choice of an appropriate exit value is often ambiguous.</dt>
- <dd style="width: auto;">&#x00A0;</dd>
-</dl>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">May 9, 2024</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/tgmath.3 3.html b/static/freebsd/man3/tgmath.3 3.html
deleted file mode 100644
index 095cff0f..00000000
--- a/static/freebsd/man3/tgmath.3 3.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">TGMATH(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">TGMATH(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">tgmath</code> &#x2014;
- <span class="Nd">type-generic macros</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">tgmath.h</a>&gt;</code></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The header
- <code class="In">&lt;<a class="In">tgmath.h</a>&gt;</code> provides
- type-generic macros for
- <code class="In">&lt;<a class="In">math.h</a>&gt;</code> and
- <code class="In">&lt;<a class="In">complex.h</a>&gt;</code> functions that
- have <var class="Vt">float</var> (suffixed with
- <a class="permalink" href="#f"><b class="Sy" id="f">f</b></a>),
- <var class="Vt">double</var> and <var class="Vt">long double</var> (suffixed
- with <a class="permalink" href="#l"><b class="Sy" id="l">l</b></a>)
- versions. The arguments that vary across the three functions and have type
- <var class="Vt">float</var>, <var class="Vt">double</var> and
- <var class="Vt">long double</var>, respectively, are called
- <a class="permalink" href="#generic"><i class="Em" id="generic">generic
- arguments</i></a>.</p>
-<p class="Pp">The following rules describe which function is actually called if
- a type-generic macro is invoked. If any generic argument has type
- <var class="Vt">long double</var> or <var class="Vt">long double
- complex</var>, the <var class="Vt">long double</var> function is called.
- Else, if any generic argument has type <var class="Vt">double</var>,
- <var class="Vt">double complex</var> or an integer type, the
- <var class="Vt">double</var> version is invoked. Otherwise, the macro
- expands to the <var class="Vt">float</var> implementation.</p>
-<p class="Pp">For the macros in the following table, both real and complex
- functions exist. The real functions are prototyped in
- <code class="In">&lt;<a class="In">math.h</a>&gt;</code> and the complex
- equivalents in <code class="In">&lt;<a class="In">complex.h</a>&gt;</code>.
- The complex function is called if any of the generic arguments is a complex
- value. Otherwise, the real equivalent is called.</p>
-<table class="Bl-column Bd-indent">
- <tr id="Macro">
- <td><a class="permalink" href="#Macro"><b class="Sy">Macro</b></a></td>
- <td><a class="permalink" href="#real"><b class="Sy" id="real">real
- function</b></a></td>
- <td><a class="permalink" href="#complex"><b class="Sy" id="complex">complex
- function</b></a></td>
- </tr>
- <tr id="acos">
- <td><a class="permalink" href="#acos"><code class="Fn">acos</code></a>()</td>
- <td><code class="Fn">acos</code>()</td>
- <td><a class="permalink" href="#cacos"><code class="Fn" id="cacos">cacos</code></a>()</td>
- </tr>
- <tr id="asin">
- <td><a class="permalink" href="#asin"><code class="Fn">asin</code></a>()</td>
- <td><code class="Fn">asin</code>()</td>
- <td><a class="permalink" href="#casin"><code class="Fn" id="casin">casin</code></a>()</td>
- </tr>
- <tr id="atan">
- <td><a class="permalink" href="#atan"><code class="Fn">atan</code></a>()</td>
- <td><code class="Fn">atan</code>()</td>
- <td><a class="permalink" href="#catan"><code class="Fn" id="catan">catan</code></a>()</td>
- </tr>
- <tr id="acosh">
- <td><a class="permalink" href="#acosh"><code class="Fn">acosh</code></a>()</td>
- <td><code class="Fn">acosh</code>()</td>
- <td><a class="permalink" href="#cacosh"><code class="Fn" id="cacosh">cacosh</code></a>()</td>
- </tr>
- <tr id="asinh">
- <td><a class="permalink" href="#asinh"><code class="Fn">asinh</code></a>()</td>
- <td><code class="Fn">asinh</code>()</td>
- <td><a class="permalink" href="#casinh"><code class="Fn" id="casinh">casinh</code></a>()</td>
- </tr>
- <tr id="atanh">
- <td><a class="permalink" href="#atanh"><code class="Fn">atanh</code></a>()</td>
- <td><code class="Fn">atanh</code>()</td>
- <td><a class="permalink" href="#catanh"><code class="Fn" id="catanh">catanh</code></a>()</td>
- </tr>
- <tr id="cos">
- <td><a class="permalink" href="#cos"><code class="Fn">cos</code></a>()</td>
- <td><code class="Fn">cos</code>()</td>
- <td><a class="permalink" href="#ccos"><code class="Fn" id="ccos">ccos</code></a>()</td>
- </tr>
- <tr id="sin">
- <td><a class="permalink" href="#sin"><code class="Fn">sin</code></a>()</td>
- <td><code class="Fn">sin</code>()</td>
- <td><a class="permalink" href="#csin"><code class="Fn" id="csin">csin</code></a>()</td>
- </tr>
- <tr id="tan">
- <td><a class="permalink" href="#tan"><code class="Fn">tan</code></a>()</td>
- <td><code class="Fn">tan</code>()</td>
- <td><a class="permalink" href="#ctan"><code class="Fn" id="ctan">ctan</code></a>()</td>
- </tr>
- <tr id="cosh">
- <td><a class="permalink" href="#cosh"><code class="Fn">cosh</code></a>()</td>
- <td><code class="Fn">cosh</code>()</td>
- <td><a class="permalink" href="#ccosh"><code class="Fn" id="ccosh">ccosh</code></a>()</td>
- </tr>
- <tr id="sinh">
- <td><a class="permalink" href="#sinh"><code class="Fn">sinh</code></a>()</td>
- <td><code class="Fn">sinh</code>()</td>
- <td><a class="permalink" href="#csinh"><code class="Fn" id="csinh">csinh</code></a>()</td>
- </tr>
- <tr id="tanh">
- <td><a class="permalink" href="#tanh"><code class="Fn">tanh</code></a>()</td>
- <td><code class="Fn">tanh</code>()</td>
- <td><a class="permalink" href="#ctanh"><code class="Fn" id="ctanh">ctanh</code></a>()</td>
- </tr>
- <tr id="exp">
- <td><a class="permalink" href="#exp"><code class="Fn">exp</code></a>()</td>
- <td><code class="Fn">exp</code>()</td>
- <td><a class="permalink" href="#cexp"><code class="Fn" id="cexp">cexp</code></a>()</td>
- </tr>
- <tr id="log">
- <td><a class="permalink" href="#log"><code class="Fn">log</code></a>()</td>
- <td><code class="Fn">log</code>()</td>
- <td><a class="permalink" href="#clog"><code class="Fn" id="clog">clog</code></a>()</td>
- </tr>
- <tr id="pow">
- <td><a class="permalink" href="#pow"><code class="Fn">pow</code></a>()</td>
- <td><code class="Fn">pow</code>()</td>
- <td><a class="permalink" href="#cpow"><code class="Fn" id="cpow">cpow</code></a>()</td>
- </tr>
- <tr id="sqrt">
- <td><a class="permalink" href="#sqrt"><code class="Fn">sqrt</code></a>()</td>
- <td><code class="Fn">sqrt</code>()</td>
- <td><a class="permalink" href="#csqrt"><code class="Fn" id="csqrt">csqrt</code></a>()</td>
- </tr>
- <tr id="fabs">
- <td><a class="permalink" href="#fabs"><code class="Fn">fabs</code></a>()</td>
- <td><code class="Fn">fabs</code>()</td>
- <td><a class="permalink" href="#cabs"><code class="Fn" id="cabs">cabs</code></a>()</td>
- </tr>
-</table>
-<p class="Pp">No complex functions exist for the following macros, so passing a
- complex value to a generic argument invokes undefined behaviour:</p>
-<table class="Bl-column Bd-indent">
- <tr id="atan2">
- <td><a class="permalink" href="#atan2"><code class="Fn">atan2</code></a>()</td>
- <td><a class="permalink" href="#fma"><code class="Fn" id="fma">fma</code></a>()</td>
- <td><a class="permalink" href="#llround"><code class="Fn" id="llround">llround</code></a>()</td>
- <td><a class="permalink" href="#remainder"><code class="Fn" id="remainder">remainder</code></a>()</td>
- </tr>
- <tr id="cbrt">
- <td><a class="permalink" href="#cbrt"><code class="Fn">cbrt</code></a>()</td>
- <td><a class="permalink" href="#fmax"><code class="Fn" id="fmax">fmax</code></a>()</td>
- <td><a class="permalink" href="#log10"><code class="Fn" id="log10">log10</code></a>()</td>
- <td><a class="permalink" href="#remquo"><code class="Fn" id="remquo">remquo</code></a>()</td>
- </tr>
- <tr id="ceil">
- <td><a class="permalink" href="#ceil"><code class="Fn">ceil</code></a>()</td>
- <td><a class="permalink" href="#fmin"><code class="Fn" id="fmin">fmin</code></a>()</td>
- <td><a class="permalink" href="#log1p"><code class="Fn" id="log1p">log1p</code></a>()</td>
- <td><a class="permalink" href="#rint"><code class="Fn" id="rint">rint</code></a>()</td>
- </tr>
- <tr id="copysign">
- <td><a class="permalink" href="#copysign"><code class="Fn">copysign</code></a>()</td>
- <td><a class="permalink" href="#fmod"><code class="Fn" id="fmod">fmod</code></a>()</td>
- <td><a class="permalink" href="#log2"><code class="Fn" id="log2">log2</code></a>()</td>
- <td><a class="permalink" href="#round"><code class="Fn" id="round">round</code></a>()</td>
- </tr>
- <tr id="erf">
- <td><a class="permalink" href="#erf"><code class="Fn">erf</code></a>()</td>
- <td><a class="permalink" href="#frexp"><code class="Fn" id="frexp">frexp</code></a>()</td>
- <td><a class="permalink" href="#logb"><code class="Fn" id="logb">logb</code></a>()</td>
- <td><a class="permalink" href="#scalbn"><code class="Fn" id="scalbn">scalbn</code></a>()</td>
- </tr>
- <tr id="erfc">
- <td><a class="permalink" href="#erfc"><code class="Fn">erfc</code></a>()</td>
- <td><a class="permalink" href="#hypot"><code class="Fn" id="hypot">hypot</code></a>()</td>
- <td><a class="permalink" href="#lrint"><code class="Fn" id="lrint">lrint</code></a>()</td>
- <td><a class="permalink" href="#scalbln"><code class="Fn" id="scalbln">scalbln</code></a>()</td>
- </tr>
- <tr id="exp2">
- <td><a class="permalink" href="#exp2"><code class="Fn">exp2</code></a>()</td>
- <td><a class="permalink" href="#ilogb"><code class="Fn" id="ilogb">ilogb</code></a>()</td>
- <td><a class="permalink" href="#lround"><code class="Fn" id="lround">lround</code></a>()</td>
- <td><a class="permalink" href="#tgamma"><code class="Fn" id="tgamma">tgamma</code></a>()</td>
- </tr>
- <tr id="expm1">
- <td><a class="permalink" href="#expm1"><code class="Fn">expm1</code></a>()</td>
- <td><a class="permalink" href="#ldexp"><code class="Fn" id="ldexp">ldexp</code></a>()</td>
- <td><a class="permalink" href="#nearbyint"><code class="Fn" id="nearbyint">nearbyint</code></a>()</td>
- <td><a class="permalink" href="#trunc"><code class="Fn" id="trunc">trunc</code></a>()</td>
- </tr>
- <tr id="fdim">
- <td><a class="permalink" href="#fdim"><code class="Fn">fdim</code></a>()</td>
- <td><a class="permalink" href="#lgamma"><code class="Fn" id="lgamma">lgamma</code></a>()</td>
- <td><a class="permalink" href="#nextafter"><code class="Fn" id="nextafter">nextafter</code></a>()</td>
- <td></td>
- </tr>
- <tr id="floor">
- <td><a class="permalink" href="#floor"><code class="Fn">floor</code></a>()</td>
- <td><a class="permalink" href="#llrint"><code class="Fn" id="llrint">llrint</code></a>()</td>
- <td><a class="permalink" href="#nexttoward"><code class="Fn" id="nexttoward">nexttoward</code></a>()</td>
- <td></td>
- </tr>
-</table>
-<p class="Pp">The following macros always expand to a complex function:</p>
-<table class="Bl-column Bd-indent">
- <tr id="carg">
- <td><a class="permalink" href="#carg"><code class="Fn">carg</code></a>()</td>
- <td><a class="permalink" href="#cimag"><code class="Fn" id="cimag">cimag</code></a>()</td>
- <td><a class="permalink" href="#conj"><code class="Fn" id="conj">conj</code></a>()</td>
- <td><a class="permalink" href="#cproj"><code class="Fn" id="cproj">cproj</code></a>()</td>
- <td><a class="permalink" href="#creal"><code class="Fn" id="creal">creal</code></a>()</td>
- </tr>
-</table>
-<p class="Pp">This header includes
- <code class="In">&lt;<a class="In">complex.h</a>&gt;</code> and
- <code class="In">&lt;<a class="In">math.h</a>&gt;</code>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
-<p class="Pp">The header
- <code class="In">&lt;<a class="In">tgmath.h</a>&gt;</code> conforms to
- <span class="St">ISO/IEC 9899:1999
- (&#x201C;ISO&#x00A0;C99&#x201D;)</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The header
- <code class="In">&lt;<a class="In">tgmath.h</a>&gt;</code> first appeared in
- <span class="Ux">FreeBSD 5.3</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="COMPILER_SUPPORT"><a class="permalink" href="#COMPILER_SUPPORT">COMPILER
- SUPPORT</a></h1>
-<p class="Pp">Before <span class="St">ISO/IEC 9899:2011
- (&#x201C;ISO&#x00A0;C11&#x201D;)</span>, the header
- <code class="In">&lt;<a class="In">tgmath.h</a>&gt;</code> could not be
- implemented with strictly conforming C code and needed special compiler
- support. As of <span class="St">ISO/IEC 9899:2011
- (&#x201C;ISO&#x00A0;C11&#x201D;)</span>, this header file can be implemented
- using the
- <a class="permalink" href="#_Generic"><code class="Fn" id="_Generic">_Generic</code></a>()
- language keyword. In addition to compilers that support this keyword, this
- header file works with GCC.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
-<p class="Pp">Many of the functions mentioned here are not prototyped in
- <code class="In">&lt;<a class="In">math.h</a>&gt;</code> or
- <code class="In">&lt;<a class="In">complex.h</a>&gt;</code> as they are not
- yet implemented. This prevents the corresponding type-generic macro from
- working at all.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">January 4, 2012</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/timeradd.3 4.html b/static/freebsd/man3/timeradd.3 4.html
deleted file mode 100644
index bdce73ed..00000000
--- a/static/freebsd/man3/timeradd.3 4.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">TIMERADD(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">TIMERADD(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">timeradd</code>,
- <code class="Nm">timersub</code>, <code class="Nm">timerclear</code>,
- <code class="Nm">timerisset</code>, <code class="Nm">timercmp</code>,
- <code class="Nm">timespecadd</code>, <code class="Nm">timespecsub</code>,
- <code class="Nm">timespecclear</code>,
- <code class="Nm">timespecisset</code>, <code class="Nm">timespeccmp</code>
- &#x2014; <span class="Nd">operations on timevals and timespecs</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/time.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">timeradd</code>(<var class="Fa" style="white-space: nowrap;">struct
- timeval *a</var>, <var class="Fa" style="white-space: nowrap;">struct
- timeval *b</var>, <var class="Fa" style="white-space: nowrap;">struct
- timeval *res</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">timersub</code>(<var class="Fa" style="white-space: nowrap;">struct
- timeval *a</var>, <var class="Fa" style="white-space: nowrap;">struct
- timeval *b</var>, <var class="Fa" style="white-space: nowrap;">struct
- timeval *res</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">timerclear</code>(<var class="Fa" style="white-space: nowrap;">struct
- timeval *tvp</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">timerisset</code>(<var class="Fa" style="white-space: nowrap;">struct
- timeval *tvp</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">timercmp</code>(<var class="Fa" style="white-space: nowrap;">struct
- timeval *a</var>, <var class="Fa" style="white-space: nowrap;">struct
- timeval *b</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">timespecadd</code>(<var class="Fa" style="white-space: nowrap;">struct
- timespec *a</var>, <var class="Fa" style="white-space: nowrap;">struct
- timespec *b</var>, <var class="Fa" style="white-space: nowrap;">struct
- timespec *res</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">timespecsub</code>(<var class="Fa" style="white-space: nowrap;">struct
- timespec *a</var>, <var class="Fa" style="white-space: nowrap;">struct
- timespec *b</var>, <var class="Fa" style="white-space: nowrap;">struct
- timespec *res</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">timespecclear</code>(<var class="Fa" style="white-space: nowrap;">struct
- timespec *ts</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">timespecisset</code>(<var class="Fa" style="white-space: nowrap;">struct
- timespec *ts</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">timespeccmp</code>(<var class="Fa" style="white-space: nowrap;">struct
- timespec *a</var>, <var class="Fa" style="white-space: nowrap;">struct
- timespec *b</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">These macros are provided for manipulating
- <var class="Fa">timeval</var> and <var class="Fa">timespec</var> structures
- for use with the <a class="Xr">clock_gettime(2)</a>,
- <a class="Xr">clock_settime(2)</a>, <a class="Xr">gettimeofday(2)</a> and
- <a class="Xr">settimeofday(2)</a> calls. The <var class="Fa">timeval</var>
- structure is defined in
- <code class="In">&lt;<a class="In">sys/time.h</a>&gt;</code> as:</p>
-<div class="Bd Pp Li">
-<pre>struct timeval {
- long tv_sec; /* seconds since Jan. 1, 1970 */
- long tv_usec; /* and microseconds */
-};</pre>
-</div>
-<p class="Pp">And the <var class="Fa">timespec</var> structure is defined in
- <code class="In">&lt;<a class="In">time.h</a>&gt;</code> as:</p>
-<div class="Bd Pp Li">
-<pre>struct timespec {
- time_t tv_sec; /* seconds */
- long tv_nsec; /* and nanoseconds */
-};</pre>
-</div>
-<p class="Pp" id="timeradd"><a class="permalink" href="#timeradd"><code class="Fn">timeradd</code></a>()
- and
- <a class="permalink" href="#timespecadd"><code class="Fn" id="timespecadd">timespecadd</code></a>()
- add the time information stored in <var class="Fa">a</var> to
- <var class="Fa">b</var> and store the result in <var class="Fa">res</var>.
- The results are simplified such that the value of
- <var class="Fa">res-&gt;tv_usec</var> or
- <var class="Fa">res-&gt;tv_nsec</var> is always less than 1 second.</p>
-<p class="Pp" id="timersub"><a class="permalink" href="#timersub"><code class="Fn">timersub</code></a>()
- and
- <a class="permalink" href="#timespecsub"><code class="Fn" id="timespecsub">timespecsub</code></a>()
- subtract the time information stored in <var class="Fa">b</var> from
- <var class="Fa">a</var> and store the result in
- <var class="Fa">res</var>.</p>
-<p class="Pp" id="timerclear"><a class="permalink" href="#timerclear"><code class="Fn">timerclear</code></a>()
- and
- <a class="permalink" href="#timespecclear"><code class="Fn" id="timespecclear">timespecclear</code></a>()
- initialize their argument to midnight (0 hour) January 1st, 1970 (the
- Epoch).</p>
-<p class="Pp" id="timerisset"><a class="permalink" href="#timerisset"><code class="Fn">timerisset</code></a>()
- and
- <a class="permalink" href="#timespecisset"><code class="Fn" id="timespecisset">timespecisset</code></a>()
- return true if their argument is set to any time value other than the
- Epoch.</p>
-<p class="Pp" id="timercmp"><a class="permalink" href="#timercmp"><code class="Fn">timercmp</code></a>()
- and
- <a class="permalink" href="#timespeccmp"><code class="Fn" id="timespeccmp">timespeccmp</code></a>()
- compare <var class="Fa">a</var> to <var class="Fa">b</var> using the
- comparison operator given in <var class="Fa">CMP</var>, and return the
- result of that comparison.</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">clock_gettime(2)</a>,
- <a class="Xr">gettimeofday(2)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Fn">timeradd</code>() family of macros were
- imported from <span class="Ux">NetBSD 1.1</span>, and appeared in
- <span class="Ux">FreeBSD 2.2.6</span>. The
- <code class="Fn">timespecadd</code>() family of macros were imported from
- <span class="Ux">NetBSD 1.3</span> into <span class="Ux">FreeBSD 3.0</span>,
- though they were not exposed to userland until <span class="Ux">FreeBSD
- 12.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 30, 2018</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>
diff --git a/static/freebsd/man3/tree.3 3.html b/static/freebsd/man3/tree.3 3.html
deleted file mode 100644
index 547c060d..00000000
--- a/static/freebsd/man3/tree.3 3.html
+++ /dev/null
@@ -1,818 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">TREE(3)</td>
- <td class="head-vol">Library Functions Manual</td>
- <td class="head-rtitle">TREE(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">SPLAY_PROTOTYPE</code>,
- <code class="Nm">SPLAY_GENERATE</code>, <code class="Nm">SPLAY_ENTRY</code>,
- <code class="Nm">SPLAY_HEAD</code>,
- <code class="Nm">SPLAY_INITIALIZER</code>,
- <code class="Nm">SPLAY_ROOT</code>, <code class="Nm">SPLAY_EMPTY</code>,
- <code class="Nm">SPLAY_NEXT</code>, <code class="Nm">SPLAY_MIN</code>,
- <code class="Nm">SPLAY_MAX</code>, <code class="Nm">SPLAY_FIND</code>,
- <code class="Nm">SPLAY_LEFT</code>, <code class="Nm">SPLAY_RIGHT</code>,
- <code class="Nm">SPLAY_FOREACH</code>, <code class="Nm">SPLAY_INIT</code>,
- <code class="Nm">SPLAY_INSERT</code>, <code class="Nm">SPLAY_REMOVE</code>,
- <code class="Nm">RB_PROTOTYPE</code>,
- <code class="Nm">RB_PROTOTYPE_STATIC</code>,
- <code class="Nm">RB_PROTOTYPE_INSERT</code>,
- <code class="Nm">RB_PROTOTYPE_INSERT_COLOR</code>,
- <code class="Nm">RB_PROTOTYPE_REMOVE</code>,
- <code class="Nm">RB_PROTOTYPE_REMOVE_COLOR</code>,
- <code class="Nm">RB_PROTOTYPE_FIND</code>,
- <code class="Nm">RB_PROTOTYPE_NFIND</code>,
- <code class="Nm">RB_PROTOTYPE_NEXT</code>,
- <code class="Nm">RB_PROTOTYPE_PREV</code>,
- <code class="Nm">RB_PROTOTYPE_MINMAX</code>,
- <code class="Nm">RB_PROTOTYPE_REINSERT</code>,
- <code class="Nm">RB_GENERATE</code>,
- <code class="Nm">RB_GENERATE_STATIC</code>,
- <code class="Nm">RB_GENERATE_INSERT</code>,
- <code class="Nm">RB_GENERATE_INSERT_COLOR</code>,
- <code class="Nm">RB_GENERATE_REMOVE</code>,
- <code class="Nm">RB_GENERATE_REMOVE_COLOR</code>,
- <code class="Nm">RB_GENERATE_FIND</code>,
- <code class="Nm">RB_GENERATE_NFIND</code>,
- <code class="Nm">RB_GENERATE_NEXT</code>,
- <code class="Nm">RB_GENERATE_PREV</code>,
- <code class="Nm">RB_GENERATE_MINMAX</code>,
- <code class="Nm">RB_GENERATE_REINSERT</code>,
- <code class="Nm">RB_ENTRY</code>, <code class="Nm">RB_HEAD</code>,
- <code class="Nm">RB_INITIALIZER</code>, <code class="Nm">RB_ROOT</code>,
- <code class="Nm">RB_EMPTY</code>, <code class="Nm">RB_NEXT</code>,
- <code class="Nm">RB_PREV</code>, <code class="Nm">RB_MIN</code>,
- <code class="Nm">RB_MAX</code>, <code class="Nm">RB_FIND</code>,
- <code class="Nm">RB_NFIND</code>, <code class="Nm">RB_LEFT</code>,
- <code class="Nm">RB_RIGHT</code>, <code class="Nm">RB_PARENT</code>,
- <code class="Nm">RB_FOREACH</code>, <code class="Nm">RB_FOREACH_FROM</code>,
- <code class="Nm">RB_FOREACH_SAFE</code>,
- <code class="Nm">RB_FOREACH_REVERSE</code>,
- <code class="Nm">RB_FOREACH_REVERSE_FROM</code>,
- <code class="Nm">RB_FOREACH_REVERSE_SAFE</code>,
- <code class="Nm">RB_INIT</code>, <code class="Nm">RB_INSERT</code>,
- <code class="Nm">RB_INSERT_NEXT</code>,
- <code class="Nm">RB_INSERT_PREV</code>, <code class="Nm">RB_REMOVE</code>,
- <code class="Nm">RB_REINSERT</code>, <code class="Nm">RB_AUGMENT</code>
- <code class="Nm">RB_AUGMENT_CHECK,</code>
- <code class="Nm">RB_UPDATE_AUGMENT</code> &#x2014;
- <span class="Nd">implementations of splay and rank-balanced (wavl)
- trees</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/tree.h</a>&gt;</code></p>
-<p class="Pp"><code class="Fn">SPLAY_PROTOTYPE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">SPLAY_GENERATE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">SPLAY_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">SPLAY_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">SPLAY_INITIALIZER</code>(<var class="Fa" style="white-space: nowrap;">SPLAY_HEAD
- *head</var>);</p>
-<p class="Pp"><code class="Fn">SPLAY_ROOT</code>(<var class="Fa" style="white-space: nowrap;">SPLAY_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">SPLAY_EMPTY</code>(<var class="Fa" style="white-space: nowrap;">SPLAY_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">SPLAY_NEXT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">SPLAY_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">SPLAY_MIN</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">SPLAY_HEAD *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">SPLAY_MAX</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">SPLAY_HEAD *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">SPLAY_FIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">SPLAY_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">SPLAY_LEFT</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">SPLAY_ENTRY
- NAME</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">SPLAY_RIGHT</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">SPLAY_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">SPLAY_FOREACH</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">SPLAY_HEAD *head</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">SPLAY_INIT</code>(<var class="Fa" style="white-space: nowrap;">SPLAY_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">SPLAY_INSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">SPLAY_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">SPLAY_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">SPLAY_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_STATIC</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_INSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_INSERT_COLOR</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_REMOVE_COLOR</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_FIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_NFIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_NEXT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_PREV</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_MINMAX</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_PROTOTYPE_REINSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_STATIC</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_INSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_INSERT_COLOR</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_REMOVE_COLOR</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_FIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_NFIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_NEXT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_PREV</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_MINMAX</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_GENERATE_REINSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>,
- <var class="Fa" style="white-space: nowrap;">FIELD</var>,
- <var class="Fa" style="white-space: nowrap;">CMP</var>,
- <var class="Fa" style="white-space: nowrap;">ATTR</var>);</p>
-<p class="Pp"><code class="Fn">RB_ENTRY</code>(<var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">RB_HEAD</code>(<var class="Fa" style="white-space: nowrap;">HEADNAME</var>,
- <var class="Fa" style="white-space: nowrap;">TYPE</var>);</p>
-<p class="Pp"><code class="Fn">RB_INITIALIZER</code>(<var class="Fa" style="white-space: nowrap;">RB_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_ROOT</code>(<var class="Fa" style="white-space: nowrap;">RB_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">RB_EMPTY</code>(<var class="Fa" style="white-space: nowrap;">RB_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_NEXT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_PREV</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_MIN</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_MAX</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_FIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_NFIND</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_LEFT</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">RB_ENTRY
- NAME</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_RIGHT</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">RB_ENTRY
- NAME</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_PARENT</code>(<var class="Fa" style="white-space: nowrap;">struct
- TYPE *elm</var>, <var class="Fa" style="white-space: nowrap;">RB_ENTRY
- NAME</var>);</p>
-<p class="Pp"><code class="Fn">RB_FOREACH</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>);</p>
-<p class="Pp"><code class="Fn">RB_FOREACH_FROM</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">POS_VARNAME</var>);</p>
-<p class="Pp"><code class="Fn">RB_FOREACH_SAFE</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">TEMP_VARNAME</var>);</p>
-<p class="Pp"><code class="Fn">RB_FOREACH_REVERSE</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>);</p>
-<p class="Pp"><code class="Fn">RB_FOREACH_REVERSE_FROM</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">POS_VARNAME</var>);</p>
-<p class="Pp"><code class="Fn">RB_FOREACH_REVERSE_SAFE</code>(<var class="Fa" style="white-space: nowrap;">VARNAME</var>,
- <var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">TEMP_VARNAME</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">RB_INIT</code>(<var class="Fa" style="white-space: nowrap;">RB_HEAD
- *head</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_INSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_INSERT_NEXT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *next</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_INSERT_PREV</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *prev</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_REMOVE</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">struct TYPE *</var>
- <br/>
- <code class="Fn">RB_REINSERT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">RB_HEAD *head</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">RB_AUGMENT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">bool</var>
- <br/>
- <code class="Fn">RB_AUGMENT_CHECK</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">RB_UPDATE_AUGMENT</code>(<var class="Fa" style="white-space: nowrap;">NAME</var>,
- <var class="Fa" style="white-space: nowrap;">struct TYPE *elm</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">These macros define data structures for different types of trees:
- splay trees and rank-balanced (wavl) trees.</p>
-<p class="Pp" id="SPLAY_HEAD">In the macro definitions,
- <var class="Fa">TYPE</var> is the name tag of a user defined structure that
- must contain a field of type <var class="Vt">SPLAY_ENTRY</var>, or
- <var class="Vt">RB_ENTRY</var>, named <var class="Fa">ENTRYNAME</var>. The
- argument <var class="Fa">HEADNAME</var> is the name tag of a user defined
- structure that must be declared using the macros
- <a class="permalink" href="#SPLAY_HEAD"><code class="Fn">SPLAY_HEAD</code></a>(),
- or <code class="Fn">RB_HEAD</code>(). The argument
- <var class="Fa">NAME</var> has to be a unique name prefix for every tree
- that is defined.</p>
-<p class="Pp" id="SPLAY_PROTOTYPE">The function prototypes are declared with
- <a class="permalink" href="#SPLAY_PROTOTYPE"><code class="Fn">SPLAY_PROTOTYPE</code></a>(),
- <code class="Fn">RB_PROTOTYPE</code>(), or
- <code class="Fn">RB_PROTOTYPE_STATIC</code>(). The function bodies are
- generated with <code class="Fn">SPLAY_GENERATE</code>(),
- <code class="Fn">RB_GENERATE</code>(), or
- <code class="Fn">RB_GENERATE_STATIC</code>(). See the examples below for
- further explanation of how these macros are used.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SPLAY_TREES"><a class="permalink" href="#SPLAY_TREES">SPLAY
- TREES</a></h1>
-<p class="Pp">A splay tree is a self-organizing data structure. Every operation
- on the tree causes a splay to happen. The splay moves the requested node to
- the root of the tree and partly rebalances it.</p>
-<p class="Pp">This has the benefit that request locality causes faster lookups
- as the requested nodes move to the top of the tree. On the other hand, every
- lookup causes memory writes.</p>
-<p class="Pp" id="O">The Balance Theorem bounds the total access time for
- <var class="Ar">m</var> operations and <var class="Ar">n</var> inserts on an
- initially empty tree as
- <a class="permalink" href="#O"><code class="Fn">O</code></a>(<var class="Fa">(m
- + n)lg n</var>). The amortized cost for a sequence of
- <var class="Ar">m</var> accesses to a splay tree is
- <code class="Fn">O</code>(<var class="Fa">lg n</var>).</p>
-<p class="Pp" id="SPLAY_HEAD~2">A splay tree is headed by a structure defined by
- the
- <a class="permalink" href="#SPLAY_HEAD~2"><code class="Fn">SPLAY_HEAD</code></a>()
- macro. A structure is declared as follows:</p>
-<div class="Bd Pp
- Bd-indent"><code class="Fn">SPLAY_HEAD</code>(<var class="Fa">HEADNAME</var>,
- <var class="Fa">TYPE</var>) <var class="Va">head</var>;</div>
-<p class="Pp">where <var class="Fa">HEADNAME</var> is the name of the structure
- to be defined, and struct <var class="Fa">TYPE</var> is the type of the
- elements to be inserted into the tree.</p>
-<p class="Pp" id="SPLAY_ENTRY">The
- <a class="permalink" href="#SPLAY_ENTRY"><code class="Fn">SPLAY_ENTRY</code></a>()
- macro declares a structure that allows elements to be connected in the
- tree.</p>
-<p class="Pp" id="SPLAY_PROTOTYPE~2">In order to use the functions that
- manipulate the tree structure, their prototypes need to be declared with the
- <a class="permalink" href="#SPLAY_PROTOTYPE~2"><code class="Fn">SPLAY_PROTOTYPE</code></a>()
- macro, where <var class="Fa">NAME</var> is a unique identifier for this
- particular tree. The <var class="Fa">TYPE</var> argument is the type of the
- structure that is being managed by the tree. The <var class="Fa">FIELD</var>
- argument is the name of the element defined by
- <code class="Fn">SPLAY_ENTRY</code>().</p>
-<p class="Pp" id="SPLAY_GENERATE">The function bodies are generated with the
- <a class="permalink" href="#SPLAY_GENERATE"><code class="Fn">SPLAY_GENERATE</code></a>()
- macro. It takes the same arguments as the
- <code class="Fn">SPLAY_PROTOTYPE</code>() macro, but should be used only
- once.</p>
-<p class="Pp">Finally, the <var class="Fa">CMP</var> argument is the name of a
- function used to compare tree nodes with each other. The function takes two
- arguments of type <var class="Vt">struct TYPE *</var>. If the first argument
- is smaller than the second, the function returns a value smaller than zero.
- If they are equal, the function returns zero. Otherwise, it should return a
- value greater than zero. The compare function defines the order of the tree
- elements.</p>
-<p class="Pp" id="SPLAY_INIT">The
- <a class="permalink" href="#SPLAY_INIT"><code class="Fn">SPLAY_INIT</code></a>()
- macro initializes the tree referenced by <var class="Fa">head</var>.</p>
-<p class="Pp" id="SPLAY_INITIALIZER">The splay tree can also be initialized
- statically by using the
- <a class="permalink" href="#SPLAY_INITIALIZER"><code class="Fn">SPLAY_INITIALIZER</code></a>()
- macro like this:</p>
-<div class="Bd Pp
- Bd-indent"><code class="Fn">SPLAY_HEAD</code>(<var class="Fa">HEADNAME</var>,
- <var class="Fa">TYPE</var>) <var class="Va">head</var> =
- <code class="Fn">SPLAY_INITIALIZER</code>(<var class="Fa">&amp;head</var>);</div>
-<p class="Pp" id="SPLAY_INSERT">The
- <a class="permalink" href="#SPLAY_INSERT"><code class="Fn">SPLAY_INSERT</code></a>()
- macro inserts the new element <var class="Fa">elm</var> into the tree.</p>
-<p class="Pp" id="SPLAY_REMOVE">The
- <a class="permalink" href="#SPLAY_REMOVE"><code class="Fn">SPLAY_REMOVE</code></a>()
- macro removes the element <var class="Fa">elm</var> from the tree pointed by
- <var class="Fa">head</var>.</p>
-<p class="Pp" id="SPLAY_FIND">The
- <a class="permalink" href="#SPLAY_FIND"><code class="Fn">SPLAY_FIND</code></a>()
- macro can be used to find a particular element in the tree.</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct TYPE find, *res;
-find.key = 30;
-res = SPLAY_FIND(NAME, head, &amp;find);</pre>
-</div>
-<p class="Pp" id="SPLAY_ROOT">The
- <a class="permalink" href="#SPLAY_ROOT"><code class="Fn">SPLAY_ROOT</code></a>(),
- <a class="permalink" href="#SPLAY_MIN"><code class="Fn" id="SPLAY_MIN">SPLAY_MIN</code></a>(),
- <a class="permalink" href="#SPLAY_MAX"><code class="Fn" id="SPLAY_MAX">SPLAY_MAX</code></a>(),
- and
- <a class="permalink" href="#SPLAY_NEXT"><code class="Fn" id="SPLAY_NEXT">SPLAY_NEXT</code></a>()
- macros can be used to traverse the tree:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>for (np = SPLAY_MIN(NAME, &amp;head); np != NULL; np = SPLAY_NEXT(NAME, &amp;head, np))</pre>
-</div>
-<p class="Pp" id="SPLAY_FOREACH">Or, for simplicity, one can use the
- <a class="permalink" href="#SPLAY_FOREACH"><code class="Fn">SPLAY_FOREACH</code></a>()
- macro:</p>
-<div class="Bd Pp
- Bd-indent"><code class="Fn">SPLAY_FOREACH</code>(<var class="Fa">np</var>,
- <var class="Fa">NAME</var>, <var class="Fa">head</var>)</div>
-<p class="Pp" id="SPLAY_EMPTY">The
- <a class="permalink" href="#SPLAY_EMPTY"><code class="Fn">SPLAY_EMPTY</code></a>()
- macro should be used to check whether a splay tree is empty.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="RANK-BALANCED_TREES"><a class="permalink" href="#RANK-BALANCED_TREES">RANK-BALANCED
- TREES</a></h1>
-<p class="Pp">Rank-balanced (RB) trees are a framework for defining
- height-balanced binary search trees, including AVL and red-black trees. Each
- tree node has an associated rank. Balance conditions are expressed by
- conditions on the differences in rank between any node and its children.
- Rank differences are stored in each tree node.</p>
-<p class="Pp">The balance conditions implemented by the RB macros lead to weak
- AVL (wavl) trees, which combine the best aspects of AVL and red-black trees.
- Wavl trees rebalance after an insertion in the same way AVL trees do, with
- the same worst-case time as red-black trees offer, and with better balance
- in the resulting tree. Wavl trees rebalance after a removal in a way that
- requires less restructuring, in the worst case, than either AVL or red-black
- trees do. Removals can lead to a tree almost as unbalanced as a red-black
- tree; insertions lead to a tree becoming as balanced as an AVL tree.</p>
-<p class="Pp" id="RB_HEAD">A rank-balanced tree is headed by a structure defined
- by the
- <a class="permalink" href="#RB_HEAD"><code class="Fn">RB_HEAD</code></a>()
- macro. A structure is declared as follows:</p>
-<div class="Bd Pp
- Bd-indent"><code class="Fn">RB_HEAD</code>(<var class="Fa">HEADNAME</var>,
- <var class="Fa">TYPE</var>) <var class="Va">head</var>;</div>
-<p class="Pp">where <var class="Fa">HEADNAME</var> is the name of the structure
- to be defined, and struct <var class="Fa">TYPE</var> is the type of the
- elements to be inserted into the tree.</p>
-<p class="Pp" id="RB_ENTRY">The
- <a class="permalink" href="#RB_ENTRY"><code class="Fn">RB_ENTRY</code></a>()
- macro declares a structure that allows elements to be connected in the
- tree.</p>
-<p class="Pp" id="RB_PROTOTYPE">In order to use the functions that manipulate
- the tree structure, their prototypes need to be declared with the
- <a class="permalink" href="#RB_PROTOTYPE"><code class="Fn">RB_PROTOTYPE</code></a>()
- or
- <a class="permalink" href="#RB_PROTOTYPE_STATIC"><code class="Fn" id="RB_PROTOTYPE_STATIC">RB_PROTOTYPE_STATIC</code></a>()
- macro, where <var class="Fa">NAME</var> is a unique identifier for this
- particular tree. The <var class="Fa">TYPE</var> argument is the type of the
- structure that is being managed by the tree. The <var class="Fa">FIELD</var>
- argument is the name of the element defined by
- <code class="Fn">RB_ENTRY</code>(). Individual prototypes can be declared
- with
- <a class="permalink" href="#RB_PROTOTYPE_INSERT"><code class="Fn" id="RB_PROTOTYPE_INSERT">RB_PROTOTYPE_INSERT</code></a>(),
- <a class="permalink" href="#RB_PROTOTYPE_INSERT_COLOR"><code class="Fn" id="RB_PROTOTYPE_INSERT_COLOR">RB_PROTOTYPE_INSERT_COLOR</code></a>(),
- <a class="permalink" href="#RB_PROTOTYPE_REMOVE"><code class="Fn" id="RB_PROTOTYPE_REMOVE">RB_PROTOTYPE_REMOVE</code></a>(),
- <a class="permalink" href="#RB_PROTOTYPE_REMOVE_COLOR"><code class="Fn" id="RB_PROTOTYPE_REMOVE_COLOR">RB_PROTOTYPE_REMOVE_COLOR</code></a>(),
- <a class="permalink" href="#RB_PROTOTYPE_FIND"><code class="Fn" id="RB_PROTOTYPE_FIND">RB_PROTOTYPE_FIND</code></a>(),
- <a class="permalink" href="#RB_PROTOTYPE_NFIND"><code class="Fn" id="RB_PROTOTYPE_NFIND">RB_PROTOTYPE_NFIND</code></a>(),
- <a class="permalink" href="#RB_PROTOTYPE_NEXT"><code class="Fn" id="RB_PROTOTYPE_NEXT">RB_PROTOTYPE_NEXT</code></a>(),
- <a class="permalink" href="#RB_PROTOTYPE_PREV"><code class="Fn" id="RB_PROTOTYPE_PREV">RB_PROTOTYPE_PREV</code></a>(),
- <a class="permalink" href="#RB_PROTOTYPE_MINMAX"><code class="Fn" id="RB_PROTOTYPE_MINMAX">RB_PROTOTYPE_MINMAX</code></a>(),
- and
- <a class="permalink" href="#RB_PROTOTYPE_REINSERT"><code class="Fn" id="RB_PROTOTYPE_REINSERT">RB_PROTOTYPE_REINSERT</code></a>()
- in case not all functions are required. The individual prototype macros
- expect <var class="Fa">NAME</var>, <var class="Fa">TYPE</var>, and
- <var class="Fa">ATTR</var> arguments. The <var class="Fa">ATTR</var>
- argument must be empty for global functions or <var class="Fa">static</var>
- for static functions.</p>
-<p class="Pp" id="RB_GENERATE">The function bodies are generated with the
- <a class="permalink" href="#RB_GENERATE"><code class="Fn">RB_GENERATE</code></a>()
- or
- <a class="permalink" href="#RB_GENERATE_STATIC"><code class="Fn" id="RB_GENERATE_STATIC">RB_GENERATE_STATIC</code></a>()
- macro. These macros take the same arguments as the
- <code class="Fn">RB_PROTOTYPE</code>() and
- <code class="Fn">RB_PROTOTYPE_STATIC</code>() macros, but should be used
- only once. As an alternative individual function bodies are generated with
- the
- <a class="permalink" href="#RB_GENERATE_INSERT"><code class="Fn" id="RB_GENERATE_INSERT">RB_GENERATE_INSERT</code></a>(),
- <a class="permalink" href="#RB_GENERATE_INSERT_COLOR"><code class="Fn" id="RB_GENERATE_INSERT_COLOR">RB_GENERATE_INSERT_COLOR</code></a>(),
- <a class="permalink" href="#RB_GENERATE_REMOVE"><code class="Fn" id="RB_GENERATE_REMOVE">RB_GENERATE_REMOVE</code></a>(),
- <a class="permalink" href="#RB_GENERATE_REMOVE_COLOR"><code class="Fn" id="RB_GENERATE_REMOVE_COLOR">RB_GENERATE_REMOVE_COLOR</code></a>(),
- <a class="permalink" href="#RB_GENERATE_FIND"><code class="Fn" id="RB_GENERATE_FIND">RB_GENERATE_FIND</code></a>(),
- <a class="permalink" href="#RB_GENERATE_NFIND"><code class="Fn" id="RB_GENERATE_NFIND">RB_GENERATE_NFIND</code></a>(),
- <a class="permalink" href="#RB_GENERATE_NEXT"><code class="Fn" id="RB_GENERATE_NEXT">RB_GENERATE_NEXT</code></a>(),
- <a class="permalink" href="#RB_GENERATE_PREV"><code class="Fn" id="RB_GENERATE_PREV">RB_GENERATE_PREV</code></a>(),
- <a class="permalink" href="#RB_GENERATE_MINMAX"><code class="Fn" id="RB_GENERATE_MINMAX">RB_GENERATE_MINMAX</code></a>(),
- and
- <a class="permalink" href="#RB_GENERATE_REINSERT"><code class="Fn" id="RB_GENERATE_REINSERT">RB_GENERATE_REINSERT</code></a>()
- macros.</p>
-<p class="Pp">Finally, the <var class="Fa">CMP</var> argument is the name of a
- function used to compare tree nodes with each other. The function takes two
- arguments of type <var class="Vt">struct TYPE *</var>. If the first argument
- is smaller than the second, the function returns a value smaller than zero.
- If they are equal, the function returns zero. Otherwise, it should return a
- value greater than zero. The compare function defines the order of the tree
- elements.</p>
-<p class="Pp" id="RB_INIT">The
- <a class="permalink" href="#RB_INIT"><code class="Fn">RB_INIT</code></a>()
- macro initializes the tree referenced by <var class="Fa">head</var>.</p>
-<p class="Pp" id="RB_INITIALIZER">The rank-balanced tree can also be initialized
- statically by using the
- <a class="permalink" href="#RB_INITIALIZER"><code class="Fn">RB_INITIALIZER</code></a>()
- macro like this:</p>
-<div class="Bd Pp
- Bd-indent"><code class="Fn">RB_HEAD</code>(<var class="Fa">HEADNAME</var>,
- <var class="Fa">TYPE</var>) <var class="Va">head</var> =
- <code class="Fn">RB_INITIALIZER</code>(<var class="Fa">&amp;head</var>);</div>
-<p class="Pp" id="RB_INSERT">The
- <a class="permalink" href="#RB_INSERT"><code class="Fn">RB_INSERT</code></a>()
- macro inserts the new element <var class="Fa">elm</var> into the tree.</p>
-<p class="Pp" id="RB_INSERT_NEXT">The
- <a class="permalink" href="#RB_INSERT_NEXT"><code class="Fn">RB_INSERT_NEXT</code></a>()
- macro inserts the new element <var class="Fa">elm</var> into the tree
- immediately after a given element.</p>
-<p class="Pp" id="RB_INSERT_PREV">The
- <a class="permalink" href="#RB_INSERT_PREV"><code class="Fn">RB_INSERT_PREV</code></a>()
- macro inserts the new element <var class="Fa">elm</var> into the tree
- immediately before a given element.</p>
-<p class="Pp" id="RB_REMOVE">The
- <a class="permalink" href="#RB_REMOVE"><code class="Fn">RB_REMOVE</code></a>()
- macro removes the element <var class="Fa">elm</var> from the tree pointed by
- <var class="Fa">head</var>.</p>
-<p class="Pp" id="RB_FIND">The
- <a class="permalink" href="#RB_FIND"><code class="Fn">RB_FIND</code></a>()
- and <code class="Fn">RB_NFIND</code>() macros can be used to find a
- particular element in the tree.</p>
-<p class="Pp" id="RB_FIND~2">The
- <a class="permalink" href="#RB_FIND~2"><code class="Fn">RB_FIND</code></a>()
- macro returns the element in the tree equal to the provided key, or
- <code class="Dv">NULL</code> if there is no such element.</p>
-<p class="Pp" id="RB_NFIND">The
- <a class="permalink" href="#RB_NFIND"><code class="Fn">RB_NFIND</code></a>()
- macro returns the least element greater than or equal to the provided key,
- or <code class="Dv">NULL</code> if there is no such element.</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>struct TYPE find, *res, *resn;
-find.key = 30;
-res = RB_FIND(NAME, head, &amp;find);
-resn = RB_NFIND(NAME, head, &amp;find);</pre>
-</div>
-<p class="Pp" id="RB_ROOT">The
- <a class="permalink" href="#RB_ROOT"><code class="Fn">RB_ROOT</code></a>(),
- <a class="permalink" href="#RB_MIN"><code class="Fn" id="RB_MIN">RB_MIN</code></a>(),
- <a class="permalink" href="#RB_MAX"><code class="Fn" id="RB_MAX">RB_MAX</code></a>(),
- <a class="permalink" href="#RB_NEXT"><code class="Fn" id="RB_NEXT">RB_NEXT</code></a>(),
- and
- <a class="permalink" href="#RB_PREV"><code class="Fn" id="RB_PREV">RB_PREV</code></a>()
- macros can be used to traverse the tree:</p>
-<p class="Pp"></p>
-<div class="Bd Bd-indent"><code class="Li">for (np = RB_MIN(NAME, &amp;head); np
- != NULL; np = RB_NEXT(NAME, &amp;head, np))</code></div>
-<p class="Pp" id="RB_FOREACH">Or, for simplicity, one can use the
- <a class="permalink" href="#RB_FOREACH"><code class="Fn">RB_FOREACH</code></a>()
- or
- <a class="permalink" href="#RB_FOREACH_REVERSE"><code class="Fn" id="RB_FOREACH_REVERSE">RB_FOREACH_REVERSE</code></a>()
- macro:</p>
-<div class="Bd Pp
- Bd-indent"><code class="Fn">RB_FOREACH</code>(<var class="Fa">np</var>,
- <var class="Fa">NAME</var>, <var class="Fa">head</var>)</div>
-<p class="Pp" id="RB_FOREACH_SAFE">The macros
- <a class="permalink" href="#RB_FOREACH_SAFE"><code class="Fn">RB_FOREACH_SAFE</code></a>()
- and
- <a class="permalink" href="#RB_FOREACH_REVERSE_SAFE"><code class="Fn" id="RB_FOREACH_REVERSE_SAFE">RB_FOREACH_REVERSE_SAFE</code></a>()
- traverse the tree referenced by head in a forward or reverse direction
- respectively, assigning each element in turn to np. However, unlike their
- unsafe counterparts, they permit both the removal of np as well as freeing
- it from within the loop safely without interfering with the traversal.</p>
-<p class="Pp" id="RB_FOREACH_FROM">Both
- <a class="permalink" href="#RB_FOREACH_FROM"><code class="Fn">RB_FOREACH_FROM</code></a>()
- and
- <a class="permalink" href="#RB_FOREACH_REVERSE_FROM"><code class="Fn" id="RB_FOREACH_REVERSE_FROM">RB_FOREACH_REVERSE_FROM</code></a>()
- may be used to continue an interrupted traversal in a forward or reverse
- direction respectively. The head pointer is not required. The pointer to the
- node from where to resume the traversal should be passed as their last
- argument, and will be overwritten to provide safe traversal.</p>
-<p class="Pp" id="RB_EMPTY">The
- <a class="permalink" href="#RB_EMPTY"><code class="Fn">RB_EMPTY</code></a>()
- macro should be used to check whether a rank-balanced tree is empty.</p>
-<p class="Pp" id="RB_REINSERT">The
- <a class="permalink" href="#RB_REINSERT"><code class="Fn">RB_REINSERT</code></a>()
- macro updates the position of the element <var class="Fa">elm</var> in the
- tree. This must be called if a member of a <code class="Nm">tree</code> is
- modified in a way that affects comparison, such as by modifying a node's
- key. This is a lower overhead alternative to removing the element and
- reinserting it again.</p>
-<p class="Pp" id="RB_AUGMENT">The
- <a class="permalink" href="#RB_AUGMENT"><code class="Fn">RB_AUGMENT</code></a>()
- macro updates augmentation data of the element <var class="Fa">elm</var> in
- the tree. By default, it has no effect. It is not meant to be invoked by the
- RB user. If <code class="Fn">RB_AUGMENT</code>() is defined by the RB user,
- then when an element is inserted or removed from the tree, it is invoked for
- every element in the tree that is the root of an altered subtree, working
- from the bottom of the tree up to the top. It is typically used to maintain
- some associative accumulation of tree elements, such as sums, minima,
- maxima, and the like.</p>
-<p class="Pp" id="RB_AUGMENT_CHECK">The
- <a class="permalink" href="#RB_AUGMENT_CHECK"><code class="Fn">RB_AUGMENT_CHECK</code></a>()
- macro updates augmentation data of the element <var class="Fa">elm</var> in
- the tree. By default, it does nothing and returns false. If
- <code class="Fn">RB_AUGMENT_CHECK</code>() is defined, then when an element
- is inserted or removed from the tree, it is invoked for every element in the
- tree that is the root of an altered subtree, working from the bottom of the
- tree up toward the top, until it returns false to indicate that it did not
- change the element and so working further up the tree would change nothing.
- It is typically used to maintain some associative accumulation of tree
- elements, such as sums, minima, maxima, and the like.</p>
-<p class="Pp" id="RB_UPDATE_AUGMENT">The
- <a class="permalink" href="#RB_UPDATE_AUGMENT"><code class="Fn">RB_UPDATE_AUGMENT</code></a>()
- macro updates augmentation data of the element <var class="Fa">elm</var> and
- its ancestors in the tree. If <code class="Fn">RB_AUGMENT</code>() is
- defined by the RB user, then when an element in the tree is changed, without
- changing the order of items in the tree, invoking this function on that
- element restores consistency of the augmentation state of the tree as if the
- element had been removed and inserted again.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<p class="Pp">The following example demonstrates how to declare a rank-balanced
- tree holding integers. Values are inserted into it and the contents of the
- tree are printed in order. To maintain the sum of the values in the tree,
- each element maintains the sum of its value and the sums from its left and
- right subtrees. Lastly, the internal structure of the tree is printed.</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>#define RB_AUGMENT(entry) sumaug(entry)
-
-#include &lt;sys/tree.h&gt;
-#include &lt;err.h&gt;
-#include &lt;stdio.h&gt;
-#include &lt;stdlib.h&gt;
-
-struct node {
- RB_ENTRY(node) entry;
- int i, sum;
-};
-
-int
-intcmp(struct node *e1, struct node *e2)
-{
- return (e1-&gt;i &lt; e2-&gt;i ? -1 : e1-&gt;i &gt; e2-&gt;i);
-}
-
-void
-sumaug(struct node *e)
-{
- e-&gt;sum = e-&gt;i;
- if (RB_LEFT(e, entry) != NULL)
- e-&gt;sum += RB_LEFT(e, entry)-&gt;sum;
- if (RB_RIGHT(e, entry) != NULL)
- e-&gt;sum += RB_RIGHT(e, entry)-&gt;sum;
-}
-
-RB_HEAD(inttree, node) head = RB_INITIALIZER(&amp;head);
-RB_GENERATE(inttree, node, entry, intcmp)
-
-int testdata[] = {
- 20, 16, 17, 13, 3, 6, 1, 8, 2, 4, 10, 19, 5, 9, 12, 15, 18,
- 7, 11, 14
-};
-
-void
-print_tree(struct node *n)
-{
- struct node *left, *right;
-
- if (n == NULL) {
- printf(&quot;nil&quot;);
- return;
- }
- left = RB_LEFT(n, entry);
- right = RB_RIGHT(n, entry);
- if (left == NULL &amp;&amp; right == NULL)
- printf(&quot;%d&quot;, n-&gt;i);
- else {
- printf(&quot;%d(&quot;, n-&gt;i);
- print_tree(left);
- printf(&quot;,&quot;);
- print_tree(right);
- printf(&quot;)&quot;);
- }
-}
-
-int
-main(void)
-{
- int i;
- struct node *n;
-
- for (i = 0; i &lt; sizeof(testdata) / sizeof(testdata[0]); i++) {
- if ((n = malloc(sizeof(struct node))) == NULL)
- err(1, NULL);
- n-&gt;i = testdata[i];
- RB_INSERT(inttree, &amp;head, n);
- }
-
- RB_FOREACH(n, inttree, &amp;head) {
- printf(&quot;%d\n&quot;, n-&gt;i);
- }
- print_tree(RB_ROOT(&amp;head));
- printf(&quot;\nSum of values = %d\n&quot;, RB_ROOT(&amp;head)-&gt;sum);
- return (0);
-}</pre>
-</div>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="NOTES"><a class="permalink" href="#NOTES">NOTES</a></h1>
-<p class="Pp">Trying to free a tree in the following way is a common error:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>SPLAY_FOREACH(var, NAME, head) {
- SPLAY_REMOVE(NAME, head, var);
- free(var);
-}
-free(head);</pre>
-</div>
-<p class="Pp" id="FOREACH">Since <var class="Va">var</var> is freed, the
- <a class="permalink" href="#FOREACH"><code class="Fn">FOREACH</code></a>()
- macro refers to a pointer that may have been reallocated already. Proper
- code needs a second variable.</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>for (var = SPLAY_MIN(NAME, head); var != NULL; var = nxt) {
- nxt = SPLAY_NEXT(NAME, head, var);
- SPLAY_REMOVE(NAME, head, var);
- free(var);
-}</pre>
-</div>
-<p class="Pp" id="RB_INSERT~2">Both
- <a class="permalink" href="#RB_INSERT~2"><code class="Fn">RB_INSERT</code></a>()
- and <code class="Fn">SPLAY_INSERT</code>() return
- <code class="Dv">NULL</code> if the element was inserted in the tree
- successfully, otherwise they return a pointer to the element with the
- colliding key.</p>
-<p class="Pp" id="RB_REMOVE~2">Accordingly,
- <a class="permalink" href="#RB_REMOVE~2"><code class="Fn">RB_REMOVE</code></a>()
- and <code class="Fn">SPLAY_REMOVE</code>() return the pointer to the removed
- element otherwise they return <code class="Dv">NULL</code> to indicate an
- error.</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">arb(3)</a>, <a class="Xr">queue(3)</a></p>
-<p class="Pp"><cite class="Rs"><span class="RsA">Bernhard Haeupler</span>,
- <span class="RsA">Siddhartha Sen</span>, and <span class="RsA">Robert E.
- Tarjan</span>, <span class="RsT">Rank-Balanced Trees</span>,
- <i class="RsJ">ACM Transactions on Algorithms</i>,
- <span class="RsN">4</span>, <span class="RsV">11</span>,
- <a class="RsU" href="http://sidsen.azurewebsites.net/papers/rb-trees-talg.pdf">http://sidsen.azurewebsites.net/papers/rb-trees-talg.pdf</a>,
- <span class="RsD">June 2015</span>.</cite></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The tree macros first appeared in <span class="Ux">FreeBSD
- 4.6</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The author of the tree macros is <span class="An">Niels
- Provos</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">August 2, 2024</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>