Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/llfio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins nedprod CI <foo@nowhere>2018-08-31 21:09:34 +0300
committerJenkins nedprod CI <foo@nowhere>2018-08-31 21:09:34 +0300
commit4c385c69c4554722eb84725cf2036d514ed0dbe5 (patch)
treec0fc6e9fb07a8510db6f33817a19a5a2e8b35235
parent35b5735fc73026a284766d745322b19b50787a80 (diff)
Travis CI updates documentation
-rw-r--r--classllfio__v2__xxx_1_1map__handle-members.html2
-rw-r--r--classllfio__v2__xxx_1_1map__handle.html120
-rw-r--r--classllfio__v2__xxx_1_1map__handle.js4
-rw-r--r--classllfio__v2__xxx_1_1map__view.html8
-rw-r--r--classllfio__v2__xxx_1_1mapped.html8
-rw-r--r--classllfio__v2__xxx_1_1section__handle.html2
-rw-r--r--index.html5
-rw-r--r--map__handle_8hpp.html3
-rw-r--r--map__handle_8hpp.js1
-rw-r--r--namespacellfio__v2__xxx.html22
-rw-r--r--navtreedata.js8
-rw-r--r--navtreeindex2.js4
-rw-r--r--navtreeindex3.js6
-rw-r--r--navtreeindex5.js34
-rw-r--r--navtreeindex6.js4
-rw-r--r--navtreeindex7.js4
-rw-r--r--navtreeindex8.js3
17 files changed, 129 insertions, 109 deletions
diff --git a/classllfio__v2__xxx_1_1map__handle-members.html b/classllfio__v2__xxx_1_1map__handle-members.html
index 9f317b59..fa16de8b 100644
--- a/classllfio__v2__xxx_1_1map__handle-members.html
+++ b/classllfio__v2__xxx_1_1map__handle-members.html
@@ -157,7 +157,7 @@ $(document).ready(function(){initNavTree('classllfio__v2__xxx_1_1map__handle.htm
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a198e1c294966a28919d2f0698e3608b8">lock</a>(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map</a>(size_type bytes, bool zeroed=false, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a8e6163e135f2a0eebf62a127f0125533">map</a>(section_handle &amp;section, size_type bytes=0, extent_type offset=0, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>map_handle</b>(section_handle *section) (defined in <a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>map_handle</b>(section_handle *section, section_handle::flag flags) (defined in <a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a9c69e0d3f3fa2c213bdd4deabc6c2279">map_handle</a>()</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a85903a9f61228497b09bf5071ffc255b">map_handle</a>(map_handle &amp;&amp;o) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#aa3225a2ee86b12e6099d15a2a87b99b4">map_handle</a>(const map_handle &amp;)=delete</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"></td></tr>
diff --git a/classllfio__v2__xxx_1_1map__handle.html b/classllfio__v2__xxx_1_1map__handle.html
index 41d1d3ec..15f96864 100644
--- a/classllfio__v2__xxx_1_1map__handle.html
+++ b/classllfio__v2__xxx_1_1map__handle.html
@@ -398,9 +398,9 @@ static result&lt; span&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handl
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
-<tr class="memitem:a41be918ad9a0c472b6522ce351aaa8c4"><td class="memItemLeft" align="right" valign="top"><a id="a41be918ad9a0c472b6522ce351aaa8c4"></a>
-&#160;</td><td class="memItemRight" valign="bottom"><b>map_handle</b> (<a class="el" href="classllfio__v2__xxx_1_1section__handle.html">section_handle</a> *<a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a173539843aebd387bb8ca06246067ead">section</a>)</td></tr>
-<tr class="separator:a41be918ad9a0c472b6522ce351aaa8c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa954d9b40b2685bbc8a229e3907c297d"><td class="memItemLeft" align="right" valign="top"><a id="aa954d9b40b2685bbc8a229e3907c297d"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>map_handle</b> (<a class="el" href="classllfio__v2__xxx_1_1section__handle.html">section_handle</a> *<a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a173539843aebd387bb8ca06246067ead">section</a>, section_handle::flag <a class="el" href="classllfio__v2__xxx_1_1handle.html#a013936bc1254b1a47567fe29698d1b1c">flags</a>)</td></tr>
+<tr class="separator:aa954d9b40b2685bbc8a229e3907c297d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
@@ -446,11 +446,25 @@ class&#160;</td><td class="memItemRight" valign="bottom"><b>mapped_file_handle</
<p>An important concept to realise with mapped regions is that they can far exceed the size of their backing storage. This allows one to reserve address space for a file which may grow in the future. This is how <code>mapped_file_handle</code> is implemented to provide very fast memory mapped file i/o of a potentially growing file.</p>
<p>The size you specify when creating the map handle is the address space reservation. The map's <code>length()</code> will return the last known <b>valid</b> length of the mapped data i.e. the backing storage's length at the time of construction. This length is used by <code>read()</code> and <code>write()</code> to prevent reading and writing off the end of the mapped region. You can update this length to the backing storage's length using <code>update_map()</code> up to the reservation limit.</p>
<p>You can attempt to modify the address space reservation after creation using <code>truncate()</code>. If successful, this will be more efficient than tearing down the map and creating a new larger map.</p>
-<dl class="section note"><dt>Note</dt><dd>On Microsoft Windows, it is not permitted to reserve address space using large pages. Any attempt to do so will fail. Note also that on that kernel, you must have granted the ability to lock memory to the user or users running the process for large page support to be made available to that process and user. Finally, as of Windows 10 1803, using large pages in file backed memory maps is not supported. If a future kernel changes this, the existing code should "just work".</dd></dl>
<p>The native handle returned by this map handle is always that of the backing storage, but closing this handle does not close that of the backing storage, nor does releasing this handle release that of the backing storage. Locking byte ranges of this handle is therefore equal to locking byte ranges in the original backing storage, which can be very useful.</p>
<h2>Barriers:</h2>
<p><code>map_handle</code>, because it implements <code>io_handle</code>, implements <code>barrier()</code> in a very conservative way to account for OS differences i.e. it calls <code>msync()</code>, and then the <code>barrier()</code> implementation for the backing file (probably <code>fsync()</code> or equivalent on most platforms, which synchronises the entire file).</p>
<p>This is vast overkill if you are using non-volatile RAM, so a special <em>inlined</em> <code>barrier()</code> implementation taking a single buffer and no other arguments is also provided. This calls the appropriate architecture-specific instructions to cause the CPU to write all preceding writes out of the write buffers and CPU caches to main memory, so for Intel CPUs this would be <code>CLWB &lt;each cache line&gt;; SFENCE;</code>. As this is inlined, it ought to produce optimal code. If your CPU does not support the requisite instructions (or LLFIO has not added support), and empty buffer will be returned to indicate that nothing was barriered, same as the normal <code>barrier()</code> function.</p>
+<h2>Large page support:</h2>
+<p>Large, huge, massive and super page support is available via the <code>section_handle::flag::page_sizes_N</code> flags. Use these in combination with <code>utils::page_size()</code> to request allocations or maps which use different page sizes.</p>
+<h3>Windows:</h3>
+<p>Firstly, explicit large page support is only available to processes and logged in users who have been assigned the <code>SeLockMemoryPrivilege</code>. A default Windows installation assigns that privilege to nothing, so explicit action will need to be taken to assign that privilege per Windows installation.</p>
+<p>Secondly, as of Windows 10 1803, there is the large page size or the normal page size. There isn't (useful) support for pages of any other size, as there is on other systems.</p>
+<p>For allocating memory, large page allocation can randomly fail depending on what the system is feeling like, same as on all the other operating systems. It is not permitted to reserve address space using large pages.</p>
+<p>For mapping files, large page maps do not work as of Windows 10 1803 (curiously, ReactOS <em>does</em> implement this). There is a big exception to this, which is for DAX formatted NTFS volumes with a formatted cluster size of the large page size, where if you map in large page sized multiples, the Windows kernel uses large pages (and one need not hold <code>SeLockMemoryPrivilege</code> either). Therefore, if you specify <code>section_handle::flag::nvram</code> with a <code>section_handle::flag::page_sizes_N</code>, LLFIO does not ask for large pages which would fail, it merely rounds all requests up to the nearest large page multiple.</p>
+<h3>Linux:</h3>
+<p>As usual on Linux, large page (often called huge page on Linux) support comes in many forms.</p>
+<p>Explicit support is via <code>MAP_HUGETLB</code> to <code>mmap()</code>, and whether an explicit request succeeds or not is up to how many huge pages were configured into the running system via boot-time kernel parameters, and how many huge pages are in use already. For most recent kernels on most distributions, explicit memory allocation requests using large pages generally works without issue. As of Linux kernel 4.18, mapping files using large pages only works on <code>tmpfs</code>, this corresponds to <code>path_discovery::memory_backed_temporary_files_directory()</code> sourced anonymous section handles. Work is proceeding well for the major Linux filing systems to become able to map files using large pages soon, and in theory LLFIO based should "just work" on such a newer kernel.</p>
+<p>Note that many distributions enable transparent huge pages, whereby if you request allocations of large page multiples at large page offsets, the kernel uses large pages, without you needing to specify any <code>section_handle::flag::page_sizes_N</code>.</p>
+<h3>FreeBSD:</h3>
+<p>FreeBSD has no support for failing if large pages cannot be used for a specific <code>mmap()</code>. The best you can do is to ask for large pages, and you may or may not get them depending on available system resources, filing system in use, etc. LLFIO does not check returned maps to discover if large pages were actually used, that is on end user code to check if it really needs to know.</p>
+<h3>MacOS:</h3>
+<p>MacOS only supports large pages for memory allocations, not for mapping files. It fails if large pages could not be used when a large page allocation was requested.</p>
<dl class="section see"><dt>See also</dt><dd><code>mapped_file_handle</code>, <code>algorithm::mapped_span</code> </dd></dl>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a5929f46f42112bd805ab5001bfbf9d2a"></a>
@@ -521,54 +535,8 @@ class&#160;</td><td class="memItemRight" valign="bottom"><b>mapped_file_handle</
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
-<a id="a55ac4e0146703e646a34053cfb440d9b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a55ac4e0146703e646a34053cfb440d9b">&#9670;&nbsp;</a></span>barrier() <span class="overload">[1/2]</span></h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html">const_buffer_type</a> llfio_v2_xxx::map_handle::barrier </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html">const_buffer_type</a>&#160;</td>
- <td class="paramname"><em>req</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&#160;</td>
- <td class="paramname"><em>evict</em> = <code>false</code>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">noexcept</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-<p>Lightweight inlined barrier which causes the CPU to write out all buffered writes and dirty cache lines in the request to main memory. </p><dl class="section return"><dt>Returns</dt><dd>The cache lines actually barriered. This may be empty. This function does not return an error. </dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">req</td><td>The range of cache lines to write barrier. </td></tr>
- <tr><td class="paramname">evict</td><td>Whether to also evict the cache lines from CPU caches, useful if they will not be used again.</td></tr>
- </table>
- </dd>
-</dl>
-<p>Upon return, one knows that memory in the returned buffer has been barriered (it may be empty if there is no support for this operation in LLFIO, or if the current CPU does not support this operation). You may find the <code>is_nvram()</code> observer of particular use here. </p>
-<div class="fragment"><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">auto</span> *tp = (<a class="code" href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html#a56b1347a75286b1b21af8082faacabb7">const_buffer_type::pointer</a>)(((uintptr_t) req.data()) &amp; 31);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; const_buffer_type ret{tp, (size_t)(req.data() + req.size() - tp)};</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html#a56b1347a75286b1b21af8082faacabb7">const_buffer_type::pointer</a> addr = ret.data(); addr &lt; ret.data() + ret.size(); addr += 32)</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="comment">// Slightly UB ...</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">auto</span> *p = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>persistent&lt;byte&gt; *<span class="keyword">&gt;</span>(addr);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span>(memory_flush_none == p-&gt;flush(evict ? memory_flush_evict : memory_flush_retain))</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; ret = {tp, 0};</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="ttc" id="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type_html_a56b1347a75286b1b21af8082faacabb7"><div class="ttname"><a href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html#a56b1347a75286b1b21af8082faacabb7">llfio_v2_xxx::io_handle::const_buffer_type::pointer</a></div><div class="ttdeci">const byte * pointer</div><div class="ttdoc">Type of the pointer to memory. </div><div class="ttdef"><b>Definition:</b> io_handle.hpp:109</div></div>
-</div><!-- fragment -->
-</div>
-</div>
<a id="aa3ec366f663f85fb4d679542b8c1b41a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa3ec366f663f85fb4d679542b8c1b41a">&#9670;&nbsp;</a></span>barrier() <span class="overload">[2/2]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#aa3ec366f663f85fb4d679542b8c1b41a">&#9670;&nbsp;</a></span>barrier() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -634,6 +602,52 @@ For portability, you can only assume that barriers write order for a single hand
</div>
</div>
+<a id="a55ac4e0146703e646a34053cfb440d9b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a55ac4e0146703e646a34053cfb440d9b">&#9670;&nbsp;</a></span>barrier() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html">const_buffer_type</a> llfio_v2_xxx::map_handle::barrier </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html">const_buffer_type</a>&#160;</td>
+ <td class="paramname"><em>req</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>evict</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">noexcept</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Lightweight inlined barrier which causes the CPU to write out all buffered writes and dirty cache lines in the request to main memory. </p><dl class="section return"><dt>Returns</dt><dd>The cache lines actually barriered. This may be empty. This function does not return an error. </dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">req</td><td>The range of cache lines to write barrier. </td></tr>
+ <tr><td class="paramname">evict</td><td>Whether to also evict the cache lines from CPU caches, useful if they will not be used again.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>Upon return, one knows that memory in the returned buffer has been barriered (it may be empty if there is no support for this operation in LLFIO, or if the current CPU does not support this operation). You may find the <code>is_nvram()</code> observer of particular use here. </p>
+<div class="fragment"><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">auto</span> *tp = (<a class="code" href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html#a56b1347a75286b1b21af8082faacabb7">const_buffer_type::pointer</a>)(((uintptr_t) req.data()) &amp; 31);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; const_buffer_type ret{tp, (size_t)(req.data() + req.size() - tp)};</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html#a56b1347a75286b1b21af8082faacabb7">const_buffer_type::pointer</a> addr = ret.data(); addr &lt; ret.data() + ret.size(); addr += 32)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="comment">// Slightly UB ...</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keyword">auto</span> *p = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>persistent&lt;byte&gt; *<span class="keyword">&gt;</span>(addr);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span>(memory_flush_none == p-&gt;flush(evict ? memory_flush_evict : memory_flush_retain))</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; ret = {tp, 0};</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="ttc" id="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type_html_a56b1347a75286b1b21af8082faacabb7"><div class="ttname"><a href="structllfio__v2__xxx_1_1io__handle_1_1const__buffer__type.html#a56b1347a75286b1b21af8082faacabb7">llfio_v2_xxx::io_handle::const_buffer_type::pointer</a></div><div class="ttdeci">const byte * pointer</div><div class="ttdoc">Type of the pointer to memory. </div><div class="ttdef"><b>Definition:</b> io_handle.hpp:109</div></div>
+</div><!-- fragment -->
+</div>
+</div>
<a id="aeea4389189021b94dde6d8f2c3ccc5b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeea4389189021b94dde6d8f2c3ccc5b3">&#9670;&nbsp;</a></span>clone()</h2>
@@ -969,7 +983,7 @@ For portability, you can only assume that barriers write order for a single hand
<tr><td class="paramname">section</td><td>A memory section handle specifying the backing storage to use. </td></tr>
<tr><td class="paramname">bytes</td><td>How many bytes to reserve (0 = the size of the section). Rounded up to nearest 64Kb on Windows. </td></tr>
<tr><td class="paramname">offset</td><td>The offset into the backing storage to map from. Typically needs to be at least a multiple of the page size (see <code>page_size()</code>), on Windows it needs to be a multiple of the kernel memory allocation granularity (typically 64Kb). </td></tr>
- <tr><td class="paramname">_flag</td><td>The permissions with which to map the view which are constrained by the permissions of the memory section. <code>flag::none</code> can be useful for reserving virtual address space without committing system resources, use commit() to later change availability of memory.</td></tr>
+ <tr><td class="paramname">_flag</td><td>The permissions with which to map the view which are constrained by the permissions of the memory section. <code>flag::none</code> can be useful for reserving virtual address space without committing system resources, use commit() to later change availability of memory. Note that apart from read/write/cow/execute, the section's flags override the map's flags.</td></tr>
</table>
</dd>
</dl>
@@ -1031,7 +1045,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; OUTCOME_TRY(ret, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#a25dcce3a7127c5552687c540c37b9f27">prefetch</a>(span&lt;buffer_type&gt;(&amp;region, 1)));</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> *ret.data();</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1map__handle_html_a25dcce3a7127c5552687c540c37b9f27"><div class="ttname"><a href="classllfio__v2__xxx_1_1map__handle.html#a25dcce3a7127c5552687c540c37b9f27">llfio_v2_xxx::map_handle::prefetch</a></div><div class="ttdeci">static result&lt; span&lt; buffer_type &gt; &gt; prefetch(span&lt; buffer_type &gt; regions) noexcept</div><div class="ttdoc">Ask the system to begin to asynchronously prefetch the span of memory regions given, returning the regions actually prefetched. Note that on Windows 7 or earlier the system call to implement this was not available, and so you will see an empty span returned. </div></div>
+<div class="fragment"><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; OUTCOME_TRY(ret, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#a25dcce3a7127c5552687c540c37b9f27">prefetch</a>(span&lt;buffer_type&gt;(&amp;region, 1)));</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> *ret.data();</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1map__handle_html_a25dcce3a7127c5552687c540c37b9f27"><div class="ttname"><a href="classllfio__v2__xxx_1_1map__handle.html#a25dcce3a7127c5552687c540c37b9f27">llfio_v2_xxx::map_handle::prefetch</a></div><div class="ttdeci">static result&lt; span&lt; buffer_type &gt; &gt; prefetch(span&lt; buffer_type &gt; regions) noexcept</div><div class="ttdoc">Ask the system to begin to asynchronously prefetch the span of memory regions given, returning the regions actually prefetched. Note that on Windows 7 or earlier the system call to implement this was not available, and so you will see an empty span returned. </div></div>
</div><!-- fragment -->
</div>
</div>
diff --git a/classllfio__v2__xxx_1_1map__handle.js b/classllfio__v2__xxx_1_1map__handle.js
index d8a29039..81b1a56a 100644
--- a/classllfio__v2__xxx_1_1map__handle.js
+++ b/classllfio__v2__xxx_1_1map__handle.js
@@ -28,7 +28,7 @@ var classllfio__v2__xxx_1_1map__handle =
[ "byte_lock_insanity", "classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa6aa77c9bac6dd95b83f8d278f0e5fa59", null ],
[ "anonymous_inode", "classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa07122ea63cdc5b2c07e764d95a816d3d", null ]
] ],
- [ "map_handle", "classllfio__v2__xxx_1_1map__handle.html#a41be918ad9a0c472b6522ce351aaa8c4", null ],
+ [ "map_handle", "classllfio__v2__xxx_1_1map__handle.html#aa954d9b40b2685bbc8a229e3907c297d", null ],
[ "map_handle", "classllfio__v2__xxx_1_1map__handle.html#a9c69e0d3f3fa2c213bdd4deabc6c2279", null ],
[ "~map_handle", "classllfio__v2__xxx_1_1map__handle.html#a433596cf8fbaf7fa81c6ff8807c18b4e", null ],
[ "map_handle", "classllfio__v2__xxx_1_1map__handle.html#a85903a9f61228497b09bf5071ffc255b", null ],
@@ -37,8 +37,8 @@ var classllfio__v2__xxx_1_1map__handle =
[ "are_reads_from_cache", "classllfio__v2__xxx_1_1map__handle.html#a7126a726b2a06e4c1eca1a94c41163ff", null ],
[ "are_safety_fsyncs_issued", "classllfio__v2__xxx_1_1map__handle.html#a4471012e7b85ac6dea1d0af43f1ee4e6", null ],
[ "are_writes_durable", "classllfio__v2__xxx_1_1map__handle.html#a8036792f332459064172d7b0cfaee3cf", null ],
- [ "barrier", "classllfio__v2__xxx_1_1map__handle.html#ab9fb41b19bd14bba06e3df8f41e9087d", null ],
[ "barrier", "classllfio__v2__xxx_1_1map__handle.html#aa3ec366f663f85fb4d679542b8c1b41a", null ],
+ [ "barrier", "classllfio__v2__xxx_1_1map__handle.html#ab9fb41b19bd14bba06e3df8f41e9087d", null ],
[ "capacity", "classllfio__v2__xxx_1_1map__handle.html#ac7d048f830c0b2563fb4b50eb0597152", null ],
[ "clone", "classllfio__v2__xxx_1_1map__handle.html#aeea4389189021b94dde6d8f2c3ccc5b3", null ],
[ "close", "classllfio__v2__xxx_1_1map__handle.html#ab6704788ecc652589c3e155f47b40a5e", null ],
diff --git a/classllfio__v2__xxx_1_1map__view.html b/classllfio__v2__xxx_1_1map__view.html
index 33459e05..5925cf13 100644
--- a/classllfio__v2__xxx_1_1map__view.html
+++ b/classllfio__v2__xxx_1_1map__view.html
@@ -183,9 +183,9 @@ template&lt;class T &gt; </div>
</table>
</dd>
</dl>
-<div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; : span&lt;T&gt;(<a class="code" href="namespacellfio__v2__xxx.html#ab50d07405d17a8fff4e360fd2612bc6f">map</a>.begin() + offset, (<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == (<a class="code" href="classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968">size_type</a>) -1) ? (<a class="code" href="namespacellfio__v2__xxx.html#ab50d07405d17a8fff4e360fd2612bc6f">map</a>.size() - offset) : <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a>) <span class="comment">// NOLINT</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:623</div></div>
+<div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; : span&lt;T&gt;(<a class="code" href="namespacellfio__v2__xxx.html#ab50d07405d17a8fff4e360fd2612bc6f">map</a>.begin() + offset, (<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == (<a class="code" href="classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968">size_type</a>) -1) ? (<a class="code" href="namespacellfio__v2__xxx.html#ab50d07405d17a8fff4e360fd2612bc6f">map</a>.size() - offset) : <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a>) <span class="comment">// NOLINT</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:675</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1map__view_html_a22be05bfdf389ec2fe1e38364a709968"><div class="ttname"><a href="classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968">llfio_v2_xxx::map_view::size_type</a></div><div class="ttdeci">typename section_handle::size_type size_type</div><div class="ttdoc">The size type. </div><div class="ttdef"><b>Definition:</b> map_view.hpp:47</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_ab50d07405d17a8fff4e360fd2612bc6f"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ab50d07405d17a8fff4e360fd2612bc6f">llfio_v2_xxx::map</a></div><div class="ttdeci">result&lt; map_handle &gt; map(map_handle::size_type bytes, bool zeroed=false, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</div><div class="ttdef"><b>Definition:</b> map_handle.hpp:678</div></div>
+<div class="ttc" id="namespacellfio__v2__xxx_html_ab50d07405d17a8fff4e360fd2612bc6f"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ab50d07405d17a8fff4e360fd2612bc6f">llfio_v2_xxx::map</a></div><div class="ttdeci">result&lt; map_handle &gt; map(map_handle::size_type bytes, bool zeroed=false, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</div><div class="ttdef"><b>Definition:</b> map_handle.hpp:730</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -239,7 +239,7 @@ template&lt;class T &gt; </div>
</table>
</dd>
</dl>
-<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; : span&lt;T&gt;(<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(mh.address() + byteoffset), (<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == (<a class="code" href="classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968">size_type</a>) -1) ? ((mh.length() - byteoffset) / <span class="keyword">sizeof</span>(T)) : <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a>) <span class="comment">// NOLINT</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:623</div></div>
+<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; : span&lt;T&gt;(<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(mh.address() + byteoffset), (<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == (<a class="code" href="classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968">size_type</a>) -1) ? ((mh.length() - byteoffset) / <span class="keyword">sizeof</span>(T)) : <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a>) <span class="comment">// NOLINT</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:675</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1map__view_html_a22be05bfdf389ec2fe1e38364a709968"><div class="ttname"><a href="classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968">llfio_v2_xxx::map_view::size_type</a></div><div class="ttdeci">typename section_handle::size_type size_type</div><div class="ttdoc">The size type. </div><div class="ttdef"><b>Definition:</b> map_view.hpp:47</div></div>
</div><!-- fragment -->
</div>
@@ -294,7 +294,7 @@ template&lt;class T &gt; </div>
</table>
</dd>
</dl>
-<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; : span&lt;T&gt;(<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(mfh.address() + byteoffset), (<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == (<a class="code" href="classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968">size_type</a>) -1) ? ((mfh.maximum_extent().value() - byteoffset) / <span class="keyword">sizeof</span>(T)) : <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a>) <span class="comment">// NOLINT</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:623</div></div>
+<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; : span&lt;T&gt;(<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(mfh.address() + byteoffset), (<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == (<a class="code" href="classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968">size_type</a>) -1) ? ((mfh.maximum_extent().value() - byteoffset) / <span class="keyword">sizeof</span>(T)) : <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a>) <span class="comment">// NOLINT</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:675</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1map__view_html_a22be05bfdf389ec2fe1e38364a709968"><div class="ttname"><a href="classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968">llfio_v2_xxx::map_view::size_type</a></div><div class="ttdeci">typename section_handle::size_type size_type</div><div class="ttdoc">The size type. </div><div class="ttdef"><b>Definition:</b> map_view.hpp:47</div></div>
</div><!-- fragment -->
</div>
diff --git a/classllfio__v2__xxx_1_1mapped.html b/classllfio__v2__xxx_1_1mapped.html
index e8d07870..5aa6b84d 100644
--- a/classllfio__v2__xxx_1_1mapped.html
+++ b/classllfio__v2__xxx_1_1mapped.html
@@ -192,8 +192,8 @@ template&lt;class T &gt; </div>
</table>
</dd>
</dl>
-<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; : _maph(<a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> * <span class="keyword">sizeof</span>(T), zeroed, _flag).value())</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; byte *addr = _maph.<a class="code" href="classllfio__v2__xxx_1_1map__handle.html#a7456b95e191ec373af61af6541dd4737">address</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">static_cast&lt;</span>span&lt;T&gt; &amp;<span class="keyword">&gt;</span>(*this) = span&lt;T&gt;(<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(addr), <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a>); <span class="comment">// NOLINT</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:623</div></div>
-<div class="ttc" id="classllfio__v2__xxx_1_1map__handle_html_a7456b95e191ec373af61af6541dd4737"><div class="ttname"><a href="classllfio__v2__xxx_1_1map__handle.html#a7456b95e191ec373af61af6541dd4737">llfio_v2_xxx::map_handle::address</a></div><div class="ttdeci">byte * address() const noexcept</div><div class="ttdoc">The address in memory where this mapped view resides. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:435</div></div>
+<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; : _maph(<a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> * <span class="keyword">sizeof</span>(T), zeroed, _flag).value())</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; byte *addr = _maph.<a class="code" href="classllfio__v2__xxx_1_1map__handle.html#a7456b95e191ec373af61af6541dd4737">address</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">static_cast&lt;</span>span&lt;T&gt; &amp;<span class="keyword">&gt;</span>(*this) = span&lt;T&gt;(<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(addr), <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a>); <span class="comment">// NOLINT</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:675</div></div>
+<div class="ttc" id="classllfio__v2__xxx_1_1map__handle_html_a7456b95e191ec373af61af6541dd4737"><div class="ttname"><a href="classllfio__v2__xxx_1_1map__handle.html#a7456b95e191ec373af61af6541dd4737">llfio_v2_xxx::map_handle::address</a></div><div class="ttdeci">byte * address() const noexcept</div><div class="ttdoc">The address in memory where this mapped view resides. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:487</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1map__handle_html_adf0cad925c9d6accd5bd7fc3aa49884c"><div class="ttname"><a href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">llfio_v2_xxx::map_handle::map</a></div><div class="ttdeci">static result&lt; map_handle &gt; map(size_type bytes, bool zeroed=false, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</div></div>
</div><!-- fragment -->
</div>
@@ -256,7 +256,7 @@ template&lt;class T &gt; </div>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; : <a class="code" href="classllfio__v2__xxx_1_1mapped.html#a9a6b8b22c06bf6e9362496cdcc3ac40d">mapped</a>((<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == 0) ? <a class="code" href="classllfio__v2__xxx_1_1mapped.html#a9a6b8b22c06bf6e9362496cdcc3ac40d">mapped</a>() : <a class="code" href="classllfio__v2__xxx_1_1mapped.html#a9a6b8b22c06bf6e9362496cdcc3ac40d">mapped</a>(<span class="keyword">nullptr</span>, 0,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;#ifdef _WIN32</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; byteoffset &amp; ~65535,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;#<span class="keywordflow">else</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="namespacellfio__v2__xxx_1_1utils.html#a5499feaf6b774e774a26e7decd11e3fa">utils::round_down_to_page_size</a>(byteoffset, <a class="code" href="namespacellfio__v2__xxx_1_1utils.html#a42fc69cae3dbbf66498545cbe358e2ba">utils::page_size</a>()),</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;#endif</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; byteoffset, &amp;sh, (<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == (<a class="code" href="classllfio__v2__xxx_1_1mapped.html#a25d56aca213617d530ab3c9cb6f43df5">size_type</a>) -1) ? 0 : <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> * <span class="keyword">sizeof</span>(T), _flag)) <span class="comment">// NOLINT</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1mapped_html_a25d56aca213617d530ab3c9cb6f43df5"><div class="ttname"><a href="classllfio__v2__xxx_1_1mapped.html#a25d56aca213617d530ab3c9cb6f43df5">llfio_v2_xxx::mapped::size_type</a></div><div class="ttdeci">typename section_handle::size_type size_type</div><div class="ttdoc">The size type. </div><div class="ttdef"><b>Definition:</b> mapped.hpp:52</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:623</div></div>
+<div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:675</div></div>
<div class="ttc" id="namespacellfio__v2__xxx_1_1utils_html_a5499feaf6b774e774a26e7decd11e3fa"><div class="ttname"><a href="namespacellfio__v2__xxx_1_1utils.html#a5499feaf6b774e774a26e7decd11e3fa">llfio_v2_xxx::utils::round_down_to_page_size</a></div><div class="ttdeci">T round_down_to_page_size(T i, size_t pagesize) noexcept</div><div class="ttdoc">Round a value to its next lowest page size multiple. </div><div class="ttdef"><b>Definition:</b> utils.hpp:51</div></div>
<div class="ttc" id="namespacellfio__v2__xxx_1_1utils_html_a42fc69cae3dbbf66498545cbe358e2ba"><div class="ttname"><a href="namespacellfio__v2__xxx_1_1utils.html#a42fc69cae3dbbf66498545cbe358e2ba">llfio_v2_xxx::utils::page_size</a></div><div class="ttdeci">size_t page_size() noexcept</div><div class="ttdoc">Returns the smallest page size of this architecture which is useful for calculating direct i/o multip...</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1mapped_html_a9a6b8b22c06bf6e9362496cdcc3ac40d"><div class="ttname"><a href="classllfio__v2__xxx_1_1mapped.html#a9a6b8b22c06bf6e9362496cdcc3ac40d">llfio_v2_xxx::mapped::mapped</a></div><div class="ttdeci">constexpr mapped()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> mapped.hpp:77</div></div>
@@ -328,7 +328,7 @@ template&lt;class T &gt; </div>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; : <a class="code" href="classllfio__v2__xxx_1_1mapped.html#a9a6b8b22c06bf6e9362496cdcc3ac40d">mapped</a>((<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == 0) ? <a class="code" href="classllfio__v2__xxx_1_1mapped.html#a9a6b8b22c06bf6e9362496cdcc3ac40d">mapped</a>() : <a class="code" href="classllfio__v2__xxx_1_1mapped.html#a9a6b8b22c06bf6e9362496cdcc3ac40d">mapped</a>(&amp;backing, maximum_size,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;#ifdef _WIN32</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; byteoffset &amp; ~65535,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;#<span class="keywordflow">else</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespacellfio__v2__xxx_1_1utils.html#a5499feaf6b774e774a26e7decd11e3fa">utils::round_down_to_page_size</a>(byteoffset, <a class="code" href="namespacellfio__v2__xxx_1_1utils.html#a42fc69cae3dbbf66498545cbe358e2ba">utils::page_size</a>()),</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;#endif</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; byteoffset, <span class="keyword">nullptr</span>, (<a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> == (<a class="code" href="classllfio__v2__xxx_1_1mapped.html#a25d56aca213617d530ab3c9cb6f43df5">size_type</a>) -1) ? 0 : <a class="code" href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">length</a> * <span class="keyword">sizeof</span>(T), _flag)) <span class="comment">// NOLINT</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1mapped_html_a25d56aca213617d530ab3c9cb6f43df5"><div class="ttname"><a href="classllfio__v2__xxx_1_1mapped.html#a25d56aca213617d530ab3c9cb6f43df5">llfio_v2_xxx::mapped::size_type</a></div><div class="ttdeci">typename section_handle::size_type size_type</div><div class="ttdoc">The size type. </div><div class="ttdef"><b>Definition:</b> mapped.hpp:52</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:623</div></div>
+<div class="ttc" id="namespacellfio__v2__xxx_html_aa3676f0dd69f4b54cf7e14e3f86d32b9"><div class="ttname"><a href="namespacellfio__v2__xxx.html#aa3676f0dd69f4b54cf7e14e3f86d32b9">llfio_v2_xxx::length</a></div><div class="ttdeci">result&lt; section_handle::extent_type &gt; length(const section_handle &amp;self) noexcept</div><div class="ttdoc">Return the current maximum permitted extent of the memory section. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:675</div></div>
<div class="ttc" id="namespacellfio__v2__xxx_1_1utils_html_a5499feaf6b774e774a26e7decd11e3fa"><div class="ttname"><a href="namespacellfio__v2__xxx_1_1utils.html#a5499feaf6b774e774a26e7decd11e3fa">llfio_v2_xxx::utils::round_down_to_page_size</a></div><div class="ttdeci">T round_down_to_page_size(T i, size_t pagesize) noexcept</div><div class="ttdoc">Round a value to its next lowest page size multiple. </div><div class="ttdef"><b>Definition:</b> utils.hpp:51</div></div>
<div class="ttc" id="namespacellfio__v2__xxx_1_1utils_html_a42fc69cae3dbbf66498545cbe358e2ba"><div class="ttname"><a href="namespacellfio__v2__xxx_1_1utils.html#a42fc69cae3dbbf66498545cbe358e2ba">llfio_v2_xxx::utils::page_size</a></div><div class="ttdeci">size_t page_size() noexcept</div><div class="ttdoc">Returns the smallest page size of this architecture which is useful for calculating direct i/o multip...</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1mapped_html_a9a6b8b22c06bf6e9362496cdcc3ac40d"><div class="ttname"><a href="classllfio__v2__xxx_1_1mapped.html#a9a6b8b22c06bf6e9362496cdcc3ac40d">llfio_v2_xxx::mapped::mapped</a></div><div class="ttdeci">constexpr mapped()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> mapped.hpp:77</div></div>
diff --git a/classllfio__v2__xxx_1_1section__handle.html b/classllfio__v2__xxx_1_1section__handle.html
index 558fd9a3..76d43443 100644
--- a/classllfio__v2__xxx_1_1section__handle.html
+++ b/classllfio__v2__xxx_1_1section__handle.html
@@ -694,7 +694,7 @@ flag&#160;</td><td class="memItemRight" valign="bottom"><b>_flags</b> {flag::non
<p>This convenience overload create a writable section if the backing file is writable, otherwise a read-only section.</p>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX dup(), open() or NtCreateSection() can return. </dd></dl>
<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">section</a>(<a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a680320bd539378d99870d9b2cdedb9c8">backing</a>, bytes, <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a680320bd539378d99870d9b2cdedb9c8">backing</a>.<a class="code" href="classllfio__v2__xxx_1_1handle.html#a211fee447a47bdeb5424a2a5ae1de852">is_writable</a>() ? (flag::readwrite) : (<a class="code" href="namespacellfio__v2__xxx.html#ab993693c98cdb52e2d611f8f9e24e4e2">flag::read</a>)); }</div><div class="ttc" id="classllfio__v2__xxx_1_1section__handle_html_a680320bd539378d99870d9b2cdedb9c8"><div class="ttname"><a href="classllfio__v2__xxx_1_1section__handle.html#a680320bd539378d99870d9b2cdedb9c8">llfio_v2_xxx::section_handle::backing</a></div><div class="ttdeci">file_handle * backing() const noexcept</div><div class="ttdoc">Returns the borrowed handle backing this section, if any. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:159</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_ab993693c98cdb52e2d611f8f9e24e4e2"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ab993693c98cdb52e2d611f8f9e24e4e2">llfio_v2_xxx::read</a></div><div class="ttdeci">map_handle::io_result&lt; map_handle::buffers_type &gt; read(map_handle &amp;self, map_handle::io_request&lt; map_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the mapped view. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:741</div></div>
+<div class="ttc" id="namespacellfio__v2__xxx_html_ab993693c98cdb52e2d611f8f9e24e4e2"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ab993693c98cdb52e2d611f8f9e24e4e2">llfio_v2_xxx::read</a></div><div class="ttdeci">map_handle::io_result&lt; map_handle::buffers_type &gt; read(map_handle &amp;self, map_handle::io_request&lt; map_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the mapped view. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:793</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1handle_html_a211fee447a47bdeb5424a2a5ae1de852"><div class="ttname"><a href="classllfio__v2__xxx_1_1handle.html#a211fee447a47bdeb5424a2a5ae1de852">llfio_v2_xxx::handle::is_writable</a></div><div class="ttdeci">bool is_writable() const noexcept</div><div class="ttdoc">True if the handle is writable. </div><div class="ttdef"><b>Definition:</b> handle.hpp:270</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1section__handle_html_a00db3d1bbffbdb4237401568c441da21"><div class="ttname"><a href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">llfio_v2_xxx::section_handle::section</a></div><div class="ttdeci">static result&lt; section_handle &gt; section(file_handle &amp;backing, extent_type maximum_size, flag _flag) noexcept</div><div class="ttdoc">Create a memory section backed by a file. </div></div>
</div><!-- fragment -->
diff --git a/index.html b/index.html
index fa25a492..2b0e8570 100644
--- a/index.html
+++ b/index.html
@@ -104,7 +104,6 @@ $(document).ready(function(){initNavTree('index.html','');});
<ul>
<li>Portable to any conforming C++ 14 compiler with a working Filesystem TS in its STL.</li>
<li>Will make use of any Concepts TS if you have them.</li>
-<li><code>async_file_handle</code> supports <code>co_await</code> (Coroutines TS).</li>
<li>Provides view adapters into the Ranges TS, so ready for STL2.</li>
<li>Original error code is always preserved, even down to the original NT kernel error code if a NT kernel API was used.<ul>
<li>Optional configuration based on <a href="https://wg21.link/P1028">P1028</a> <em>SG14 status_code and standard error object for P0709 Zero-overhead deterministic exceptions</em>.</li>
@@ -112,7 +111,9 @@ $(document).ready(function(){initNavTree('index.html','');});
</li>
<li>Race free filesystem design used throughout (i.e. no TOCTOU).</li>
<li>Zero malloc, zero exception throw and zero whole system memory copy design used throughout, even down to paths (which can hit 64Kb!).</li>
-<li>Works very well with the C++ standard library, and is intended to be proposed for standardisation into C++ in Summer 2018.</li>
+<li>Comprehensive support for virtual and mapped memory of both SCM/DAX and page cached storage, including large, huge and super pages.</li>
+<li>Works very well with the C++ standard library, and is being proposed for standardisation into C++. See <a href="https://wg21.link/P1031">P1031 <em>Low level file i/o</em></a>.</li>
+<li><code>async_file_handle</code> supports <code>co_await</code> (Coroutines TS).</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Note that this code is of late alpha quality. It's quite reliable on Windows and Linux, but be careful when using it!</dd></dl>
<p>Examples of use: </p><table width="100%" border="0" cellpadding="4">
diff --git a/map__handle_8hpp.html b/map__handle_8hpp.html
index 053b2bc9..ef12b012 100644
--- a/map__handle_8hpp.html
+++ b/map__handle_8hpp.html
@@ -167,6 +167,9 @@ map_handle::size_type&#160;</td><td class="memItemRight" valign="bottom"><a clas
<tr class="memitem:a681ed7e98ac17e6bb336b9287365141b"><td class="memItemLeft" align="right" valign="top">map_handle::io_result&lt; map_handle::const_buffers_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a681ed7e98ac17e6bb336b9287365141b">llfio_v2_xxx::write</a> (map_handle &amp;self, map_handle::io_request&lt; map_handle::const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</td></tr>
<tr class="memdesc:a681ed7e98ac17e6bb336b9287365141b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data to the mapped view. <a href="namespacellfio__v2__xxx.html#a681ed7e98ac17e6bb336b9287365141b">More...</a><br /></td></tr>
<tr class="separator:a681ed7e98ac17e6bb336b9287365141b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acaa74d6fc6b9aef877233654f514041d"><td class="memItemLeft" align="right" valign="top"><a id="acaa74d6fc6b9aef877233654f514041d"></a>
+result&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>llfio_v2_xxx::detail::pagesize_from_flags</b> (section_handle::flag _flag) noexcept</td></tr>
+<tr class="separator:acaa74d6fc6b9aef877233654f514041d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Provides <code>map_handle</code> </p>
diff --git a/map__handle_8hpp.js b/map__handle_8hpp.js
index ab591e92..20678b4f 100644
--- a/map__handle_8hpp.js
+++ b/map__handle_8hpp.js
@@ -12,6 +12,7 @@ var map__handle_8hpp =
[ "map", "map__handle_8hpp.html#ab50d07405d17a8fff4e360fd2612bc6f", null ],
[ "map", "map__handle_8hpp.html#ab9dbbe2fe79758ef87fe2dd1f61d824c", null ],
[ "operator<<", "map__handle_8hpp.html#aaf60dc6739dc2bd7d890630b1a50d15a", null ],
+ [ "pagesize_from_flags", "map__handle_8hpp.html#acaa74d6fc6b9aef877233654f514041d", null ],
[ "read", "map__handle_8hpp.html#ab993693c98cdb52e2d611f8f9e24e4e2", null ],
[ "section", "map__handle_8hpp.html#ac9be77116e7a2d8c029dd066dfa363fb", null ],
[ "section", "map__handle_8hpp.html#a3d55c0a3b567c7ed05053a94750bb133", null ],
diff --git a/namespacellfio__v2__xxx.html b/namespacellfio__v2__xxx.html
index 3b9ee8e9..10b29eb2 100644
--- a/namespacellfio__v2__xxx.html
+++ b/namespacellfio__v2__xxx.html
@@ -552,7 +552,7 @@ For portability, you can only assume that barriers write order for a single hand
</dd>
</dl>
<p>Upon return, one knows that memory in the returned buffer has been barriered (it may be empty if there is no support for this operation in LLFIO, or if the current CPU does not support this operation). You may find the <code>is_nvram()</code> observer of particular use here. </p>
-<div class="fragment"><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;{</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.barrier(std::forward&lt;decltype(req)&gt;(req), std::forward&lt;decltype(evict)&gt;(evict));</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;{</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.barrier(std::forward&lt;decltype(req)&gt;(req), std::forward&lt;decltype(evict)&gt;(evict));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a3d112d170c1d485e1120de06eef02375"></a>
@@ -741,7 +741,7 @@ For portability, you can only assume that barriers write order for a single hand
</dl>
<dl class="section note"><dt>Note</dt><dd>On Microsoft Windows this constructor uses the faster VirtualAlloc() which creates less versatile page backed memory. If you want anonymous memory allocated from a paging file backed section instead, create a page file backed section and then a mapped view from that using the other constructor. This makes available all those very useful VM tricks Windows can do with section mapped memory which VirtualAlloc() memory cannot do.</dd></dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX mmap() or VirtualAlloc() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;{</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#ab9dbbe2fe79758ef87fe2dd1f61d824c">map_handle::map</a>(std::forward&lt;decltype(bytes)&gt;(bytes), zeroed, std::forward&lt;decltype(_flag)&gt;(_flag));</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_ab9dbbe2fe79758ef87fe2dd1f61d824c"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ab9dbbe2fe79758ef87fe2dd1f61d824c">llfio_v2_xxx::map</a></div><div class="ttdeci">result&lt; map_handle &gt; map(section_handle &amp;section, map_handle::size_type bytes=0, map_handle::extent_type offset=0, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</div><div class="ttdef"><b>Definition:</b> map_handle.hpp:690</div></div>
+<div class="fragment"><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;{</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#ab9dbbe2fe79758ef87fe2dd1f61d824c">map_handle::map</a>(std::forward&lt;decltype(bytes)&gt;(bytes), zeroed, std::forward&lt;decltype(_flag)&gt;(_flag));</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_ab9dbbe2fe79758ef87fe2dd1f61d824c"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ab9dbbe2fe79758ef87fe2dd1f61d824c">llfio_v2_xxx::map</a></div><div class="ttdeci">result&lt; map_handle &gt; map(section_handle &amp;section, map_handle::size_type bytes=0, map_handle::extent_type offset=0, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</div><div class="ttdef"><b>Definition:</b> map_handle.hpp:742</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -800,8 +800,8 @@ For portability, you can only assume that barriers write order for a single hand
</dd>
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX mmap() or NtMapViewOfSection() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;{</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#ab9dbbe2fe79758ef87fe2dd1f61d824c">map_handle::map</a>(std::forward&lt;decltype(<a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section</a>)&gt;(<a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section</a>), std::forward&lt;decltype(bytes)&gt;(bytes), std::forward&lt;decltype(offset)&gt;(offset), std::forward&lt;decltype(_flag)&gt;(_flag));</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_ab9dbbe2fe79758ef87fe2dd1f61d824c"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ab9dbbe2fe79758ef87fe2dd1f61d824c">llfio_v2_xxx::map</a></div><div class="ttdeci">result&lt; map_handle &gt; map(section_handle &amp;section, map_handle::size_type bytes=0, map_handle::extent_type offset=0, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</div><div class="ttdef"><b>Definition:</b> map_handle.hpp:690</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_a5323ac4d73623d99f92109a5c184e5dd"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">llfio_v2_xxx::section</a></div><div class="ttdeci">result&lt; section_handle &gt; section(section_handle::extent_type bytes, const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), section_handle::flag _flag=section_handle::flag::read|section_handle::flag::write) noexcept</div><div class="ttdoc">Create a memory section backed by an anonymous, managed file. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:618</div></div>
+<div class="fragment"><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;{</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#ab9dbbe2fe79758ef87fe2dd1f61d824c">map_handle::map</a>(std::forward&lt;decltype(<a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section</a>)&gt;(<a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section</a>), std::forward&lt;decltype(bytes)&gt;(bytes), std::forward&lt;decltype(offset)&gt;(offset), std::forward&lt;decltype(_flag)&gt;(_flag));</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_ab9dbbe2fe79758ef87fe2dd1f61d824c"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ab9dbbe2fe79758ef87fe2dd1f61d824c">llfio_v2_xxx::map</a></div><div class="ttdeci">result&lt; map_handle &gt; map(section_handle &amp;section, map_handle::size_type bytes=0, map_handle::extent_type offset=0, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</div><div class="ttdef"><b>Definition:</b> map_handle.hpp:742</div></div>
+<div class="ttc" id="namespacellfio__v2__xxx_html_a5323ac4d73623d99f92109a5c184e5dd"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">llfio_v2_xxx::section</a></div><div class="ttdeci">result&lt; section_handle &gt; section(section_handle::extent_type bytes, const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), section_handle::flag _flag=section_handle::flag::read|section_handle::flag::write) noexcept</div><div class="ttdoc">Create a memory section backed by an anonymous, managed file. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:670</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1469,7 +1469,7 @@ For portability, you can only assume that barriers write order for a single hand
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>None, though the various signals and structured exception throws common to using memory maps may occur. </dd></dl>
<dl class="section user"><dt>Memory Allocations</dt><dd>None. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;{</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.read(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;{</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.read(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a60fa5c64c83ce05c8287c5379d082e49"></a>
@@ -1590,7 +1590,7 @@ For portability, you can only assume that barriers write order for a single hand
</dd>
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX dup(), open() or NtCreateSection() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;{</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section_handle::section</a>(std::forward&lt;decltype(backing)&gt;(backing), std::forward&lt;decltype(maximum_size)&gt;(maximum_size), std::forward&lt;decltype(_flag)&gt;(_flag));</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a5323ac4d73623d99f92109a5c184e5dd"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">llfio_v2_xxx::section</a></div><div class="ttdeci">result&lt; section_handle &gt; section(section_handle::extent_type bytes, const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), section_handle::flag _flag=section_handle::flag::read|section_handle::flag::write) noexcept</div><div class="ttdoc">Create a memory section backed by an anonymous, managed file. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:618</div></div>
+<div class="fragment"><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;{</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section_handle::section</a>(std::forward&lt;decltype(backing)&gt;(backing), std::forward&lt;decltype(maximum_size)&gt;(maximum_size), std::forward&lt;decltype(_flag)&gt;(_flag));</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a5323ac4d73623d99f92109a5c184e5dd"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">llfio_v2_xxx::section</a></div><div class="ttdeci">result&lt; section_handle &gt; section(section_handle::extent_type bytes, const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), section_handle::flag _flag=section_handle::flag::read|section_handle::flag::write) noexcept</div><div class="ttdoc">Create a memory section backed by an anonymous, managed file. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:670</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1638,7 +1638,7 @@ For portability, you can only assume that barriers write order for a single hand
</dl>
<p>This convenience overload create a writable section if the backing file is writable, otherwise a read-only section.</p>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX dup(), open() or NtCreateSection() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;{</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section_handle::section</a>(std::forward&lt;decltype(backing)&gt;(backing), std::forward&lt;decltype(bytes)&gt;(bytes));</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a5323ac4d73623d99f92109a5c184e5dd"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">llfio_v2_xxx::section</a></div><div class="ttdeci">result&lt; section_handle &gt; section(section_handle::extent_type bytes, const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), section_handle::flag _flag=section_handle::flag::read|section_handle::flag::write) noexcept</div><div class="ttdoc">Create a memory section backed by an anonymous, managed file. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:618</div></div>
+<div class="fragment"><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;{</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section_handle::section</a>(std::forward&lt;decltype(backing)&gt;(backing), std::forward&lt;decltype(bytes)&gt;(bytes));</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a5323ac4d73623d99f92109a5c184e5dd"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">llfio_v2_xxx::section</a></div><div class="ttdeci">result&lt; section_handle &gt; section(section_handle::extent_type bytes, const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), section_handle::flag _flag=section_handle::flag::read|section_handle::flag::write) noexcept</div><div class="ttdoc">Create a memory section backed by an anonymous, managed file. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:670</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1692,7 +1692,7 @@ For portability, you can only assume that barriers write order for a single hand
</dd>
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX dup(), open() or NtCreateSection() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;{</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section_handle::section</a>(std::forward&lt;decltype(bytes)&gt;(bytes), std::forward&lt;decltype(dirh)&gt;(dirh), std::forward&lt;decltype(_flag)&gt;(_flag));</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a5323ac4d73623d99f92109a5c184e5dd"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">llfio_v2_xxx::section</a></div><div class="ttdeci">result&lt; section_handle &gt; section(section_handle::extent_type bytes, const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), section_handle::flag _flag=section_handle::flag::read|section_handle::flag::write) noexcept</div><div class="ttdoc">Create a memory section backed by an anonymous, managed file. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:618</div></div>
+<div class="fragment"><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;{</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">section_handle::section</a>(std::forward&lt;decltype(bytes)&gt;(bytes), std::forward&lt;decltype(dirh)&gt;(dirh), std::forward&lt;decltype(_flag)&gt;(_flag));</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a5323ac4d73623d99f92109a5c184e5dd"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5323ac4d73623d99f92109a5c184e5dd">llfio_v2_xxx::section</a></div><div class="ttdeci">result&lt; section_handle &gt; section(section_handle::extent_type bytes, const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), section_handle::flag _flag=section_handle::flag::read|section_handle::flag::write) noexcept</div><div class="ttdoc">Create a memory section backed by an anonymous, managed file. </div><div class="ttdef"><b>Definition:</b> map_handle.hpp:670</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1943,7 +1943,7 @@ For portability, you can only assume that barriers write order for a single hand
</dd>
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values <code>NtExtendSection()</code> or <code>ftruncate()</code> can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;{</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.truncate(std::forward&lt;decltype(newsize)&gt;(newsize));</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;{</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.truncate(std::forward&lt;decltype(newsize)&gt;(newsize));</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a8231f6ba00d0d5840b47981ecc148e51"></a>
@@ -1999,7 +1999,7 @@ For portability, you can only assume that barriers write order for a single hand
</dd>
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX <code>mremap()</code>, <code>mmap(addr)</code> or <code>VirtualAlloc(addr)</code> can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;{</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.truncate(std::forward&lt;decltype(newsize)&gt;(newsize), std::forward&lt;decltype(permit_relocation)&gt;(permit_relocation));</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;{</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.truncate(std::forward&lt;decltype(newsize)&gt;(newsize), std::forward&lt;decltype(permit_relocation)&gt;(permit_relocation));</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a3c20b46beeb225aa63ade3dc42e73362"></a>
@@ -2205,7 +2205,7 @@ For portability, you can only assume that barriers write order for a single hand
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>None, though the various signals and structured exception throws common to using memory maps may occur. </dd></dl>
<dl class="section user"><dt>Memory Allocations</dt><dd>None. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;{</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.write(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;{</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.write(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ad0fb15649a46da0d75b5797bfda8dc2e"></a>
diff --git a/navtreedata.js b/navtreedata.js
index edb7b8ea..35421f85 100644
--- a/navtreedata.js
+++ b/navtreedata.js
@@ -41,12 +41,12 @@ var NAVTREEINDEX =
"annotated.html",
"classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1shared__fs__mutex_1_1entities__guard.html#a573150086df5bb6db571443b98f08776",
"classllfio__v2__xxx_1_1file__handle.html#af0b8ea283f0b1c107173ad5768e5301c",
-"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2a",
+"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa07122ea63cdc5b2c07e764d95a816d3d",
"classllfio__v2__xxx_1_1path__handle.html#ad011e3d216b5194b92f90502d9bb6b99",
"config_8hpp.html#a02c02d05e24d34c25324c192df11c0b4",
-"storage__profile_8hpp.html#a72a7277d9ca13177b87462f57f4f8b6b",
-"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html#a227669313e9340c70703b5d27e0cc0d4",
-"structllfio__v2__xxx_1_1statfs__t.html#abe7361e7f354e4de36b64f80b4c6c72e"
+"storage__profile_8hpp.html#a62ea39b41b0ae8ffd6e78db0ff9a819e",
+"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html",
+"structllfio__v2__xxx_1_1statfs__t.html#aa8b39815508e9252da673c7e18666cd7"
];
var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/navtreeindex2.js b/navtreeindex2.js
index 8fc10aca..3a24196a 100644
--- a/navtreeindex2.js
+++ b/navtreeindex2.js
@@ -242,12 +242,12 @@ var NAVTREEINDEX2 =
"classllfio__v2__xxx_1_1map__handle.html#a354c9168af7759f7151a071c1e1b7b19":[3,0,0,24,41],
"classllfio__v2__xxx_1_1map__handle.html#a369f8ec6a682030f8e7f5749eb7bc77e":[3,0,0,24,49],
"classllfio__v2__xxx_1_1map__handle.html#a3efb39f1b54a7c156a3e0ee2a953712d":[3,0,0,24,31],
-"classllfio__v2__xxx_1_1map__handle.html#a41be918ad9a0c472b6522ce351aaa8c4":[3,0,0,24,14],
"classllfio__v2__xxx_1_1map__handle.html#a433596cf8fbaf7fa81c6ff8807c18b4e":[3,0,0,24,16],
"classllfio__v2__xxx_1_1map__handle.html#a4471012e7b85ac6dea1d0af43f1ee4e6":[3,0,0,24,21],
"classllfio__v2__xxx_1_1map__handle.html#a4716696b8700953889006251e0678aa4":[3,0,0,24,65],
"classllfio__v2__xxx_1_1map__handle.html#a486f8bbb3ea986b6f2e877d9ea5ba81d":[3,0,0,24,84],
"classllfio__v2__xxx_1_1map__handle.html#a4ca48bdcd6d6bf8b41d0cebb304fe9ce":[3,0,0,24,34],
"classllfio__v2__xxx_1_1map__handle.html#a4e59feb68c5df85b377be5dd3ee563ab":[3,0,0,24,2],
-"classllfio__v2__xxx_1_1map__handle.html#a518ff43602ac8e32ae48a198d0de1d75":[3,0,0,24,30]
+"classllfio__v2__xxx_1_1map__handle.html#a518ff43602ac8e32ae48a198d0de1d75":[3,0,0,24,30],
+"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2a":[3,0,0,24,13]
};
diff --git a/navtreeindex3.js b/navtreeindex3.js
index f876c09b..50c86a14 100644
--- a/navtreeindex3.js
+++ b/navtreeindex3.js
@@ -1,6 +1,5 @@
var NAVTREEINDEX3 =
{
-"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2a":[3,0,0,24,13],
"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa07122ea63cdc5b2c07e764d95a816d3d":[3,0,0,24,13,12],
"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa334c4a4c42fdb79d7ebc3e73b517e6f8":[3,0,0,24,13,1],
"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa334c4a4c42fdb79d7ebc3e73b517e6f8":[3,0,0,24,13,2],
@@ -44,7 +43,8 @@ var NAVTREEINDEX3 =
"classllfio__v2__xxx_1_1map__handle.html#a9c69e0d3f3fa2c213bdd4deabc6c2279":[3,0,0,24,15],
"classllfio__v2__xxx_1_1map__handle.html#a9ff113f78e71337f78c9139ca202fe6a":[3,0,0,24,81],
"classllfio__v2__xxx_1_1map__handle.html#aa3225a2ee86b12e6099d15a2a87b99b4":[3,0,0,24,18],
-"classllfio__v2__xxx_1_1map__handle.html#aa3ec366f663f85fb4d679542b8c1b41a":[3,0,0,24,24],
+"classllfio__v2__xxx_1_1map__handle.html#aa3ec366f663f85fb4d679542b8c1b41a":[3,0,0,24,23],
+"classllfio__v2__xxx_1_1map__handle.html#aa954d9b40b2685bbc8a229e3907c297d":[3,0,0,24,14],
"classllfio__v2__xxx_1_1map__handle.html#aaa8a74dfd708c27f547a6ebd6298d043":[3,0,0,24,7],
"classllfio__v2__xxx_1_1map__handle.html#aac0369e8025ae1320e7d607922f61b48":[3,0,0,24,58],
"classllfio__v2__xxx_1_1map__handle.html#ab352528186444502bbd2784518e61548":[3,0,0,24,6],
@@ -53,7 +53,7 @@ var NAVTREEINDEX3 =
"classllfio__v2__xxx_1_1map__handle.html#ab6704788ecc652589c3e155f47b40a5e":[3,0,0,24,27],
"classllfio__v2__xxx_1_1map__handle.html#ab814c4ba9fb6486c21f701a00691df2f":[3,0,0,24,9],
"classllfio__v2__xxx_1_1map__handle.html#ab9bd6d309f13b72291b2bf7dd495cda4":[3,0,0,24,8],
-"classllfio__v2__xxx_1_1map__handle.html#ab9fb41b19bd14bba06e3df8f41e9087d":[3,0,0,24,23],
+"classllfio__v2__xxx_1_1map__handle.html#ab9fb41b19bd14bba06e3df8f41e9087d":[3,0,0,24,24],
"classllfio__v2__xxx_1_1map__handle.html#ac3aa3dc009822c0e437f317864534feb":[3,0,0,24,33],
"classllfio__v2__xxx_1_1map__handle.html#ac7aeb0aa6182a22d0242340eb6d341b9":[3,0,0,24,70],
"classllfio__v2__xxx_1_1map__handle.html#ac7d048f830c0b2563fb4b50eb0597152":[3,0,0,24,25],
diff --git a/navtreeindex5.js b/navtreeindex5.js
index a476c295..2cf251b6 100644
--- a/navtreeindex5.js
+++ b/navtreeindex5.js
@@ -104,26 +104,26 @@ var NAVTREEINDEX5 =
"globals_defs.html":[4,1,2],
"globals_func.html":[4,1,1],
"group__config.html":[1,0],
-"group__config.html#ga090b0d323b6d7d2496dba7aa42068013":[4,0,0,0,2,8],
"group__config.html#ga090b0d323b6d7d2496dba7aa42068013":[1,0,15],
+"group__config.html#ga090b0d323b6d7d2496dba7aa42068013":[4,0,0,0,2,8],
"group__config.html#ga18295c2601f9e6cb9e759d57fa0d8ab4":[1,0,16],
"group__config.html#ga18295c2601f9e6cb9e759d57fa0d8ab4":[4,0,0,0,2,9],
"group__config.html#ga2e45ede29ed7b2aa06eb19aff2485541":[4,0,0,0,0,2,13],
"group__config.html#ga2e45ede29ed7b2aa06eb19aff2485541":[1,0,6],
"group__config.html#ga40c15a3fc44361077b478acbfaca18ee":[1,0,3],
"group__config.html#ga40c15a3fc44361077b478acbfaca18ee":[4,0,0,0,0,2,9],
-"group__config.html#ga48fcb899a9d482d406f8fdbebc791ba0":[1,0,1],
"group__config.html#ga48fcb899a9d482d406f8fdbebc791ba0":[4,0,0,0,0,2,7],
-"group__config.html#ga5365e6c96107a8e7edf6030462562cae":[4,0,0,0,0,2,6],
+"group__config.html#ga48fcb899a9d482d406f8fdbebc791ba0":[1,0,1],
"group__config.html#ga5365e6c96107a8e7edf6030462562cae":[1,0,0],
-"group__config.html#ga799d6ef19b741b67d019652e4acc271f":[4,0,0,0,0,2,10],
+"group__config.html#ga5365e6c96107a8e7edf6030462562cae":[4,0,0,0,0,2,6],
"group__config.html#ga799d6ef19b741b67d019652e4acc271f":[1,0,4],
+"group__config.html#ga799d6ef19b741b67d019652e4acc271f":[4,0,0,0,0,2,10],
"group__config.html#ga84df5d479525cd6b58f873c2f9869b22":[1,0,11],
"group__config.html#ga84df5d479525cd6b58f873c2f9869b22":[4,0,0,0,0,2,25],
"group__config.html#gaadd4f1f9d1a5c77c3b40d9e1b759b706":[4,0,0,0,2,3],
"group__config.html#gaadd4f1f9d1a5c77c3b40d9e1b759b706":[1,0,7],
-"group__config.html#gab03294596f77a7717954929a887ca425":[1,0,14],
"group__config.html#gab03294596f77a7717954929a887ca425":[4,0,0,0,2,7],
+"group__config.html#gab03294596f77a7717954929a887ca425":[1,0,14],
"group__config.html#gab2f82803f0ce479a2993d3b7696db8d3":[4,0,0,0,0,2,26],
"group__config.html#gab2f82803f0ce479a2993d3b7696db8d3":[1,0,12],
"group__config.html#gabb964a24682a722a7eaad891ee497a61":[4,0,0,0,0,2,22],
@@ -167,23 +167,24 @@ var NAVTREEINDEX5 =
"llfio_8hpp.html#af8824fe4ddf44b85f7c0609a3535c9d3":[4,0,0,0,1,3],
"lock__files_8hpp.html":[4,0,0,0,0,0,0,3],
"map__handle_8hpp.html":[4,0,0,0,0,11],
-"map__handle_8hpp.html#a28060698d23344a5ece73336a9cf49c2":[4,0,0,0,0,11,17],
+"map__handle_8hpp.html#a28060698d23344a5ece73336a9cf49c2":[4,0,0,0,0,11,18],
"map__handle_8hpp.html#a30183de3590a31b5ef3b2952f700b110":[4,0,0,0,0,11,6],
"map__handle_8hpp.html#a3d02b45677b6189566e862d5bcd4d5c8":[4,0,0,0,0,11,5],
-"map__handle_8hpp.html#a3d55c0a3b567c7ed05053a94750bb133":[4,0,0,0,0,11,14],
-"map__handle_8hpp.html#a5323ac4d73623d99f92109a5c184e5dd":[4,0,0,0,0,11,15],
-"map__handle_8hpp.html#a681ed7e98ac17e6bb336b9287365141b":[4,0,0,0,0,11,20],
+"map__handle_8hpp.html#a3d55c0a3b567c7ed05053a94750bb133":[4,0,0,0,0,11,15],
+"map__handle_8hpp.html#a5323ac4d73623d99f92109a5c184e5dd":[4,0,0,0,0,11,16],
+"map__handle_8hpp.html#a681ed7e98ac17e6bb336b9287365141b":[4,0,0,0,0,11,21],
"map__handle_8hpp.html#a70e68bcf05636966ffefe001b903487e":[4,0,0,0,0,11,8],
-"map__handle_8hpp.html#a8231f6ba00d0d5840b47981ecc148e51":[4,0,0,0,0,11,19],
+"map__handle_8hpp.html#a8231f6ba00d0d5840b47981ecc148e51":[4,0,0,0,0,11,20],
"map__handle_8hpp.html#aa3676f0dd69f4b54cf7e14e3f86d32b9":[4,0,0,0,0,11,7],
-"map__handle_8hpp.html#aa6b0c71dfe04ceae64818d4c91d05537":[4,0,0,0,0,11,18],
+"map__handle_8hpp.html#aa6b0c71dfe04ceae64818d4c91d05537":[4,0,0,0,0,11,19],
"map__handle_8hpp.html#aaf60dc6739dc2bd7d890630b1a50d15a":[4,0,0,0,0,11,11],
"map__handle_8hpp.html#ab26180c1aada3315a46564d6477bea72":[4,0,0,0,0,11,4],
"map__handle_8hpp.html#ab50d07405d17a8fff4e360fd2612bc6f":[4,0,0,0,0,11,9],
-"map__handle_8hpp.html#ab993693c98cdb52e2d611f8f9e24e4e2":[4,0,0,0,0,11,12],
+"map__handle_8hpp.html#ab993693c98cdb52e2d611f8f9e24e4e2":[4,0,0,0,0,11,13],
"map__handle_8hpp.html#ab9dbbe2fe79758ef87fe2dd1f61d824c":[4,0,0,0,0,11,10],
-"map__handle_8hpp.html#abfe725f4e0abd521a7aa319a6d567e44":[4,0,0,0,0,11,16],
-"map__handle_8hpp.html#ac9be77116e7a2d8c029dd066dfa363fb":[4,0,0,0,0,11,13],
+"map__handle_8hpp.html#abfe725f4e0abd521a7aa319a6d567e44":[4,0,0,0,0,11,17],
+"map__handle_8hpp.html#ac9be77116e7a2d8c029dd066dfa363fb":[4,0,0,0,0,11,14],
+"map__handle_8hpp.html#acaa74d6fc6b9aef877233654f514041d":[4,0,0,0,0,11,12],
"map__view_8hpp.html":[4,0,0,0,0,12],
"mapped_8hpp.html":[4,0,0,0,0,13],
"mapped__file__handle_8hpp.html":[4,0,0,0,0,14],
@@ -203,8 +204,8 @@ var NAVTREEINDEX5 =
"namespacellfio__v2__xxx_1_1algorithm_1_1impl.html":[2,0,0,0,0],
"namespacellfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex.html":[3,0,0,0,1],
"namespacellfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex.html":[2,0,0,0,1],
-"namespacellfio__v2__xxx_1_1path__discovery.html":[2,0,0,1],
"namespacellfio__v2__xxx_1_1path__discovery.html":[3,0,0,1],
+"namespacellfio__v2__xxx_1_1path__discovery.html":[2,0,0,1],
"namespacellfio__v2__xxx_1_1storage__profile.html":[3,0,0,2],
"namespacellfio__v2__xxx_1_1storage__profile.html":[2,0,0,2],
"namespacellfio__v2__xxx_1_1utils.html":[3,0,0,3],
@@ -248,6 +249,5 @@ var NAVTREEINDEX5 =
"storage__profile_8hpp.html#a42ddc873c6d7178340a72417d1cc42b3":[4,0,0,0,0,21,22],
"storage__profile_8hpp.html#a51c017aed8f7fe2568fa29506ac03e43":[4,0,0,0,0,21,44],
"storage__profile_8hpp.html#a5a4d0eb211dde145cc65f78c4105644b":[4,0,0,0,0,21,42],
-"storage__profile_8hpp.html#a600823f44a0965dd6b0b82866e888f1e":[4,0,0,0,0,21,28],
-"storage__profile_8hpp.html#a62ea39b41b0ae8ffd6e78db0ff9a819e":[4,0,0,0,0,21,38]
+"storage__profile_8hpp.html#a600823f44a0965dd6b0b82866e888f1e":[4,0,0,0,0,21,28]
};
diff --git a/navtreeindex6.js b/navtreeindex6.js
index b02ddeb6..d342ca92 100644
--- a/navtreeindex6.js
+++ b/navtreeindex6.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX6 =
{
+"storage__profile_8hpp.html#a62ea39b41b0ae8ffd6e78db0ff9a819e":[4,0,0,0,0,21,38],
"storage__profile_8hpp.html#a72a7277d9ca13177b87462f57f4f8b6b":[4,0,0,0,0,21,32],
"storage__profile_8hpp.html#a789770254f4c4170e6bbb8dea9f7eec6":[4,0,0,0,0,21,8],
"storage__profile_8hpp.html#a79927d0371baaf191dac6acb2fb58dbb":[4,0,0,0,0,21,21],
@@ -248,6 +249,5 @@ var NAVTREEINDEX6 =
"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#a82fc63013eb5368fc3a0efe17440f7e9":[3,0,0,9,2],
"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#a8ea52aad6ecbb298c34f1c0ee25421d9":[3,0,0,9,3],
"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#ab6f55865b3a96c0c1433430ad19913d7":[3,0,0,9,4],
-"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#ac754d8cc2a5eb03041e1cd4f6c34917e":[3,0,0,9,1],
-"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html":[3,0,0,10]
+"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#ac754d8cc2a5eb03041e1cd4f6c34917e":[3,0,0,9,1]
};
diff --git a/navtreeindex7.js b/navtreeindex7.js
index c64a5748..3ac8f6d1 100644
--- a/navtreeindex7.js
+++ b/navtreeindex7.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX7 =
{
+"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html":[3,0,0,10],
"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html#a227669313e9340c70703b5d27e0cc0d4":[3,0,0,10,1],
"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html#adb05fe97d8584c32fd91f6c7ae2b1f82":[3,0,0,10,0],
"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html#ae75e42410f6a5a6f8a83c57c9a9208f3":[3,0,0,10,2],
@@ -248,6 +249,5 @@ var NAVTREEINDEX7 =
"structllfio__v2__xxx_1_1statfs__t.html#a7b8ea29dcda069ef2af42a25eb283786":[3,0,0,34,14],
"structllfio__v2__xxx_1_1statfs__t.html#a9684fea78f72efeafdbaa4a11f402060":[3,0,0,34,10],
"structllfio__v2__xxx_1_1statfs__t.html#aa24a1f36d9addae9d0d6ab13eeb43e5d":[3,0,0,34,7],
-"structllfio__v2__xxx_1_1statfs__t.html#aa4a4f434ba56992244ac59c8f825a962":[3,0,0,34,4],
-"structllfio__v2__xxx_1_1statfs__t.html#aa8b39815508e9252da673c7e18666cd7":[3,0,0,34,17]
+"structllfio__v2__xxx_1_1statfs__t.html#aa4a4f434ba56992244ac59c8f825a962":[3,0,0,34,4]
};
diff --git a/navtreeindex8.js b/navtreeindex8.js
index 40c979ab..0c673cc3 100644
--- a/navtreeindex8.js
+++ b/navtreeindex8.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX8 =
{
+"structllfio__v2__xxx_1_1statfs__t.html#aa8b39815508e9252da673c7e18666cd7":[3,0,0,34,17],
"structllfio__v2__xxx_1_1statfs__t.html#abe7361e7f354e4de36b64f80b4c6c72e":[3,0,0,34,12],
"structllfio__v2__xxx_1_1statfs__t.html#ac5414fc2f10e4d6f78617666a0353072":[3,0,0,34,2],
"structllfio__v2__xxx_1_1statfs__t.html#ac7bedb646a6855541633e7bb7232b5e0":[3,0,0,34,15],
@@ -192,8 +193,8 @@ var NAVTREEINDEX8 =
"structllfio__v2__xxx_1_1symlink__handle_1_1io__request_3_01const__buffers__type_00_01_________01_4.html":[3,0,0,35,4],
"structllfio__v2__xxx_1_1symlink__handle_1_1io__request_3_01const__buffers__type_00_01_________01_4.html#a33e29e085faf927b441f5bc6432051fd":[3,0,0,35,4,0],
"structllfio__v2__xxx_1_1symlink__handle_1_1io__request_3_01const__buffers__type_00_01_________01_4.html#a95d04a85fd6c6de0f0f46ab2f1bbf3c5":[3,0,0,35,4,4],
-"structllfio__v2__xxx_1_1symlink__handle_1_1io__request_3_01const__buffers__type_00_01_________01_4.html#ab80d17f7c11535e95b374938d4a89ff7":[3,0,0,35,4,1],
"structllfio__v2__xxx_1_1symlink__handle_1_1io__request_3_01const__buffers__type_00_01_________01_4.html#ab80d17f7c11535e95b374938d4a89ff7":[3,0,0,35,4,2],
+"structllfio__v2__xxx_1_1symlink__handle_1_1io__request_3_01const__buffers__type_00_01_________01_4.html#ab80d17f7c11535e95b374938d4a89ff7":[3,0,0,35,4,1],
"structllfio__v2__xxx_1_1symlink__handle_1_1io__request_3_01const__buffers__type_00_01_________01_4.html#ac6c62e07618b3d0bb32cfcca328ddb20":[3,0,0,35,4,3],
"structllfio__v2__xxx_1_1utils_1_1page__allocator_1_1rebind.html":[3,0,0,3,0,0],
"structllfio__v2__xxx_1_1utils_1_1page__allocator_1_1rebind.html#a0093a2a440bd3662b0ec692db4b59748":[3,0,0,3,0,0,0],