Skip to content

Commit dc58388

Browse files
committed
Add ability to register custom error function called on various error conditions; including ENOMEM
1 parent 3e982a3 commit dc58388

20 files changed

Lines changed: 342 additions & 127 deletions

doc/mimalloc-doc.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,30 @@ typedef void (mi_output_fun)(const char* msg, void* arg);
373373
/// like verbose or warning messages.
374374
void mi_register_output(mi_output_fun* out, void* arg);
375375

376+
/// Type of error callback functions.
377+
/// @param err Error code (see mi_register_error() for a complete list).
378+
/// @param arg Argument that was passed at registration to hold extra state.
379+
///
380+
/// @see mi_register_error()
381+
typedef void (mi_error_fun)(int err, void* arg);
382+
383+
/// Register an error callback function.
384+
/// @param errfun The error function that is called on an error (use \a NULL for default)
385+
/// @param arg Extra argument that will be passed on to the error function.
386+
///
387+
/// The \a errfun function is called on an error in mimalloc after emitting
388+
/// an error message (through the output function). It as always legal to just
389+
/// return from the \a errfun function in which case allocation functions generally
390+
/// return \a NULL or ignore the condition. The default function only calls abort()
391+
/// when compiled in secure mode with an \a EFAULT error. The possible error
392+
/// codes are:
393+
/// * \a EAGAIN: Double free was detected (only in debug and secure mode).
394+
/// * \a EFAULT: Corrupted free list or meta-data was detected (only in debug and secure mode).
395+
/// * \a ENOMEM: Not enough memory available to satisfy the request.
396+
/// * \a EOVERFLOW: Too large a request, for example in mi_calloc(), the \a count and \a size parameters are too large.
397+
/// * \a EINVAL: Trying to free or re-allocate an invalid pointer.
398+
void mi_register_error(mi_error_fun* errfun, void* arg);
399+
376400
/// Is a pointer part of our heap?
377401
/// @param p The pointer to check.
378402
/// @returns \a true if this is a pointer into our heap.

docs/group__extended.html

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@
124124
<tr class="memitem:gad823d23444a4b77a40f66bf075a98a0c"><td class="memItemLeft" align="right" valign="top">typedef void()&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__extended.html#gad823d23444a4b77a40f66bf075a98a0c">mi_output_fun</a>(const char *msg, void *arg)</td></tr>
125125
<tr class="memdesc:gad823d23444a4b77a40f66bf075a98a0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of output functions. <a href="#gad823d23444a4b77a40f66bf075a98a0c">More...</a><br /></td></tr>
126126
<tr class="separator:gad823d23444a4b77a40f66bf075a98a0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
127+
<tr class="memitem:ga251d369cda3f1c2a955c555486ed90e5"><td class="memItemLeft" align="right" valign="top">typedef void()&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__extended.html#ga251d369cda3f1c2a955c555486ed90e5">mi_error_fun</a>(int err, void *arg)</td></tr>
128+
<tr class="memdesc:ga251d369cda3f1c2a955c555486ed90e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of error callback functions. <a href="#ga251d369cda3f1c2a955c555486ed90e5">More...</a><br /></td></tr>
129+
<tr class="separator:ga251d369cda3f1c2a955c555486ed90e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
127130
</table><table class="memberdecls">
128131
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
129132
Functions</h2></td></tr>
@@ -169,6 +172,9 @@
169172
<tr class="memitem:gae5b17ff027cd2150b43a33040250cf3f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__extended.html#gae5b17ff027cd2150b43a33040250cf3f">mi_register_output</a> (<a class="el" href="group__extended.html#gad823d23444a4b77a40f66bf075a98a0c">mi_output_fun</a> *out, void *arg)</td></tr>
170173
<tr class="memdesc:gae5b17ff027cd2150b43a33040250cf3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register an output function. <a href="#gae5b17ff027cd2150b43a33040250cf3f">More...</a><br /></td></tr>
171174
<tr class="separator:gae5b17ff027cd2150b43a33040250cf3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
175+
<tr class="memitem:gaa1d55e0e894be240827e5d87ec3a1f45"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45">mi_register_error</a> (<a class="el" href="group__extended.html#ga251d369cda3f1c2a955c555486ed90e5">mi_error_fun</a> *errfun, void *arg)</td></tr>
176+
<tr class="memdesc:gaa1d55e0e894be240827e5d87ec3a1f45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register an error callback function. <a href="#gaa1d55e0e894be240827e5d87ec3a1f45">More...</a><br /></td></tr>
177+
<tr class="separator:gaa1d55e0e894be240827e5d87ec3a1f45"><td class="memSeparator" colspan="2">&#160;</td></tr>
172178
<tr class="memitem:ga5f071b10d4df1c3658e04e7fd67a94e6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6">mi_is_in_heap_region</a> (const void *p)</td></tr>
173179
<tr class="memdesc:ga5f071b10d4df1c3658e04e7fd67a94e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is a pointer part of our heap? <a href="#ga5f071b10d4df1c3658e04e7fd67a94e6">More...</a><br /></td></tr>
174180
<tr class="separator:ga5f071b10d4df1c3658e04e7fd67a94e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -225,6 +231,30 @@ <h2 class="memtitle"><span class="permalink"><a href="#ga299dae78d25ce112e384a98
225231
</dl>
226232
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece" title="Register a deferred free function.">mi_register_deferred_free</a> </dd></dl>
227233

234+
</div>
235+
</div>
236+
<a id="ga251d369cda3f1c2a955c555486ed90e5"></a>
237+
<h2 class="memtitle"><span class="permalink"><a href="#ga251d369cda3f1c2a955c555486ed90e5">&#9670;&nbsp;</a></span>mi_error_fun</h2>
238+
239+
<div class="memitem">
240+
<div class="memproto">
241+
<table class="memname">
242+
<tr>
243+
<td class="memname">typedef void() mi_error_fun(int err, void *arg)</td>
244+
</tr>
245+
</table>
246+
</div><div class="memdoc">
247+
248+
<p>Type of error callback functions. </p>
249+
<dl class="params"><dt>Parameters</dt><dd>
250+
<table class="params">
251+
<tr><td class="paramname">err</td><td>Error code (see <a class="el" href="group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45" title="Register an error callback function.">mi_register_error()</a> for a complete list). </td></tr>
252+
<tr><td class="paramname">arg</td><td>Argument that was passed at registration to hold extra state.</td></tr>
253+
</table>
254+
</dd>
255+
</dl>
256+
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45" title="Register an error callback function.">mi_register_error()</a> </dd></dl>
257+
228258
</div>
229259
</div>
230260
<a id="gad823d23444a4b77a40f66bf075a98a0c"></a>
@@ -419,6 +449,50 @@ <h2 class="memtitle"><span class="permalink"><a href="#ga3460a6ca91af97be4058f52
419449
</dl>
420450
<p>Some runtime systems use deferred free-ing, for example when using reference counting to limit the worst case free time. Such systems can register (re-entrant) deferred free function to free more memory on demand. When the <em>force</em> parameter is <em>true</em> all possible memory should be freed. The per-thread <em>heartbeat</em> parameter is monotonically increasing and guaranteed to be deterministic if the program allocates deterministically. The <em>deferred_free</em> function is guaranteed to be called deterministically after some number of allocations (regardless of freeing or available free memory). At most one <em>deferred_free</em> function can be active. </p>
421451

452+
</div>
453+
</div>
454+
<a id="gaa1d55e0e894be240827e5d87ec3a1f45"></a>
455+
<h2 class="memtitle"><span class="permalink"><a href="#gaa1d55e0e894be240827e5d87ec3a1f45">&#9670;&nbsp;</a></span>mi_register_error()</h2>
456+
457+
<div class="memitem">
458+
<div class="memproto">
459+
<table class="memname">
460+
<tr>
461+
<td class="memname">void mi_register_error </td>
462+
<td>(</td>
463+
<td class="paramtype"><a class="el" href="group__extended.html#ga251d369cda3f1c2a955c555486ed90e5">mi_error_fun</a> *&#160;</td>
464+
<td class="paramname"><em>errfun</em>, </td>
465+
</tr>
466+
<tr>
467+
<td class="paramkey"></td>
468+
<td></td>
469+
<td class="paramtype">void *&#160;</td>
470+
<td class="paramname"><em>arg</em>&#160;</td>
471+
</tr>
472+
<tr>
473+
<td></td>
474+
<td>)</td>
475+
<td></td><td></td>
476+
</tr>
477+
</table>
478+
</div><div class="memdoc">
479+
480+
<p>Register an error callback function. </p>
481+
<dl class="params"><dt>Parameters</dt><dd>
482+
<table class="params">
483+
<tr><td class="paramname">errfun</td><td>The error function that is called on an error (use <em>NULL</em> for default) </td></tr>
484+
<tr><td class="paramname">arg</td><td>Extra argument that will be passed on to the error function.</td></tr>
485+
</table>
486+
</dd>
487+
</dl>
488+
<p>The <em>errfun</em> function is called on an error in mimalloc after emitting an error message (through the output function). It as always legal to just return from the <em>errfun</em> function in which case allocation functions generally return <em>NULL</em> or ignore the condition. The default function only calls abort() when compiled in secure mode with an <em>EFAULT</em> error. The possible error codes are:</p><ul>
489+
<li><em>EAGAIN:</em> Double free was detected (only in debug and secure mode).</li>
490+
<li><em>EFAULT:</em> Corrupted free list or meta-data was detected (only in debug and secure mode).</li>
491+
<li><em>ENOMEM:</em> Not enough memory available to satisfy the request.</li>
492+
<li><em>EOVERFLOW:</em> Too large a request, for example in <a class="el" href="group__malloc.html#ga97fedb4f7107c592fd7f0f0a8949a57d" title="Allocate zero-initialized count elements of size bytes.">mi_calloc()</a>, the <em>count</em> and <em>size</em> parameters are too large.</li>
493+
<li><em>EINVAL:</em> Trying to free or re-allocate an invalid pointer. </li>
494+
</ul>
495+
422496
</div>
423497
</div>
424498
<a id="gae5b17ff027cd2150b43a33040250cf3f"></a>

docs/group__extended.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ var group__extended =
22
[
33
[ "MI_SMALL_SIZE_MAX", "group__extended.html#ga1ea64283508718d9d645c38efc2f4305", null ],
44
[ "mi_deferred_free_fun", "group__extended.html#ga299dae78d25ce112e384a98b7309c5be", null ],
5+
[ "mi_error_fun", "group__extended.html#ga251d369cda3f1c2a955c555486ed90e5", null ],
56
[ "mi_output_fun", "group__extended.html#gad823d23444a4b77a40f66bf075a98a0c", null ],
67
[ "mi_collect", "group__extended.html#ga421430e2226d7d468529cec457396756", null ],
78
[ "mi_good_size", "group__extended.html#gac057927cd06c854b45fe7847e921bd47", null ],
89
[ "mi_is_in_heap_region", "group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6", null ],
910
[ "mi_is_redirected", "group__extended.html#gaad25050b19f30cd79397b227e0157a3f", null ],
1011
[ "mi_malloc_small", "group__extended.html#ga7136c2e55cb22c98ecf95d08d6debb99", null ],
1112
[ "mi_register_deferred_free", "group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece", null ],
13+
[ "mi_register_error", "group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45", null ],
1214
[ "mi_register_output", "group__extended.html#gae5b17ff027cd2150b43a33040250cf3f", null ],
1315
[ "mi_reserve_huge_os_pages_at", "group__extended.html#ga7795a13d20087447281858d2c771cca1", null ],
1416
[ "mi_reserve_huge_os_pages_interleave", "group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50", null ],

docs/group__posix.html

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@
140140
<tr class="memitem:gaad048a9fce3d02c5909cd05c6ec24545"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#gaad048a9fce3d02c5909cd05c6ec24545">mi_new</a> (std::size_t n) noexcept(false)</td></tr>
141141
<tr class="memdesc:gaad048a9fce3d02c5909cd05c6ec24545"><td class="mdescLeft">&#160;</td><td class="mdescRight">raise <code>std::bad_alloc</code> exception on failure. <a href="#gaad048a9fce3d02c5909cd05c6ec24545">More...</a><br /></td></tr>
142142
<tr class="separator:gaad048a9fce3d02c5909cd05c6ec24545"><td class="memSeparator" colspan="2">&#160;</td></tr>
143+
<tr class="memitem:gae7bc4f56cd57ed3359060ff4f38bda81"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#gae7bc4f56cd57ed3359060ff4f38bda81">mi_new_n</a> (size_t count, size_t size) noexcept(false)</td></tr>
144+
<tr class="memdesc:gae7bc4f56cd57ed3359060ff4f38bda81"><td class="mdescLeft">&#160;</td><td class="mdescRight">raise <code>std::bad_alloc</code> exception on failure or overflow. <a href="#gae7bc4f56cd57ed3359060ff4f38bda81">More...</a><br /></td></tr>
145+
<tr class="separator:gae7bc4f56cd57ed3359060ff4f38bda81"><td class="memSeparator" colspan="2">&#160;</td></tr>
143146
<tr class="memitem:gaef2c2bdb4f70857902d3c8903ac095f3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#gaef2c2bdb4f70857902d3c8903ac095f3">mi_new_aligned</a> (std::size_t n, std::align_val_t alignment) noexcept(false)</td></tr>
144147
<tr class="memdesc:gaef2c2bdb4f70857902d3c8903ac095f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">raise <code>std::bad_alloc</code> exception on failure. <a href="#gaef2c2bdb4f70857902d3c8903ac095f3">More...</a><br /></td></tr>
145148
<tr class="separator:gaef2c2bdb4f70857902d3c8903ac095f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -484,6 +487,44 @@ <h2 class="memtitle"><span class="permalink"><a href="#gab5e29558926d934c3f1cae8
484487

485488
<p>return <code>NULL</code> on failure. </p>
486489

490+
</div>
491+
</div>
492+
<a id="gae7bc4f56cd57ed3359060ff4f38bda81"></a>
493+
<h2 class="memtitle"><span class="permalink"><a href="#gae7bc4f56cd57ed3359060ff4f38bda81">&#9670;&nbsp;</a></span>mi_new_n()</h2>
494+
495+
<div class="memitem">
496+
<div class="memproto">
497+
<table class="mlabels">
498+
<tr>
499+
<td class="mlabels-left">
500+
<table class="memname">
501+
<tr>
502+
<td class="memname">void* mi_new_n </td>
503+
<td>(</td>
504+
<td class="paramtype">size_t&#160;</td>
505+
<td class="paramname"><em>count</em>, </td>
506+
</tr>
507+
<tr>
508+
<td class="paramkey"></td>
509+
<td></td>
510+
<td class="paramtype">size_t&#160;</td>
511+
<td class="paramname"><em>size</em>&#160;</td>
512+
</tr>
513+
<tr>
514+
<td></td>
515+
<td>)</td>
516+
<td></td><td></td>
517+
</tr>
518+
</table>
519+
</td>
520+
<td class="mlabels-right">
521+
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
522+
</tr>
523+
</table>
524+
</div><div class="memdoc">
525+
526+
<p>raise <code>std::bad_alloc</code> exception on failure or overflow. </p>
527+
487528
</div>
488529
</div>
489530
<a id="gaeaded64eda71ed6b1d569d3e723abc4a"></a>

docs/group__posix.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ var group__posix =
1212
[ "mi_new", "group__posix.html#gaad048a9fce3d02c5909cd05c6ec24545", null ],
1313
[ "mi_new_aligned", "group__posix.html#gaef2c2bdb4f70857902d3c8903ac095f3", null ],
1414
[ "mi_new_aligned_nothrow", "group__posix.html#gab5e29558926d934c3f1cae8c815f942c", null ],
15+
[ "mi_new_n", "group__posix.html#gae7bc4f56cd57ed3359060ff4f38bda81", null ],
1516
[ "mi_new_nothrow", "group__posix.html#gaeaded64eda71ed6b1d569d3e723abc4a", null ],
1617
[ "mi_posix_memalign", "group__posix.html#gacff84f226ba9feb2031b8992e5579447", null ],
1718
[ "mi_pvalloc", "group__posix.html#gaeb325c39b887d3b90d85d1eb1712fb1e", null ],

docs/mimalloc-doc_8h_source.html

Lines changed: 29 additions & 26 deletions
Large diffs are not rendered by default.

docs/navtreeindex0.js

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,29 @@ var NAVTREEINDEX0 =
2929
"group__analysis.html#gadfa01e2900f0e5d515ad5506b26f6d65":[5,6,1],
3030
"group__analysis.html#structmi__heap__area__t":[5,6,0],
3131
"group__extended.html":[5,1],
32-
"group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee":[5,1,19],
33-
"group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf":[5,1,16],
32+
"group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee":[5,1,21],
33+
"group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf":[5,1,18],
3434
"group__extended.html#ga1ea64283508718d9d645c38efc2f4305":[5,1,0],
35-
"group__extended.html#ga220f29f40a44404b0061c15bc1c31152":[5,1,20],
36-
"group__extended.html#ga256cc6f13a142deabbadd954a217e228":[5,1,14],
35+
"group__extended.html#ga220f29f40a44404b0061c15bc1c31152":[5,1,22],
36+
"group__extended.html#ga251d369cda3f1c2a955c555486ed90e5":[5,1,2],
37+
"group__extended.html#ga256cc6f13a142deabbadd954a217e228":[5,1,16],
3738
"group__extended.html#ga299dae78d25ce112e384a98b7309c5be":[5,1,1],
38-
"group__extended.html#ga2d126e5c62d3badc35445e5d84166df2":[5,1,13],
39-
"group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50":[5,1,11],
40-
"group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece":[5,1,8],
41-
"group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99":[5,1,15],
42-
"group__extended.html#ga421430e2226d7d468529cec457396756":[5,1,3],
43-
"group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6":[5,1,5],
44-
"group__extended.html#ga7136c2e55cb22c98ecf95d08d6debb99":[5,1,7],
45-
"group__extended.html#ga7795a13d20087447281858d2c771cca1":[5,1,10],
46-
"group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1":[5,1,12],
47-
"group__extended.html#gaad25050b19f30cd79397b227e0157a3f":[5,1,6],
48-
"group__extended.html#gab1dac8476c46cb9eecab767eb40c1525":[5,1,18],
49-
"group__extended.html#gac057927cd06c854b45fe7847e921bd47":[5,1,4],
50-
"group__extended.html#gad823d23444a4b77a40f66bf075a98a0c":[5,1,2],
51-
"group__extended.html#gae5b17ff027cd2150b43a33040250cf3f":[5,1,9],
52-
"group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17":[5,1,17],
39+
"group__extended.html#ga2d126e5c62d3badc35445e5d84166df2":[5,1,15],
40+
"group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50":[5,1,13],
41+
"group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece":[5,1,9],
42+
"group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99":[5,1,17],
43+
"group__extended.html#ga421430e2226d7d468529cec457396756":[5,1,4],
44+
"group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6":[5,1,6],
45+
"group__extended.html#ga7136c2e55cb22c98ecf95d08d6debb99":[5,1,8],
46+
"group__extended.html#ga7795a13d20087447281858d2c771cca1":[5,1,12],
47+
"group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1":[5,1,14],
48+
"group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45":[5,1,10],
49+
"group__extended.html#gaad25050b19f30cd79397b227e0157a3f":[5,1,7],
50+
"group__extended.html#gab1dac8476c46cb9eecab767eb40c1525":[5,1,20],
51+
"group__extended.html#gac057927cd06c854b45fe7847e921bd47":[5,1,5],
52+
"group__extended.html#gad823d23444a4b77a40f66bf075a98a0c":[5,1,3],
53+
"group__extended.html#gae5b17ff027cd2150b43a33040250cf3f":[5,1,11],
54+
"group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17":[5,1,19],
5355
"group__heap.html":[5,3],
5456
"group__heap.html#ga00e95ba1e01acac3cfd95bb7a357a6f0":[5,3,20],
5557
"group__heap.html#ga08ca6419a5c057a4d965868998eef487":[5,3,3],
@@ -121,18 +123,19 @@ var NAVTREEINDEX0 =
121123
"group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9":[5,8,3],
122124
"group__posix.html#ga1326d2e4388630b5f81ca7206318b8e5":[5,8,1],
123125
"group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de":[5,8,6],
124-
"group__posix.html#ga48fad8648a2f1dab9c87ea9448a52088":[5,8,15],
126+
"group__posix.html#ga48fad8648a2f1dab9c87ea9448a52088":[5,8,16],
125127
"group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7":[5,8,2],
126128
"group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc":[5,8,5],
127-
"group__posix.html#ga73baaf5951f5165ba0763d0c06b6a93b":[5,8,16],
129+
"group__posix.html#ga73baaf5951f5165ba0763d0c06b6a93b":[5,8,17],
128130
"group__posix.html#gaab7fa71ea93b96873f5d9883db57d40e":[5,8,8],
129131
"group__posix.html#gaad048a9fce3d02c5909cd05c6ec24545":[5,8,9],
130132
"group__posix.html#gab5e29558926d934c3f1cae8c815f942c":[5,8,11],
131-
"group__posix.html#gacff84f226ba9feb2031b8992e5579447":[5,8,13],
133+
"group__posix.html#gacff84f226ba9feb2031b8992e5579447":[5,8,14],
132134
"group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a":[5,8,0],
133135
"group__posix.html#gae01389eedab8d67341ff52e2aad80ebb":[5,8,4],
134-
"group__posix.html#gaeaded64eda71ed6b1d569d3e723abc4a":[5,8,12],
135-
"group__posix.html#gaeb325c39b887d3b90d85d1eb1712fb1e":[5,8,14],
136+
"group__posix.html#gae7bc4f56cd57ed3359060ff4f38bda81":[5,8,12],
137+
"group__posix.html#gaeaded64eda71ed6b1d569d3e723abc4a":[5,8,13],
138+
"group__posix.html#gaeb325c39b887d3b90d85d1eb1712fb1e":[5,8,15],
136139
"group__posix.html#gaef2c2bdb4f70857902d3c8903ac095f3":[5,8,10],
137140
"group__typed.html":[5,5],
138141
"group__typed.html#ga0619a62c5fd886f1016030abe91f0557":[5,5,7],

0 commit comments

Comments
 (0)