diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:43 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:43 -0400 |
| commit | ac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (patch) | |
| tree | 9367490586c84cba28652e443e3166d66c33b0d9 /static/freebsd/man3/bitstring.3 3.html | |
| parent | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (diff) | |
docs: Added All FreeBSD Manuals
Diffstat (limited to 'static/freebsd/man3/bitstring.3 3.html')
| -rw-r--r-- | static/freebsd/man3/bitstring.3 3.html | 380 |
1 files changed, 380 insertions, 0 deletions
diff --git a/static/freebsd/man3/bitstring.3 3.html b/static/freebsd/man3/bitstring.3 3.html new file mode 100644 index 00000000..9a6b8fdf --- /dev/null +++ b/static/freebsd/man3/bitstring.3 3.html @@ -0,0 +1,380 @@ +<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> |
