diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:59:05 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:59:05 -0400 |
| commit | 1f19f33e45791ea59aed048796fc68672c6723a5 (patch) | |
| tree | 54625fba89e91d1c2177801ec635e8528bba937f /static/freebsd/man3 | |
| parent | ac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (diff) | |
docs: Removed Precompiled HTML
Diffstat (limited to 'static/freebsd/man3')
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> — - <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 - <<a class="In">stdatomic.h</a>></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"><<a class="In">stdatomic.h</a>></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"><<a class="In">stdatomic.h</a>></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 (“ISO C11”)</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 (“ISO C11”)</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> - <<a class="Mt" href="mailto:ed@FreeBSD.org">ed@FreeBSD.org</a>> - <br/> - <span class="An">David Chisnall</span> - <<a class="Mt" href="mailto:theraven@FreeBSD.org">theraven@FreeBSD.org</a>></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> - — <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 - <<a class="In">sys/socket.h</a>></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 "hello" - string to the parent process using the received file descriptor.</p> -<div class="Bd Pp Li"> -<pre>#include <sys/socket.h> - -#include <err.h> -#include <stdio.h> -#include <string.h> -#include <sysexits.h> -#include <unistd.h> - -#define HELLOLEN sizeof("hello") - -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, "failed to create a pre-shared socket pair"); - - memset(&msg, 0, sizeof(msg)); - msg.msg_control = &cmsgbuf.buf; - msg.msg_controllen = sizeof(cmsgbuf.buf); - msg.msg_iov = NULL; - msg.msg_iovlen = 0; - - switch (fork()) { - case -1: - err(EX_OSERR, "fork"); - case 0: - close(presharedfd[0]); - strlcpy(buf, "hello", HELLOLEN); - - if (recvmsg(presharedfd[1], &msg, 0) == -1) - err(EX_IOERR, "failed to receive a message"); - if (msg.msg_flags & (MSG_CTRUNC | MSG_TRUNC)) - errx(EX_IOERR, "control message truncated"); - for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; - cmsg = CMSG_NXTHDR(&msg, cmsg)) { - if (cmsg->cmsg_len == CMSG_LEN(sizeof(int)) && - cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_RIGHTS) { - hellofd[1] = *(int *)CMSG_DATA(cmsg); - printf("child: sending '%s'\n", buf); - if (write(hellofd[1], buf, HELLOLEN) == -1) - err(EX_IOERR, "failed to send 'hello'"); - } - } - break; - default: - close(presharedfd[1]); - - if (socketpair(PF_LOCAL, SOCK_STREAM, 0, hellofd) == -1) - err(EX_OSERR, "failed to create a 'hello' socket pair"); - - cmsg = CMSG_FIRSTHDR(&msg); - cmsg->cmsg_len = CMSG_LEN(sizeof(int)); - cmsg->cmsg_level = SOL_SOCKET; - cmsg->cmsg_type = SCM_RIGHTS; - *(int *)CMSG_DATA(cmsg) = hellofd[1]; - - if (sendmsg(presharedfd[0], &msg, 0) == -1) - err(EX_IOERR, "sendmsg"); - close(hellofd[1]); - - if (read(hellofd[0], buf, HELLOLEN) == -1) - err(EX_IOERR, "failed to receive 'hello'"); - printf("parent: received '%s'\n", 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> - <<a class="Mt" href="mailto:jaredy@OpenBSD.org">jaredy@OpenBSD.org</a>> - 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> - <<a class="Mt" href="mailto:0mp@FreeBSD.org">0mp@FreeBSD.org</a>>.</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> — - <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 - <<a class="In">sys/qmath.h</a>></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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> — <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 - <<a class="In">sys/qmath.h</a>></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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> — - <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 - <<a class="In">sys/qmath.h</a>></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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> — - <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 - <<a class="In">sys/qmath.h</a>></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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> — <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 - <<a class="In">sys/qmath.h</a>></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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> - — <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 - <<a class="In">sys/qmath.h</a>></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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> — <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 - <<a class="In">sys/qmath.h</a>></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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> — <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 - <<a class="In">sys/qmath.h</a>></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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> — - <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 - <<a class="In">sys/qmath.h</a>></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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> — <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 - <<a class="In">stdlib.h</a>></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 7 AT&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, "Hello, world!"); - printf("Inside: %s\n", p); /* Valid. */ -} -printf("Outside: %s\n", 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> — <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 - <<a class="In">sys/arb.h</a>></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<8|16|32>_ENTRY</code>();</p> -<p class="Pp"><code class="Fn">ARB<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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<8|16|32>_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">&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, &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, &head); - np != NULL; np = ARB_NEXT(NAME, &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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>>, - 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> — <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 - <<a class="In">assert.h</a>></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"><<a class="In">assert.h</a>></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"><<a class="In">assert.h</a>></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, - "size mismatch");</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 - (“ISO C99”)</span>.</p> -<p class="Pp">The <code class="Fn">static_assert</code>() macro conforms to - <span class="St">ISO/IEC 9899:2011 - (“ISO C11”)</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 7 AT&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> — <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 - <<a class="In">bitstring.h</a>></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 “<var class="Fa">bitstr_t *</var>” - 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 <limits.h> -#include <bitstring.h> - -... -#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> — <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 6 AT&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> — <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 - <<a class="In">ieeefp.h</a>></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> — - <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"><<a class="In">threads.h</a>></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 ‘.a’ 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 ‘.so.X’ 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">‘X’ 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 7 AT&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> — <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 - <<a class="In">sys/types.h</a>></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> — <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 - <<a class="In">stddef.h</a>></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 - (“ANSI C89”)</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> — <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 - <<a class="In">pthread.h</a>></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 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 (“POSIX.1”)</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 2 of the Single UNIX Specification - (“SUSv2”)</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> — - <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 - <<a class="In">pthread_np.h</a>></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"><<a class="In">sys/cpuset.h</a>></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> - <<a class="Mt" href="mailto:davidxu@FreeBSD.org">davidxu@FreeBSD.org</a>>, - and this manpage was written by <span class="An">Xin LI</span> - <<a class="Mt" href="mailto:delphij@FreeBSD.org">delphij@FreeBSD.org</a>>.</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> - <<a class="Mt" href="mailto:lxv@omut.org">lxv@omut.org</a>>.</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> — - <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 - <<a class="In">pthread.h</a>></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 (“POSIX.1”)</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 2 of the Single UNIX Specification - (“SUSv2”)</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> — - <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 - <<a class="In">pthread_np.h</a>></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"><<a class="In">sys/cpuset.h</a>></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> - <<a class="Mt" href="mailto:davidxu@FreeBSD.org">davidxu@FreeBSD.org</a>>, - and this manpage was written by <span class="An">Xin LI</span> - <<a class="Mt" href="mailto:delphij@FreeBSD.org">delphij@FreeBSD.org</a>>.</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> — - <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 - <<a class="In">pthread_np.h</a>></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(&attr); - pthread_attr_get_np(tid, &attr); - pthread_attr_getstacksize(&attr, &size); - pthread_attr_destroy(&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> - <<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>>, - and the latter was revised by - <br/> - <span class="An">Olivier Certner</span> - <<a class="Mt" href="mailto:olce@FreeBSD.org">olce@FreeBSD.org</a>>.</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> — - <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 - <<a class="In">pthread_np.h</a>></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 0 if successful; otherwise the - value -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> - <<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</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_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> — - <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 - <<a class="In">pthread.h</a>></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> — - <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 - <<a class="In">pthread.h</a>></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> — - <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 - <<a class="In">pthread.h</a>></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 (“POSIX.1”)</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> - <<a class="Mt" href="mailto:d@openbsd.org">d@openbsd.org</a>> 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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 (“POSIX.1”)</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> — <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 - <<a class="In">pthread.h</a>></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 2 of the Single UNIX Specification - (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></code> - <br/> - <code class="In">#include <<a class="In">time.h</a>></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 - (“POSIX.1”)</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> - <<a class="Mt" href="mailto:davidxu@FreeBSD.org">davidxu@FreeBSD.org</a>></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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread_np.h</a>></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> - <<a class="Mt" href="mailto:jkim@FreeBSD.org">jkim@FreeBSD.org</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_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> — <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 - <<a class="In">pthread.h</a>></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 - <<a class="In">pthread_np.h</a>></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 (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></code> - <br/> - <code class="In">#include <<a class="In">signal.h</a>></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 (“POSIX.1”)</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> — - <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 - <<a class="In">pthread_np.h</a>></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> - <<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</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_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> — <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 - <<a class="In">pthread_np.h</a>></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> - <<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</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_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> — - <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 - <<a class="In">pthread.h</a>></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 4 of the Single UNIX Specification - (“SUSv4”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></code> - <br/> - <code class="In">#include <<a class="In">time.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 (“POSIX.1”)</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 2 of the Single UNIX Specification - (“SUSv2”)</span>. The - <code class="Fn">pthread_mutexattr_setrobust</code>() and - <code class="Fn">pthread_mutexattr_getrobust</code>() functions conform to - <span class="St">Version 4 of the Single UNIX Specification - (“SUSv4”)</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> — - <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 - <<a class="In">pthread_np.h</a>></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 “kind” 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 0 if successful; otherwise the value -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> — - <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 - <<a class="In">pthread_np.h</a>></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> — - <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 - <<a class="In">pthread.h</a>></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"><<a class="In">pthread.h</a>></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 (“POSIX.1”)</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> — - <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 - <<a class="In">pthread_np.h</a>></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> - <<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</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_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> — - <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 - <<a class="In">pthread_np.h</a>></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> - <<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</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_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> — - <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 - <<a class="In">pthread.h</a>></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 2 of the Single UNIX - Specification (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></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 2 of the Single UNIX - Specification (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></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 2 of the Single UNIX - Specification (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></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 2 of the Single UNIX - Specification (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></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 2 of the Single UNIX - Specification (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></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 2 of the Single - UNIX Specification (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></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 2 of the - Single UNIX Specification (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></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 2 of the Single UNIX - Specification (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></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 2 of the - Single UNIX Specification (“SUSv2”)</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> — - <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 - <<a class="In">pthread.h</a>></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->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 2 of the Single UNIX Specification - (“SUSv2”)</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> — <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 - <<a class="In">pthread.h</a>></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 (“POSIX.1”)</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> — <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 - <<a class="In">pthread_np.h</a>></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> - <<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</a>> - and - <br/> - <span class="An">Yuri Pankov</span> - <<a class="Mt" href="mailto:yuripv@yuripv.net">yuripv@yuripv.net</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_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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <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 - <<a class="In">pthread.h</a>></code> - <br/> - <code class="In">#include <<a class="In">signal.h</a>></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 (“POSIX.1”)</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> — - <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 - <<a class="In">pthread_np.h</a>></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> — - <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 - <<a class="In">pthread.h</a>></code> - <br/> - <code class="In">#include <<a class="In">signal.h</a>></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> — - <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 - <<a class="In">pthread.h</a>></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> — <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 - <<a class="In">pthread.h</a>></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 (“POSIX.2”)</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> — - <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 - <<a class="In">pthread_np.h</a>></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> - <<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</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_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> — - <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 - <<a class="In">pthread_np.h</a>></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> - <<a class="Mt" href="mailto:phantom@FreeBSD.org">phantom@FreeBSD.org</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_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> — <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 - <<a class="In">pthread.h</a>></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 “cancelability state” - 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;"> </dd> - <dt id="accept4"><a class="permalink" href="#accept4"><code class="Fn">accept4</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="aio_suspend"><a class="permalink" href="#aio_suspend"><code class="Fn">aio_suspend</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="connect"><a class="permalink" href="#connect"><code class="Fn">connect</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="clock_nanosleep"><a class="permalink" href="#clock_nanosleep"><code class="Fn">clock_nanosleep</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="close"><a class="permalink" href="#close"><code class="Fn">close</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="creat"><a class="permalink" href="#creat"><code class="Fn">creat</code></a>()</dt> - <dd style="width: auto;"> </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;"> </dd> - <dt id="fsync"><a class="permalink" href="#fsync"><code class="Fn">fsync</code></a>()</dt> - <dd style="width: auto;"> </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;"> </dd> - <dt id="mq_send"><a class="permalink" href="#mq_send"><code class="Fn">mq_send</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="mq_timedreceive"><a class="permalink" href="#mq_timedreceive"><code class="Fn">mq_timedreceive</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="mq_timedsend"><a class="permalink" href="#mq_timedsend"><code class="Fn">mq_timedsend</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="msync"><a class="permalink" href="#msync"><code class="Fn">msync</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="nanosleep"><a class="permalink" href="#nanosleep"><code class="Fn">nanosleep</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="open"><a class="permalink" href="#open"><code class="Fn">open</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="openat"><a class="permalink" href="#openat"><code class="Fn">openat</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="pause"><a class="permalink" href="#pause"><code class="Fn">pause</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="poll"><a class="permalink" href="#poll"><code class="Fn">poll</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="ppoll"><a class="permalink" href="#ppoll"><code class="Fn">ppoll</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="pselect"><a class="permalink" href="#pselect"><code class="Fn">pselect</code></a>()</dt> - <dd style="width: auto;"> </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;"> </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;"> </dd> - <dt id="pthread_join"><a class="permalink" href="#pthread_join"><code class="Fn">pthread_join</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt><code class="Fn">pthread_testcancel</code>()</dt> - <dd style="width: auto;"> </dd> - <dt id="read"><a class="permalink" href="#read"><code class="Fn">read</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="readv"><a class="permalink" href="#readv"><code class="Fn">readv</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="recv"><a class="permalink" href="#recv"><code class="Fn">recv</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="recvfrom"><a class="permalink" href="#recvfrom"><code class="Fn">recvfrom</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="recvmsg"><a class="permalink" href="#recvmsg"><code class="Fn">recvmsg</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="select"><a class="permalink" href="#select"><code class="Fn">select</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="sem_timedwait"><a class="permalink" href="#sem_timedwait"><code class="Fn">sem_timedwait</code></a>()</dt> - <dd style="width: auto;"> </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;"> </dd> - <dt id="sem_wait"><a class="permalink" href="#sem_wait"><code class="Fn">sem_wait</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="send"><a class="permalink" href="#send"><code class="Fn">send</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="sendmsg"><a class="permalink" href="#sendmsg"><code class="Fn">sendmsg</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="sendto"><a class="permalink" href="#sendto"><code class="Fn">sendto</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="sigsuspend"><a class="permalink" href="#sigsuspend"><code class="Fn">sigsuspend</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="sigtimedwait"><a class="permalink" href="#sigtimedwait"><code class="Fn">sigtimedwait</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="sigwaitinfo"><a class="permalink" href="#sigwaitinfo"><code class="Fn">sigwaitinfo</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="sigwait"><a class="permalink" href="#sigwait"><code class="Fn">sigwait</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="sleep"><a class="permalink" href="#sleep"><code class="Fn">sleep</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="system"><a class="permalink" href="#system"><code class="Fn">system</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="tcdrain"><a class="permalink" href="#tcdrain"><code class="Fn">tcdrain</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="usleep"><a class="permalink" href="#usleep"><code class="Fn">usleep</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="wait"><a class="permalink" href="#wait"><code class="Fn">wait</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="wait3"><a class="permalink" href="#wait3"><code class="Fn">wait3</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="wait4"><a class="permalink" href="#wait4"><code class="Fn">wait4</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="wait6"><a class="permalink" href="#wait6"><code class="Fn">wait6</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="waitid"><a class="permalink" href="#waitid"><code class="Fn">waitid</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="waitpid"><a class="permalink" href="#waitpid"><code class="Fn">waitpid</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="write"><a class="permalink" href="#write"><code class="Fn">write</code></a>()</dt> - <dd style="width: auto;"> </dd> - <dt id="writev"><a class="permalink" href="#writev"><code class="Fn">writev</code></a>()</dt> - <dd style="width: auto;"> </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 (“POSIX.1”)</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> - <<a class="Mt" href="mailto:d@openbsd.org">d@openbsd.org</a>> 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> — - <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 - <<a class="In">pthread.h</a>></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 - (“POSIX.1”)</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> — - <span class="Nd">fixed-point math library based on the “Q” - 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 - <<a class="In">sys/qmath.h</a>></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 “Q” 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 “Q” 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 ‘C’, - fractional ‘F’, integer ‘I’ and sign - ‘S’. 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(&a, 0, 0, 16); -Q_INI(&pi, 3, 14159, 16); -Q_INI(&r, 4, 2, 16); - -Q_QCLONEQ(&a, r); -Q_QMULQ(&a, r); -Q_QMULQ(&a, pi); - -Q_TOSTR(a, -1, 10, buf, sizeof(buf)); -printf("%s\n", 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(&s32, 0, 0, 8); -Q_QFRACI(&s32, 5, 3); -char buf[Q_MAXSTRLEN(s32, 10)]; -Q_TOSTR(s32, -1, 10, buf, sizeof(buf)); -printf(Q_DEBUG(s32, "", "\n\ttostr=%s\n\n", 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>"s32"@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 "\" 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> - <<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>> - 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> — <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 - <<a class="In">sys/queue.h</a>></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(&head); /* Initialize the list. */ - -n1 = malloc(sizeof(struct entry)); /* Insert at the head. */ -SLIST_INSERT_HEAD(&head, n1, entries); - -n2 = malloc(sizeof(struct entry)); /* Insert after. */ -SLIST_INSERT_AFTER(n1, n2, entries); - -SLIST_REMOVE(&head, n2, entry, entries);/* Deletion. */ -free(n2); - -n3 = SLIST_FIRST(&head); -SLIST_REMOVE_HEAD(&head, entries); /* Deletion from the head. */ -free(n3); - /* Forward traversal. */ -SLIST_FOREACH(np, &head, entries) - np-> ... - /* Safe forward traversal. */ -SLIST_FOREACH_SAFE(np, &head, entries, np_temp) { - np->do_stuff(); - ... - SLIST_REMOVE(&head, np, entry, entries); - free(np); -} - -while (!SLIST_EMPTY(&head)) { /* List Deletion. */ - n1 = SLIST_FIRST(&head); - SLIST_REMOVE_HEAD(&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(&head); /* Initialize the queue. */ - -n1 = malloc(sizeof(struct entry)); /* Insert at the head. */ -STAILQ_INSERT_HEAD(&head, n1, entries); - -n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */ -STAILQ_INSERT_TAIL(&head, n1, entries); - -n2 = malloc(sizeof(struct entry)); /* Insert after. */ -STAILQ_INSERT_AFTER(&head, n1, n2, entries); - /* Deletion. */ -STAILQ_REMOVE(&head, n2, entry, entries); -free(n2); - /* Deletion from the head. */ -n3 = STAILQ_FIRST(&head); -STAILQ_REMOVE_HEAD(&head, entries); -free(n3); - /* Forward traversal. */ -STAILQ_FOREACH(np, &head, entries) - np-> ... - /* Safe forward traversal. */ -STAILQ_FOREACH_SAFE(np, &head, entries, np_temp) { - np->do_stuff(); - ... - STAILQ_REMOVE(&head, np, entry, entries); - free(np); -} - /* TailQ Deletion. */ -while (!STAILQ_EMPTY(&head)) { - n1 = STAILQ_FIRST(&head); - STAILQ_REMOVE_HEAD(&head, entries); - free(n1); -} - /* Faster TailQ Deletion. */ -n1 = STAILQ_FIRST(&head); -while (n1 != NULL) { - n2 = STAILQ_NEXT(n1, entries); - free(n1); - n1 = n2; -} -STAILQ_INIT(&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(&head); /* Initialize the list. */ - -n1 = malloc(sizeof(struct entry)); /* Insert at the head. */ -LIST_INSERT_HEAD(&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, &head, entries) - np-> ... - - /* Safe forward traversal. */ -LIST_FOREACH_SAFE(np, &head, entries, np_temp) { - np->do_stuff(); - ... - LIST_REMOVE(np, entries); - free(np); -} - -while (!LIST_EMPTY(&head)) { /* List Deletion. */ - n1 = LIST_FIRST(&head); - LIST_REMOVE(n1, entries); - free(n1); -} - -n1 = LIST_FIRST(&head); /* Faster List Deletion. */ -while (n1 != NULL) { - n2 = LIST_NEXT(n1, entries); - free(n1); - n1 = n2; -} -LIST_INIT(&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(&head); /* Initialize the queue. */ - -n1 = malloc(sizeof(struct entry)); /* Insert at the head. */ -TAILQ_INSERT_HEAD(&head, n1, entries); - -n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */ -TAILQ_INSERT_TAIL(&head, n1, entries); - -n2 = malloc(sizeof(struct entry)); /* Insert after. */ -TAILQ_INSERT_AFTER(&head, n1, n2, entries); - -n3 = malloc(sizeof(struct entry)); /* Insert before. */ -TAILQ_INSERT_BEFORE(n2, n3, entries); - -TAILQ_REMOVE(&head, n2, entries); /* Deletion. */ -free(n2); - -n4 = malloc(sizeof(struct entry)); /* Replacement. */ -TAILQ_REPLACE(&head, n3, n4, entries); -free(n3); - /* Forward traversal. */ -TAILQ_FOREACH(np, &head, entries) - np-> ... - /* Safe forward traversal. */ -TAILQ_FOREACH_SAFE(np, &head, entries, np_temp) { - np->do_stuff(); - ... - TAILQ_REMOVE(&head, np, entries); - free(np); -} - /* Reverse traversal. */ -TAILQ_FOREACH_REVERSE(np, &head, tailhead, entries) - np-> ... - /* TailQ Deletion. */ -while (!TAILQ_EMPTY(&head)) { - n1 = TAILQ_FIRST(&head); - TAILQ_REMOVE(&head, n1, entries); - free(n1); -} - /* Faster TailQ Deletion. */ -n1 = TAILQ_FIRST(&head); -while (n1 != NULL) { - n2 = TAILQ_NEXT(n1, entries); - free(n1); - n1 = n2; -} -TAILQ_INIT(&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"><<a class="In">sys/queue.h</a>></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"><<a class="In">sys/queue.h</a>></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"><<a class="In">sys/queue.h</a>></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">&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> — - <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 - <<a class="In">signal.h</a>></code></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> -<p class="Pp">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 (“POSIX.1”)</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> — <span class="Nd">signal - generation information</span></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> -<p class="Pp"><code class="In">#include - <<a class="In">signal.h</a>></code></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> -<p class="Pp">A process may request signal information when it is catching a - signal. The information specifies why the system generated that signal. To - request signal information in a signal handler, the user can set - <code class="Dv">SA_SIGINFO</code> in <var class="Va">sa_flags</var> before - <a class="Xr">sigaction(2)</a> is called, otherwise the user can use - <a class="Xr">sigwaitinfo(2)</a> and <a class="Xr">sigtimedwait(2)</a> to - get signal information. In either case, the system returns the information - in a structure of type <var class="Vt">siginfo_t</var>, which includes the - following information:</p> -<table class="Bl-column"> - <tr id="Type"> - <td><a class="permalink" href="#Type"><b class="Sy">Type</b></a></td> - <td><a class="permalink" href="#Member"><b class="Sy" id="Member">Member</b></a></td> - <td><a class="permalink" href="#Description"><b class="Sy" id="Description">Description</b></a></td> - </tr> - <tr id="si_signo"> - <td><var class="Vt">int</var></td> - <td><var class="Va">si_signo</var></td> - <td>signal number</td> - </tr> - <tr id="si_errno"> - <td><var class="Vt">int</var></td> - <td><var class="Va">si_errno</var></td> - <td>error number</td> - </tr> - <tr id="si_code"> - <td><var class="Vt">int</var></td> - <td><var class="Va">si_code</var></td> - <td>signal code</td> - </tr> - <tr id="si_value"> - <td><var class="Vt">union sigval</var></td> - <td><var class="Va">si_value</var></td> - <td>signal value</td> - </tr> - <tr id="si_pid"> - <td><var class="Vt">pid_t</var></td> - <td><var class="Va">si_pid</var></td> - <td>sending process ID</td> - </tr> - <tr id="si_uid"> - <td><var class="Vt">uid_t</var></td> - <td><var class="Va">si_uid</var></td> - <td>sending process's real user ID</td> - </tr> - <tr id="*si_addr"> - <td><var class="Vt">void</var></td> - <td><var class="Va">*si_addr</var></td> - <td>virtual address</td> - </tr> - <tr id="si_status"> - <td><var class="Vt">int</var></td> - <td><var class="Va">si_status</var></td> - <td>exit value or signal</td> - </tr> - <tr id="si_band"> - <td><var class="Vt">long</var></td> - <td><var class="Va">si_band</var></td> - <td>band event for <code class="Dv">SIGPOLL</code></td> - </tr> - <tr id="si_trapno"> - <td><var class="Vt">int</var></td> - <td><var class="Va">si_trapno</var></td> - <td>machine trap code</td> - </tr> - <tr id="si_timerid"> - <td><var class="Vt">int</var></td> - <td><var class="Va">si_timerid</var></td> - <td>POSIX timer ID</td> - </tr> - <tr id="si_overrun"> - <td><var class="Vt">int</var></td> - <td><var class="Va">si_overrun</var></td> - <td>POSIX timer overrun count</td> - </tr> - <tr id="si_mqd"> - <td><var class="Vt">int</var></td> - <td><var class="Va">si_mqd</var></td> - <td>POSIX message queue ID</td> - </tr> - <tr id="si_syscall"> - <td><var class="Vt">int</var></td> - <td><var class="Va">si_syscall</var></td> - <td>system-call number for system calls blocked by Capsicum</td> - </tr> -</table> -<p class="Pp">The <var class="Va">si_signo</var> member contains the signal - number.</p> -<p class="Pp">The <var class="Va">si_errno</var> member contains an error number - defined in the file - <code class="In"><<a class="In">errno.h</a>></code>.</p> -<p class="Pp">The <var class="Va">si_code</var> member contains a code which - describes the cause of the signal. The macros specified in the - <b class="Sy">Code</b> column of the following table are defined for use as - values of <var class="Va">si_code</var> that are signal-specific or - non-signal-specific reasons why the signal was generated:</p> -<table class="Bl-column"> - <tr id="Signal"> - <td><a class="permalink" href="#Signal"><b class="Sy">Signal</b></a></td> - <td><a class="permalink" href="#Code"><b class="Sy" id="Code">Code</b></a></td> - <td><a class="permalink" href="#Reason"><b class="Sy" id="Reason">Reason</b></a></td> - </tr> - <tr id="SIGILL"> - <td><a class="permalink" href="#SIGILL"><code class="Dv">SIGILL</code></a></td> - <td><a class="permalink" href="#ILL_ILLOPC"><code class="Dv" id="ILL_ILLOPC">ILL_ILLOPC</code></a></td> - <td>illegal opcode</td> - </tr> - <tr id="ILL_ILLOPN"> - <td></td> - <td><a class="permalink" href="#ILL_ILLOPN"><code class="Dv">ILL_ILLOPN</code></a></td> - <td>illegal operand</td> - </tr> - <tr id="ILL_ILLADR"> - <td></td> - <td><a class="permalink" href="#ILL_ILLADR"><code class="Dv">ILL_ILLADR</code></a></td> - <td>illegal addressing mode</td> - </tr> - <tr id="ILL_ILLTRP"> - <td></td> - <td><a class="permalink" href="#ILL_ILLTRP"><code class="Dv">ILL_ILLTRP</code></a></td> - <td>illegal trap</td> - </tr> - <tr id="ILL_PRVOPC"> - <td></td> - <td><a class="permalink" href="#ILL_PRVOPC"><code class="Dv">ILL_PRVOPC</code></a></td> - <td>illegal privileged opcode</td> - </tr> - <tr id="ILL_PRVREG"> - <td></td> - <td><a class="permalink" href="#ILL_PRVREG"><code class="Dv">ILL_PRVREG</code></a></td> - <td>illegal privileged register</td> - </tr> - <tr id="ILL_COPROC"> - <td></td> - <td><a class="permalink" href="#ILL_COPROC"><code class="Dv">ILL_COPROC</code></a></td> - <td>coprocessor error</td> - </tr> - <tr id="ILL_BADSTK"> - <td></td> - <td><a class="permalink" href="#ILL_BADSTK"><code class="Dv">ILL_BADSTK</code></a></td> - <td>internal stack error</td> - </tr> - <tr id="SIGFPE"> - <td><a class="permalink" href="#SIGFPE"><code class="Dv">SIGFPE</code></a></td> - <td><a class="permalink" href="#FPE_INTDIV"><code class="Dv" id="FPE_INTDIV">FPE_INTDIV</code></a></td> - <td>integer divide by zero</td> - </tr> - <tr id="FPE_INTOVF"> - <td></td> - <td><a class="permalink" href="#FPE_INTOVF"><code class="Dv">FPE_INTOVF</code></a></td> - <td>integer overflow</td> - </tr> - <tr id="FPE_FLTDIV"> - <td></td> - <td><a class="permalink" href="#FPE_FLTDIV"><code class="Dv">FPE_FLTDIV</code></a></td> - <td>floating-point divide by zero</td> - </tr> - <tr id="FPE_FLTOVF"> - <td></td> - <td><a class="permalink" href="#FPE_FLTOVF"><code class="Dv">FPE_FLTOVF</code></a></td> - <td>floating-point overflow</td> - </tr> - <tr id="FPE_FLTUND"> - <td></td> - <td><a class="permalink" href="#FPE_FLTUND"><code class="Dv">FPE_FLTUND</code></a></td> - <td>floating-point underflow</td> - </tr> - <tr id="FPE_FLTRES"> - <td></td> - <td><a class="permalink" href="#FPE_FLTRES"><code class="Dv">FPE_FLTRES</code></a></td> - <td>floating-point inexact result</td> - </tr> - <tr id="FPE_FLTINV"> - <td></td> - <td><a class="permalink" href="#FPE_FLTINV"><code class="Dv">FPE_FLTINV</code></a></td> - <td>invalid floating-point operation</td> - </tr> - <tr id="FPE_FLTSUB"> - <td></td> - <td><a class="permalink" href="#FPE_FLTSUB"><code class="Dv">FPE_FLTSUB</code></a></td> - <td>subscript out of range</td> - </tr> - <tr id="SIGSEGV"> - <td><a class="permalink" href="#SIGSEGV"><code class="Dv">SIGSEGV</code></a></td> - <td><a class="permalink" href="#SEGV_MAPERR"><code class="Dv" id="SEGV_MAPERR">SEGV_MAPERR</code></a></td> - <td>address not mapped to object</td> - </tr> - <tr id="SEGV_ACCERR"> - <td></td> - <td><a class="permalink" href="#SEGV_ACCERR"><code class="Dv">SEGV_ACCERR</code></a></td> - <td>invalid permissions for mapped object</td> - </tr> - <tr id="SIGBUS"> - <td><a class="permalink" href="#SIGBUS"><code class="Dv">SIGBUS</code></a></td> - <td><a class="permalink" href="#BUS_ADRALN"><code class="Dv" id="BUS_ADRALN">BUS_ADRALN</code></a></td> - <td>invalid address alignment</td> - </tr> - <tr id="BUS_ADRERR"> - <td></td> - <td><a class="permalink" href="#BUS_ADRERR"><code class="Dv">BUS_ADRERR</code></a></td> - <td>nonexistent physical address</td> - </tr> - <tr id="BUS_OBJERR"> - <td></td> - <td><a class="permalink" href="#BUS_OBJERR"><code class="Dv">BUS_OBJERR</code></a></td> - <td>object-specific hardware error</td> - </tr> - <tr id="BUS_OOMERR"> - <td></td> - <td><a class="permalink" href="#BUS_OOMERR"><code class="Dv">BUS_OOMERR</code></a></td> - <td>cannot alloc a page to map at fault</td> - </tr> - <tr id="SIGTRAP"> - <td><a class="permalink" href="#SIGTRAP"><code class="Dv">SIGTRAP</code></a></td> - <td><a class="permalink" href="#TRAP_BRKPT"><code class="Dv" id="TRAP_BRKPT">TRAP_BRKPT</code></a></td> - <td>process breakpoint</td> - </tr> - <tr id="TRAP_TRACE"> - <td></td> - <td><a class="permalink" href="#TRAP_TRACE"><code class="Dv">TRAP_TRACE</code></a></td> - <td>process trace trap</td> - </tr> - <tr id="TRAP_DTRACE"> - <td></td> - <td><a class="permalink" href="#TRAP_DTRACE"><code class="Dv">TRAP_DTRACE</code></a></td> - <td>DTrace induced trap</td> - </tr> - <tr id="TRAP_CAP"> - <td></td> - <td><a class="permalink" href="#TRAP_CAP"><code class="Dv">TRAP_CAP</code></a></td> - <td>capabilities protective trap</td> - </tr> - <tr id="SIGCHLD"> - <td><a class="permalink" href="#SIGCHLD"><code class="Dv">SIGCHLD</code></a></td> - <td><a class="permalink" href="#CLD_EXITED"><code class="Dv" id="CLD_EXITED">CLD_EXITED</code></a></td> - <td>child has exited</td> - </tr> - <tr id="CLD_KILLED"> - <td></td> - <td><a class="permalink" href="#CLD_KILLED"><code class="Dv">CLD_KILLED</code></a></td> - <td>child has terminated abnormally and did not create a core file</td> - </tr> - <tr id="CLD_DUMPED"> - <td></td> - <td><a class="permalink" href="#CLD_DUMPED"><code class="Dv">CLD_DUMPED</code></a></td> - <td>child has terminated abnormally and created a core file</td> - </tr> - <tr id="CLD_TRAPPED"> - <td></td> - <td><a class="permalink" href="#CLD_TRAPPED"><code class="Dv">CLD_TRAPPED</code></a></td> - <td>traced child has trapped</td> - </tr> - <tr id="CLD_STOPPED"> - <td></td> - <td><a class="permalink" href="#CLD_STOPPED"><code class="Dv">CLD_STOPPED</code></a></td> - <td>child has stopped</td> - </tr> - <tr id="CLD_CONTINUED"> - <td></td> - <td><a class="permalink" href="#CLD_CONTINUED"><code class="Dv">CLD_CONTINUED</code></a></td> - <td>stopped child has continued</td> - </tr> - <tr id="SIGPOLL"> - <td><a class="permalink" href="#SIGPOLL"><code class="Dv">SIGPOLL</code></a></td> - <td><a class="permalink" href="#POLL_IN"><code class="Dv" id="POLL_IN">POLL_IN</code></a></td> - <td>data input available</td> - </tr> - <tr id="POLL_OUT"> - <td></td> - <td><a class="permalink" href="#POLL_OUT"><code class="Dv">POLL_OUT</code></a></td> - <td>output buffers available</td> - </tr> - <tr id="POLL_MSG"> - <td></td> - <td><a class="permalink" href="#POLL_MSG"><code class="Dv">POLL_MSG</code></a></td> - <td>input message available</td> - </tr> - <tr id="POLL_ERR"> - <td></td> - <td><a class="permalink" href="#POLL_ERR"><code class="Dv">POLL_ERR</code></a></td> - <td>I/O error</td> - </tr> - <tr id="POLL_PRI"> - <td></td> - <td><a class="permalink" href="#POLL_PRI"><code class="Dv">POLL_PRI</code></a></td> - <td>high priority input available</td> - </tr> - <tr id="POLL_HUP"> - <td></td> - <td><a class="permalink" href="#POLL_HUP"><code class="Dv">POLL_HUP</code></a></td> - <td>device disconnected</td> - </tr> - <tr id="SI_NOINFO"> - <td>Any</td> - <td><a class="permalink" href="#SI_NOINFO"><code class="Dv">SI_NOINFO</code></a></td> - <td>Only the <var class="Va">si_signo</var> member is meaningful; the value - of all other members is unspecified.</td> - </tr> - <tr id="SI_USER"> - <td></td> - <td><a class="permalink" href="#SI_USER"><code class="Dv">SI_USER</code></a></td> - <td>signal sent by <a class="Xr">kill(2)</a></td> - </tr> - <tr id="SI_QUEUE"> - <td></td> - <td><a class="permalink" href="#SI_QUEUE"><code class="Dv">SI_QUEUE</code></a></td> - <td>signal sent by <a class="Xr">sigqueue(2)</a></td> - </tr> - <tr id="SI_TIMER"> - <td></td> - <td><a class="permalink" href="#SI_TIMER"><code class="Dv">SI_TIMER</code></a></td> - <td>signal generated by expiration of a timer set by - <a class="Xr">timer_settime(2)</a></td> - </tr> - <tr id="SI_ASYNCIO"> - <td></td> - <td><a class="permalink" href="#SI_ASYNCIO"><code class="Dv">SI_ASYNCIO</code></a></td> - <td>signal generated by completion of an asynchronous I/O request</td> - </tr> - <tr id="SI_MESGQ"> - <td></td> - <td><a class="permalink" href="#SI_MESGQ"><code class="Dv">SI_MESGQ</code></a></td> - <td>signal generated by arrival of a message on an empty message queue</td> - </tr> - <tr id="SI_KERNEL"> - <td></td> - <td><a class="permalink" href="#SI_KERNEL"><code class="Dv">SI_KERNEL</code></a></td> - <td>signal generated by miscellaneous parts of the kernel</td> - </tr> - <tr id="SI_LWP"> - <td></td> - <td><a class="permalink" href="#SI_LWP"><code class="Dv">SI_LWP</code></a></td> - <td>signal sent by <a class="Xr">pthread_kill(3)</a></td> - </tr> -</table> -<p class="Pp">For synchronous signals, <var class="Va">si_addr</var> is - generally set to the address of the faulting instruction. However, - synchronous signals raised by a faulting memory access such as - <code class="Dv">SIGSEGV</code> and <code class="Dv">SIGBUS</code> may - report the address of the faulting memory access (if available) in - <var class="Va">si_addr</var> instead. Additionally - <code class="Dv">SIGTRAP</code> raised by a hardware watchpoint exception - may report the data address that triggered the watchpoint in - <var class="Va">si_addr</var>.</p> -<p class="Pp">Synchronous signals set <var class="Va">si_trapno</var> to a - machine-dependent trap number.</p> -<p class="Pp">In addition, the following signal-specific information is - available:</p> -<table class="Bl-column"> - <tr id="Signal~2"> - <td><a class="permalink" href="#Signal~2"><b class="Sy">Signal</b></a></td> - <td><a class="permalink" href="#Member~2"><b class="Sy" id="Member~2">Member</b></a></td> - <td><a class="permalink" href="#Value"><b class="Sy" id="Value">Value</b></a></td> - </tr> - <tr id="SIGCHLD~2"> - <td><a class="permalink" href="#SIGCHLD~2"><code class="Dv">SIGCHLD</code></a></td> - <td><var class="Va">si_pid</var></td> - <td>child process ID</td> - </tr> - <tr id="si_status~2"> - <td></td> - <td><var class="Va">si_status</var></td> - <td>exit value or signal; if <var class="Va">si_code</var> is equal to - <code class="Dv">CLD_EXITED</code>, then it is equal to the exit value of - the child process, otherwise, it is equal to a signal that caused the - child process to change state.</td> - </tr> - <tr id="si_uid~2"> - <td></td> - <td><var class="Va">si_uid</var></td> - <td>real user ID of the process that sent the signal</td> - </tr> - <tr id="SIGPOLL~2"> - <td><a class="permalink" href="#SIGPOLL~2"><code class="Dv">SIGPOLL</code></a></td> - <td><var class="Va">si_band</var></td> - <td>band event for <code class="Dv">POLL_IN</code>, - <code class="Dv">POLL_OUT</code>, or <code class="Dv">POLL_MSG</code></td> - </tr> -</table> -<p class="Pp">Finally, the following code-specific information is available:</p> -<table class="Bl-column"> - <tr id="Code~2"> - <td><a class="permalink" href="#Code~2"><b class="Sy">Code</b></a></td> - <td><a class="permalink" href="#Member~3"><b class="Sy" id="Member~3">Member</b></a></td> - <td><a class="permalink" href="#Value~2"><b class="Sy" id="Value~2">Value</b></a></td> - </tr> - <tr id="SI_USER~2"> - <td><a class="permalink" href="#SI_USER~2"><code class="Dv">SI_USER</code></a></td> - <td><var class="Va">si_pid</var></td> - <td>the process ID that sent the signal</td> - </tr> - <tr id="si_uid~3"> - <td></td> - <td><var class="Va">si_uid</var></td> - <td>real user ID of the process that sent the signal</td> - </tr> - <tr id="SI_QUEUE~2"> - <td><a class="permalink" href="#SI_QUEUE~2"><code class="Dv">SI_QUEUE</code></a></td> - <td><var class="Va">si_value</var></td> - <td>the value passed to <a class="Xr">sigqueue(2)</a> system call</td> - </tr> - <tr id="si_pid~2"> - <td></td> - <td><var class="Va">si_pid</var></td> - <td>the process ID that sent the signal</td> - </tr> - <tr id="si_uid~4"> - <td></td> - <td><var class="Va">si_uid</var></td> - <td>real user ID of the process that sent the signal</td> - </tr> - <tr id="SI_TIMER~2"> - <td><a class="permalink" href="#SI_TIMER~2"><code class="Dv">SI_TIMER</code></a></td> - <td><var class="Va">si_value</var></td> - <td>the value passed to <a class="Xr">timer_create(2)</a> system call</td> - </tr> - <tr id="si_timerid~2"> - <td></td> - <td><var class="Va">si_timerid</var></td> - <td>the timer ID returned by <a class="Xr">timer_create(2)</a> system - call</td> - </tr> - <tr id="si_overrun~2"> - <td></td> - <td><var class="Va">si_overrun</var></td> - <td>timer overrun count corresponding to the signal</td> - </tr> - <tr id="si_errno~2"> - <td></td> - <td><var class="Va">si_errno</var></td> - <td>If timer overrun will be {<code class="Dv">DELAYTIMER_MAX</code>}, an - error code defined in - <code class="In"><<a class="In">errno.h</a>></code> is set</td> - </tr> - <tr id="SI_ASYNCIO~2"> - <td><a class="permalink" href="#SI_ASYNCIO~2"><code class="Dv">SI_ASYNCIO</code></a></td> - <td><var class="Va">si_value</var></td> - <td>the value passed to aio system calls</td> - </tr> - <tr id="SI_MESGQ~2"> - <td><a class="permalink" href="#SI_MESGQ~2"><code class="Dv">SI_MESGQ</code></a></td> - <td><var class="Va">si_value</var></td> - <td>the value passed to <a class="Xr">mq_notify(2)</a> system call</td> - </tr> - <tr id="si_mqd~2"> - <td></td> - <td><var class="Va">si_mqd</var></td> - <td>the ID of the message queue which generated the signal</td> - </tr> - <tr id="SI_LWP~2"> - <td><a class="permalink" href="#SI_LWP~2"><code class="Dv">SI_LWP</code></a></td> - <td><var class="Va">si_pid</var></td> - <td>the process ID that sent the signal</td> - </tr> - <tr id="si_uid~5"> - <td></td> - <td><var class="Va">si_uid</var></td> - <td>real user ID of the process that sent the signal</td> - </tr> -</table> -</section> -<section class="Sh"> -<h1 class="Sh" id="NOTES"><a class="permalink" href="#NOTES">NOTES</a></h1> -<p class="Pp">Currently, the kernel never generates the - <code class="Dv">SIGPOLL</code> signal. <code class="Dv">SIGCHLD</code> - signal is queued when a process changed its status or exited. POSIX Realtime - Extensions like aio, timer, and message queue also queue signals. Signals - with code <code class="Dv">SI_USER</code>, <code class="Dv">SI_KERNEL</code> - or <code class="Dv">SI_LWP</code> are only queued if there are sufficient - resources; otherwise, <code class="Dv">SI_NOINFO</code> results. For some - hardware architectures, the exact value of <var class="Va">si_addr</var> - might not be available.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE - ALSO</a></h1> -<p class="Pp"><a class="Xr">aio_read(2)</a>, <a class="Xr">kill(2)</a>, - <a class="Xr">mq_notify(2)</a>, <a class="Xr">sigaction(2)</a>, - <a class="Xr">sigqueue(2)</a>, <a class="Xr">sigwaitinfo(2)</a>, - <a class="Xr">timer_create(2)</a>, <a class="Xr">timer_settime(2)</a>, - <a class="Xr">waitpid(2)</a>, <a class="Xr">pthread_kill(3)</a></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1> -<p class="Pp">The <var class="Vt">siginfo_t</var> type conforms to - <span class="St">IEEE Std 1003.1-2004 (“POSIX.1”)</span>.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> -<p class="Pp">Full support for POSIX signal information first appeared in - <span class="Ux">FreeBSD 7.0</span>. The codes - <code class="Dv">SI_USER</code> and <code class="Dv">SI_KERNEL</code> can be - generated as of <span class="Ux">FreeBSD 8.1</span>. The code - <code class="Dv">SI_LWP</code> can be generated as of - <span class="Ux">FreeBSD 9.0</span>.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1> -<p class="Pp">This manual page was written by <span class="An">David Xu</span> - <<a class="Mt" href="mailto:davidxu@FreeBSD.org">davidxu@FreeBSD.org</a>>.</p> -</section> -</div> -<table class="foot"> - <tr> - <td class="foot-date">February 17, 2021</td> - <td class="foot-os">FreeBSD 15.0</td> - </tr> -</table> 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> — - <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 - <<a class="In">netlink/netlink_snl.h</a>></code> - <br/> - <code class="In">#include - <<a class="In">netlink/netlink_snl_route.h</a>></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_<type></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_<type> "struct snl_state *ss" "void - *src" "void *target" . 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 <stdio.h> - -#include <netlink/netlink.h> -#include <netlink/netlink_route.h> -#include "netlink/netlink_snl.h" -#include "netlink/netlink_snl_route.h" - -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(&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(&ss), - }; - msg.hdr.nlmsg_len = sizeof(msg); - - if (!snl_send(&ss, &msg, sizeof(msg))) { - snl_free(&ss); - return (1); - } - - struct nlmsghdr *hdr; - while ((hdr = snl_read_message(&ss)) != NULL && hdr->nlmsg_type != NLMSG_DONE) { - if (hdr->nlmsg_seq != msg.hdr.nlmsg_seq) - break; - - struct nl_parsed_link link = {}; - if (!snl_parse_nlmsg(&ss, hdr, &link_parser, &link)) - continue; - printf("Link#%u %s mtu %u\n", 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> - <<a class="Mt" href="mailto:melifaro@FreeBSD.org">melifaro@FreeBSD.org</a>>.</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> — <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 “libstats”</span></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> -<p class="Pp"><code class="In">#include - <<a class="In">sys/arb.h</a>></code> - <br/> - <code class="In">#include <<a class="In">sys/qmath.h</a>></code> - <br/> - <code class="In">#include <<a class="In">sys/stats.h</a>></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<32|64>_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<32|64>_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<32|64>_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<32|64>_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<32|64>_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<32|64>_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<32|64></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_<abs|rel>_<dtype></code>(<var class="Fa">struct - statsblob *sb</var>, <var class="Fa">int32_t voi_id</var>, - <var class="Fa"><dtype> 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_<dtype></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"><dtype> - *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 “statsblob”, an object embedded within a contiguous memory - allocation that is mostly opaque to consumers and stores all required state. - A “statsblob” 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 “statsblob”, 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 “statsblob”, 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 - “out-of-band/bucket” values which did not match any bucket. - Histograms can be specified as - “<a class="permalink" href="#C"><i class="Em" id="C">C</i></a>ontinuous - <i class="Em">R</i>ange” (CRHIST), - “<i class="Em">D</i>iscrete <i class="Em">R</i>ange” - (DRHIST) or “<i class="Em">D</i>iscrete - <a class="permalink" href="#V"><i class="Em" id="V">V</i></a>alue” - (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 “visitor software design pattern”-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 "action == TPL_SR_*_GET", return the - subsystem's rates list ptr and count, locked or unlocked as - requested.</li> - <li>When called with "action == TPL_SR_RUNLOCK", unlock the - subsystem's rates list ptr and count. Pair with a prior "action == - TPL_SR_RLOCKED_GET" call.</li> - <li id="stats_tpl_sample_rates~3">When called with "action == - TPL_SR_PUT", 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>"<tplname>":<tplhash>, for example - "TCP_DEFAULT":1731235399</li> - <li>"<tplname>", for example "TCP_DEFAULT"</li> - <li>:<tplhash>, 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_<dtype></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_<dtype></code></a>() - and <code class="Fn">stats_voi_update_rel_<dtype></code>() functions - both update all the statistics associated with the VOI identified by - <var class="Fa">voi_id</var>. The “abs” call uses - <var class="Fa">voival</var> as an absolute value, whereas the - “rel” 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_<dtype></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_<dtype></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="", 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="", 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 "\" 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_<dtype></code>() and - <code class="Fn">stats_voi_update_rel_<dtype></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_<dtype></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> - ⟨lstewart@FreeBSD.org⟩ 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> — <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 - <<a class="In">stdarg.h</a>></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"><<a class="In">stdarg.h</a>></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("string %s\n", s); - break; - case 'd': /* int */ - d = va_arg(ap, int); - printf("int %d\n", d); - break; - case 'c': /* char */ - /* Note: char is promoted to int. */ - c = va_arg(ap, int); - printf("char %c\n", 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 (“ISO C99”)</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 - (“ANSI C89”)</span>. The - <code class="Fn">va_copy</code>() macro was introduced in - <span class="St">ISO/IEC 9899:1999 - (“ISO C99”)</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> — <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 Library (libc, -lc)</span> - <br/> - <code class="In">#include <<a class="In">stdbit.h</a>></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"><<a class="In">stdbit.h</a>></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"><<a class="In">stdbit.h</a>></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> - <<a class="Mt" href="mailto:fuz@FreeBSD.org">fuz@FreeBSD.org</a>></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> — - <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 - <<a class="In">stdckdint.h</a>></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 <assert.h> -#include <limits.h> -#include <stdckdint.h> - -int main(void) -{ - int result; - - assert(!ckd_add(&result, INT_MAX, 0)); - assert(result == INT_MAX); - assert(ckd_add(&result, INT_MAX, 1)); - assert(result == INT_MIN); - - assert(!ckd_sub(&result, INT_MIN, 0)); - assert(result == INT_MIN); - assert(ckd_sub(&result, INT_MIN, 1)); - assert(result == INT_MAX); - - assert(!ckd_mul(&result, INT_MAX / 2, 2)); - assert(result == INT_MAX - 1); - assert(ckd_mul(&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ørgrav</span> - <<a class="Mt" href="mailto:des@FreeBSD.org">des@FreeBSD.org</a>>.</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> — <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 - <<a class="In">sysexits.h</a>></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 “No message” 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 “cannot fork”, “cannot create - pipe”, 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 “not possible” - 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ö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;"> </dd> - <dt>The choice of an appropriate exit value is often ambiguous.</dt> - <dd style="width: auto;"> </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> — - <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 - <<a class="In">tgmath.h</a>></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"><<a class="In">tgmath.h</a>></code> provides - type-generic macros for - <code class="In"><<a class="In">math.h</a>></code> and - <code class="In"><<a class="In">complex.h</a>></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"><<a class="In">math.h</a>></code> and the complex - equivalents in <code class="In"><<a class="In">complex.h</a>></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"><<a class="In">complex.h</a>></code> and - <code class="In"><<a class="In">math.h</a>></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"><<a class="In">tgmath.h</a>></code> conforms to - <span class="St">ISO/IEC 9899:1999 - (“ISO C99”)</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"><<a class="In">tgmath.h</a>></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 - (“ISO C11”)</span>, the header - <code class="In"><<a class="In">tgmath.h</a>></code> could not be - implemented with strictly conforming C code and needed special compiler - support. As of <span class="St">ISO/IEC 9899:2011 - (“ISO C11”)</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"><<a class="In">math.h</a>></code> or - <code class="In"><<a class="In">complex.h</a>></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> - — <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 - <<a class="In">sys/time.h</a>></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"><<a class="In">sys/time.h</a>></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"><<a class="In">time.h</a>></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->tv_usec</var> or - <var class="Fa">res->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> — - <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 - <<a class="In">sys/tree.h</a>></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">&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, &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, &head); np != NULL; np = SPLAY_NEXT(NAME, &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">&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, &find); -resn = RB_NFIND(NAME, head, &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, &head); np - != NULL; np = RB_NEXT(NAME, &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 <sys/tree.h> -#include <err.h> -#include <stdio.h> -#include <stdlib.h> - -struct node { - RB_ENTRY(node) entry; - int i, sum; -}; - -int -intcmp(struct node *e1, struct node *e2) -{ - return (e1->i < e2->i ? -1 : e1->i > e2->i); -} - -void -sumaug(struct node *e) -{ - e->sum = e->i; - if (RB_LEFT(e, entry) != NULL) - e->sum += RB_LEFT(e, entry)->sum; - if (RB_RIGHT(e, entry) != NULL) - e->sum += RB_RIGHT(e, entry)->sum; -} - -RB_HEAD(inttree, node) head = RB_INITIALIZER(&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("nil"); - return; - } - left = RB_LEFT(n, entry); - right = RB_RIGHT(n, entry); - if (left == NULL && right == NULL) - printf("%d", n->i); - else { - printf("%d(", n->i); - print_tree(left); - printf(","); - print_tree(right); - printf(")"); - } -} - -int -main(void) -{ - int i; - struct node *n; - - for (i = 0; i < sizeof(testdata) / sizeof(testdata[0]); i++) { - if ((n = malloc(sizeof(struct node))) == NULL) - err(1, NULL); - n->i = testdata[i]; - RB_INSERT(inttree, &head, n); - } - - RB_FOREACH(n, inttree, &head) { - printf("%d\n", n->i); - } - print_tree(RB_ROOT(&head)); - printf("\nSum of values = %d\n", RB_ROOT(&head)->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> |
