mirror of
https://github.com/ocaml-tracing/ocaml-trace.git
synced 2026-03-09 04:17:56 -04:00
2 lines
7.2 KiB
HTML
2 lines
7.2 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Buf_chain (trace-fuchsia.Trace_fuchsia.Buf_chain)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.1.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../index.html">Index</a> » <a href="../../index.html">trace-fuchsia</a> » <a href="../index.html">Trace_fuchsia</a> » Buf_chain</nav><header class="odoc-preamble"><h1>Module <code><span>Trace_fuchsia.Buf_chain</span></code></h1><p>A set of buffers in use, and a set of ready buffers</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-buffers"><a href="#type-buffers" class="anchor"></a><code><span><span class="keyword">type</span> buffers</span><span> = </span></code><ol><li id="type-buffers.B_one" class="def variant constructor anchored"><a href="#type-buffers.B_one" class="anchor"></a><code><span>| </span><span><span class="constructor">B_one</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-buffers.buf" class="def record field anchored"><a href="#type-buffers.buf" class="anchor"></a><code><span><span class="keyword">mutable</span> buf : <a href="../Buf/index.html#type-t">Buf.t</a>;</span></code></li></ol><code><span>}</span></code></li><li id="type-buffers.B_many" class="def variant constructor anchored"><a href="#type-buffers.B_many" class="anchor"></a><code><span>| </span><span><span class="constructor">B_many</span> <span class="keyword">of</span> <span><span><a href="../Buf/index.html#type-t">Buf.t</a> <span class="xref-unresolved">Trace_fuchsia__.Lock.t</span></span> array</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>mask(thread id) -> buffer. This reduces contention</p><span class="comment-delim">*)</span></div></li></ol></div><div class="spec-doc"><p>Buffers in use</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = </span><span>{</span></code><ol><li id="type-t.bufs" class="def record field anchored"><a href="#type-t.bufs" class="anchor"></a><code><span>bufs : <a href="#type-buffers">buffers</a>;</span></code></li><li id="type-t.has_ready" class="def record field anchored"><a href="#type-t.has_ready" class="anchor"></a><code><span>has_ready : <span>bool <a href="../../../ocaml/Stdlib/Atomic/index.html#type-t">Stdlib.Atomic.t</a></span>;</span></code></li><li id="type-t.ready" class="def record field anchored"><a href="#type-t.ready" class="anchor"></a><code><span>ready : <span><span><a href="../Buf/index.html#type-t">Buf.t</a> <a href="../../../ocaml/Stdlib/Queue/index.html#type-t">Stdlib.Queue.t</a></span> <span class="xref-unresolved">Trace_fuchsia__.Lock.t</span></span>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Buffers that are full (enough) and must be written</p><span class="comment-delim">*)</span></div></li><li id="type-t.buf_pool" class="def record field anchored"><a href="#type-t.buf_pool" class="anchor"></a><code><span>buf_pool : <a href="../Buf_pool/index.html#type-t">Buf_pool.t</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>A set of buffers, some of which are ready to be written</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span><span class="label">sharded</span>:bool <span class="arrow">-></span></span> <span><span class="label">buf_pool</span>:<a href="../Buf_pool/index.html#type-t">Buf_pool.t</a> <span class="arrow">-></span></span> <span>unit <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a buffer chain.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">sharded</span> <p>if true, multiple buffers are created, to reduce contention on each buffer in case of concurrent access. This makes the buf chain thread-safe. If false, there is only one (unprotected) buffer.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ready_all_non_empty"><a href="#val-ready_all_non_empty" class="anchor"></a><code><span><span class="keyword">val</span> ready_all_non_empty : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Move all non-empty buffers to <code>ready</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-has_ready"><a href="#val-has_ready" class="anchor"></a><code><span><span class="keyword">val</span> has_ready : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pop_ready"><a href="#val-pop_ready" class="anchor"></a><code><span><span class="keyword">val</span> pop_ready : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span class="label">f</span>:<span>(<span><span><a href="../Buf/index.html#type-t">Buf.t</a> <a href="../../../ocaml/Stdlib/Queue/index.html#type-t">Stdlib.Queue.t</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Get access to ready buffers, then clean them up automatically</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-max_size_word"><a href="#val-max_size_word" class="anchor"></a><code><span><span class="keyword">val</span> max_size_word : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>Maximum size available, in words, for a single message</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_buf"><a href="#val-with_buf" class="anchor"></a><code><span><span class="keyword">val</span> with_buf : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span class="label">available_word</span>:int <span class="arrow">-></span></span> <span><span>(<span><a href="../Buf/index.html#type-t">Buf.t</a> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Obtain a buffer with at least <code>available_word</code> 64-bit words</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-dispose"><a href="#val-dispose" class="anchor"></a><code><span><span class="keyword">val</span> dispose : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Dispose of resources (here, recycle buffers)</p></div></div></div></body></html>
|