Update documentation.

This commit is contained in:
2025-10-21 14:23:35 +01:00
parent f53092c941
commit 55b688c522
109 changed files with 6592 additions and 6502 deletions

View File

@@ -206,7 +206,7 @@ $(function(){initNavTree('dump_8c_source.html','',''); });
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> *length = required_length;</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> </div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="comment">// Start to iterate and copy the data</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordtype">size_t</span> offset = 0;</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordtype">size_t</span> offset = <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareHeader.html">DumpHardwareHeader</a>);</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">for</span>(uint32_t i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>; i++)</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> {</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordtype">size_t</span> entry_size = <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>);</div>
@@ -419,78 +419,81 @@ $(function(){initNavTree('dump_8c_source.html','',''); });
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> </div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> <span class="keywordtype">size_t</span> pos = <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareHeader.html">DumpHardwareHeader</a>);</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> </div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span><span class="preprocessor">#define COPY_STRING_FIELD(field) \</span></div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span><span class="preprocessor"> do { \</span></div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span><span class="preprocessor"> const size_t field##_length = copy[e].entry.field##Length; \</span></div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span><span class="preprocessor"> if(field##_length &gt; 0) \</span></div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span><span class="preprocessor"> { \</span></div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span><span class="preprocessor"> if(field##_length &gt; length - pos) goto invalid_data; \</span></div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span><span class="preprocessor"> copy[e].field = (uint8_t *)calloc(1, field##_length + 1); \</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span><span class="preprocessor"> if(copy[e].field == NULL) goto free_copy_and_error; \</span></div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span><span class="preprocessor"> memcpy(copy[e].field, data + pos, field##_length); \</span></div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span><span class="preprocessor"> pos += field##_length; \</span></div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span><span class="preprocessor"> } \</span></div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span><span class="preprocessor"> } while(0)</span></div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> </div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> <span class="keywordflow">for</span>(uint32_t e = 0; e &lt; header.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>; e++)</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> {</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> <span class="keywordflow">if</span>(length - pos &lt; <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>)) <span class="keywordflow">goto</span> invalid_data;</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> </div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> memcpy(&amp;copy[e].entry, data + pos, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>));</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> pos += <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>);</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span><span class="preprocessor">#define COPY_STRING_FIELD(field) \</span></div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span><span class="preprocessor"> do { \</span></div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span><span class="preprocessor"> const size_t field##_length = copy[e].entry.field##Length; \</span></div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span><span class="preprocessor"> if(field##_length &gt; 0) \</span></div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span><span class="preprocessor"> { \</span></div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span><span class="preprocessor"> if(field##_length &gt; length - pos) goto invalid_data; \</span></div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span><span class="preprocessor"> </span><span class="comment">/* Allocate only field##_length bytes, since input is NUL-terminated */</span><span class="preprocessor"> \</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span><span class="preprocessor"> copy[e].field = (uint8_t *)calloc(1, field##_length); \</span></div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span><span class="preprocessor"> if(copy[e].field == NULL) goto free_copy_and_error; \</span></div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span><span class="preprocessor"> memcpy(copy[e].field, data + pos, field##_length); \</span></div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span><span class="preprocessor"> </span><span class="comment">/* Ensure NUL-termination in case input is malformed */</span><span class="preprocessor"> \</span></div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span><span class="preprocessor"> copy[e].field[field##_length - 1] = &#39;\0&#39;; \</span></div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span><span class="preprocessor"> pos += field##_length; \</span></div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span><span class="preprocessor"> } \</span></div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span><span class="preprocessor"> } while(0)</span></div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> </div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> <span class="keywordflow">for</span>(uint32_t e = 0; e &lt; header.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>; e++)</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> {</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> <span class="keywordflow">if</span>(length - pos &lt; <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>)) <span class="keywordflow">goto</span> invalid_data;</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> </div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(manufacturer);</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(model);</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(revision);</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(firmware);</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(serial);</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(softwareName);</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(softwareVersion);</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(softwareOperatingSystem);</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> </div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> <span class="keyword">const</span> uint32_t extent_count = copy[e].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a558ff77451f13188e00f5b8da4c595ad">extents</a>;</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> <span class="keywordflow">if</span>(extent_count &gt; 0)</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> {</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> extent_bytes = (size_t)extent_count * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a>);</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> <span class="keywordflow">if</span>(extent_bytes / <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a>) != extent_count || extent_bytes &gt; length - pos) <span class="keywordflow">goto</span> invalid_data;</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> </div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> copy[e].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a34453672c41a27c7d1b9a5df28f7df1a">extents</a> = (<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a> *)malloc(extent_bytes);</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> <span class="keywordflow">if</span>(copy[e].extents == NULL) <span class="keywordflow">goto</span> free_copy_and_error;</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> memcpy(&amp;copy[e].entry, data + pos, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>));</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> pos += <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>);</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> </div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(manufacturer);</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(model);</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(revision);</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(firmware);</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(serial);</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(softwareName);</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(softwareVersion);</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> <a class="code hl_define" href="dump_8c.html#a6b41f4a00a255e6704583614ef33571f">COPY_STRING_FIELD</a>(softwareOperatingSystem);</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> </div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> <span class="keyword">const</span> uint32_t extent_count = copy[e].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a558ff77451f13188e00f5b8da4c595ad">extents</a>;</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> <span class="keywordflow">if</span>(extent_count &gt; 0)</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> {</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> extent_bytes = (size_t)extent_count * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a>);</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> <span class="keywordflow">if</span>(extent_bytes / <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a>) != extent_count || extent_bytes &gt; length - pos) <span class="keywordflow">goto</span> invalid_data;</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> </div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> memcpy(copy[e].extents, data + pos, extent_bytes);</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> pos += extent_bytes;</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> copy[e].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a34453672c41a27c7d1b9a5df28f7df1a">extents</a> = (<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a> *)malloc(extent_bytes);</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> <span class="keywordflow">if</span>(copy[e].extents == NULL) <span class="keywordflow">goto</span> free_copy_and_error;</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> </div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> qsort(copy[e].extents, extent_count, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a>), <a class="code hl_function" href="internal_8h.html#ac93ebc6d918745be56b680e19bf7e8d5">compare_extents</a>);</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Sorted %u extents for entry %u&quot;</span>, extent_count, e);</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> }</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> }</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> </div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span><span class="preprocessor">#undef COPY_STRING_FIELD</span></div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> </div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> <span class="keywordflow">if</span>(pos != length)</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> {</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Dump hardware block contains trailing data&quot;</span>);</div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> <span class="keywordflow">goto</span> invalid_data;</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> }</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> </div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> <a class="code hl_function" href="dump_8c.html#ab98a236ef7ac4de15fb37a2e3c3ce633">free_dump_hardware_entries</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>);</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a> = copy;</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a> = header;</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> </div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_set_dumphw() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> memcpy(copy[e].extents, data + pos, extent_bytes);</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> pos += extent_bytes;</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> </div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> qsort(copy[e].extents, extent_count, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a>), <a class="code hl_function" href="internal_8h.html#ac93ebc6d918745be56b680e19bf7e8d5">compare_extents</a>);</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Sorted %u extents for entry %u&quot;</span>, extent_count, e);</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> }</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> }</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> </div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span><span class="preprocessor">#undef COPY_STRING_FIELD</span></div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> </div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> <span class="keywordflow">if</span>(pos != length)</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> {</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Dump hardware block contains trailing data&quot;</span>);</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> <span class="keywordflow">goto</span> invalid_data;</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> }</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> </div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> <a class="code hl_function" href="dump_8c.html#ab98a236ef7ac4de15fb37a2e3c3ce633">free_dump_hardware_entries</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>);</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a> = copy;</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a> = header;</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> </div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span>invalid_data:</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Dump hardware block truncated or malformed&quot;</span>);</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> <a class="code hl_function" href="dump_8c.html#ab98a236ef7ac4de15fb37a2e3c3ce633">free_dump_hardware_entries</a>(copy, header.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>);</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_set_dumphw() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> </div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span>free_copy_and_error:</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> <a class="code hl_function" href="dump_8c.html#ab98a236ef7ac4de15fb37a2e3c3ce633">free_dump_hardware_entries</a>(copy, header.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>);</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_set_dumphw() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span>}</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_set_dumphw() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> </div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span>invalid_data:</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Dump hardware block truncated or malformed&quot;</span>);</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> <a class="code hl_function" href="dump_8c.html#ab98a236ef7ac4de15fb37a2e3c3ce633">free_dump_hardware_entries</a>(copy, header.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>);</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_set_dumphw() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> </div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span>free_copy_and_error:</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> <a class="code hl_function" href="dump_8c.html#ab98a236ef7ac4de15fb37a2e3c3ce633">free_dump_hardware_entries</a>(copy, header.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>);</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_set_dumphw() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span>}</div>
</div>
<div class="ttc" id="aaaruformat_8h_html"><div class="ttname"><a href="aaruformat_8h.html">aaruformat.h</a></div></div>
<div class="ttc" id="aconsts_8h_html_a3c3ba66fe2b547655c9e4b16a1ba519a"><div class="ttname"><a href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a></div><div class="ttdeci">#define AARU_MAGIC</div><div class="ttdoc">Magic identifier for AaruFormat container (ASCII &quot;AARUFRMT&quot;).</div><div class="ttdef"><b>Definition</b> <a href="consts_8h_source.html#l00064">consts.h:64</a></div></div>
@@ -515,18 +518,18 @@ $(function(){initNavTree('dump_8c_source.html','',''); });
<div class="ttc" id="alog_8h_html"><div class="ttname"><a href="log_8h.html">log.h</a></div></div>
<div class="ttc" id="alog_8h_html_a053d6037d543b84ce59308ce71d15cd1"><div class="ttname"><a href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a></div><div class="ttdeci">#define FATAL(fmt,...)</div><div class="ttdef"><b>Definition</b> <a href="log_8h_source.html#l00040">log.h:40</a></div></div>
<div class="ttc" id="alog_8h_html_a21cc0459b78d5f2d7bd737e5aae1278a"><div class="ttname"><a href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a></div><div class="ttdeci">#define TRACE(fmt,...)</div><div class="ttdef"><b>Definition</b> <a href="log_8h_source.html#l00025">log.h:25</a></div></div>
<div class="ttc" id="astructDumpExtent_html"><div class="ttname"><a href="structDumpExtent.html">DumpExtent</a></div><div class="ttdoc">Inclusive [start,end] logical sector range contributed by a single hardware environment.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00332">context.h:333</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html">DumpHardwareEntriesWithData</a></div><div class="ttdoc">In-memory representation of a dump hardware entry plus decoded variable-length fields &amp; extents.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00313">context.h:314</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a04e71aaa515a5a88171f5730e371abbf"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a04e71aaa515a5a88171f5730e371abbf">DumpHardwareEntriesWithData::firmware</a></div><div class="ttdeci">uint8_t * firmware</div><div class="ttdoc">Firmware version string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00320">context.h:320</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a05cc1da940a0009621038a0327719a91"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a05cc1da940a0009621038a0327719a91">DumpHardwareEntriesWithData::revision</a></div><div class="ttdeci">uint8_t * revision</div><div class="ttdoc">Hardware revision string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00319">context.h:319</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a160651cc2a5247b99c9ebe38511cc475"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a160651cc2a5247b99c9ebe38511cc475">DumpHardwareEntriesWithData::model</a></div><div class="ttdeci">uint8_t * model</div><div class="ttdoc">Model string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00318">context.h:318</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a31b56a2fa1f210aaa023eb031572e70b"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a31b56a2fa1f210aaa023eb031572e70b">DumpHardwareEntriesWithData::softwareName</a></div><div class="ttdeci">uint8_t * softwareName</div><div class="ttdoc">Dump software name or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00322">context.h:322</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a34453672c41a27c7d1b9a5df28f7df1a"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a34453672c41a27c7d1b9a5df28f7df1a">DumpHardwareEntriesWithData::extents</a></div><div class="ttdeci">struct DumpExtent * extents</div><div class="ttdoc">Array of extents (entry.extents elements) or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00316">context.h:316</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a4dbc57a5f46892c5e0cde65c55c11e33"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a4dbc57a5f46892c5e0cde65c55c11e33">DumpHardwareEntriesWithData::manufacturer</a></div><div class="ttdeci">uint8_t * manufacturer</div><div class="ttdoc">Manufacturer string (UTF-8) or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00317">context.h:317</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a5766ab6474f43fac96fb0342136766cc"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a5766ab6474f43fac96fb0342136766cc">DumpHardwareEntriesWithData::softwareVersion</a></div><div class="ttdeci">uint8_t * softwareVersion</div><div class="ttdoc">Dump software version or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00323">context.h:323</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a6d328a63bbde6fc49d5a507a22801107"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a6d328a63bbde6fc49d5a507a22801107">DumpHardwareEntriesWithData::serial</a></div><div class="ttdeci">uint8_t * serial</div><div class="ttdoc">Serial number string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00321">context.h:321</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a9b5f7b438c99ede6988179b7b89915df"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">DumpHardwareEntriesWithData::entry</a></div><div class="ttdeci">DumpHardwareEntry entry</div><div class="ttdoc">Fixed-size header with lengths &amp; counts.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00315">context.h:315</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_acfd385853ac00bbdbd5ef603aebfb44d"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#acfd385853ac00bbdbd5ef603aebfb44d">DumpHardwareEntriesWithData::softwareOperatingSystem</a></div><div class="ttdeci">uint8_t * softwareOperatingSystem</div><div class="ttdoc">Host operating system string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00324">context.h:324</a></div></div>
<div class="ttc" id="astructDumpExtent_html"><div class="ttname"><a href="structDumpExtent.html">DumpExtent</a></div><div class="ttdoc">Inclusive [start,end] logical sector range contributed by a single hardware environment.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00333">context.h:334</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html">DumpHardwareEntriesWithData</a></div><div class="ttdoc">In-memory representation of a dump hardware entry plus decoded variable-length fields &amp; extents.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00314">context.h:315</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a04e71aaa515a5a88171f5730e371abbf"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a04e71aaa515a5a88171f5730e371abbf">DumpHardwareEntriesWithData::firmware</a></div><div class="ttdeci">uint8_t * firmware</div><div class="ttdoc">Firmware version string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00321">context.h:321</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a05cc1da940a0009621038a0327719a91"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a05cc1da940a0009621038a0327719a91">DumpHardwareEntriesWithData::revision</a></div><div class="ttdeci">uint8_t * revision</div><div class="ttdoc">Hardware revision string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00320">context.h:320</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a160651cc2a5247b99c9ebe38511cc475"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a160651cc2a5247b99c9ebe38511cc475">DumpHardwareEntriesWithData::model</a></div><div class="ttdeci">uint8_t * model</div><div class="ttdoc">Model string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00319">context.h:319</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a31b56a2fa1f210aaa023eb031572e70b"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a31b56a2fa1f210aaa023eb031572e70b">DumpHardwareEntriesWithData::softwareName</a></div><div class="ttdeci">uint8_t * softwareName</div><div class="ttdoc">Dump software name or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00323">context.h:323</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a34453672c41a27c7d1b9a5df28f7df1a"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a34453672c41a27c7d1b9a5df28f7df1a">DumpHardwareEntriesWithData::extents</a></div><div class="ttdeci">struct DumpExtent * extents</div><div class="ttdoc">Array of extents (entry.extents elements) or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00317">context.h:317</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a4dbc57a5f46892c5e0cde65c55c11e33"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a4dbc57a5f46892c5e0cde65c55c11e33">DumpHardwareEntriesWithData::manufacturer</a></div><div class="ttdeci">uint8_t * manufacturer</div><div class="ttdoc">Manufacturer string (UTF-8) or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00318">context.h:318</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a5766ab6474f43fac96fb0342136766cc"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a5766ab6474f43fac96fb0342136766cc">DumpHardwareEntriesWithData::softwareVersion</a></div><div class="ttdeci">uint8_t * softwareVersion</div><div class="ttdoc">Dump software version or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00324">context.h:324</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a6d328a63bbde6fc49d5a507a22801107"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a6d328a63bbde6fc49d5a507a22801107">DumpHardwareEntriesWithData::serial</a></div><div class="ttdeci">uint8_t * serial</div><div class="ttdoc">Serial number string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00322">context.h:322</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a9b5f7b438c99ede6988179b7b89915df"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">DumpHardwareEntriesWithData::entry</a></div><div class="ttdeci">DumpHardwareEntry entry</div><div class="ttdoc">Fixed-size header with lengths &amp; counts.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00316">context.h:316</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_acfd385853ac00bbdbd5ef603aebfb44d"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#acfd385853ac00bbdbd5ef603aebfb44d">DumpHardwareEntriesWithData::softwareOperatingSystem</a></div><div class="ttdeci">uint8_t * softwareOperatingSystem</div><div class="ttdoc">Host operating system string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00325">context.h:325</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html"><div class="ttname"><a href="structDumpHardwareEntry.html">DumpHardwareEntry</a></div><div class="ttdoc">Per-environment length table describing subsequent UTF-8 strings and optional extent array.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00112">dump.h:113</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_a20025e2e89599dd60a83ca623fc9a200"><div class="ttname"><a href="structDumpHardwareEntry.html#a20025e2e89599dd60a83ca623fc9a200">DumpHardwareEntry::softwareNameLength</a></div><div class="ttdeci">uint32_t softwareNameLength</div><div class="ttdoc">Length in bytes of dumping software name string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00119">dump.h:119</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_a38a2c1b15dc4cabc02b4124b3a52c8db"><div class="ttname"><a href="structDumpHardwareEntry.html#a38a2c1b15dc4cabc02b4124b3a52c8db">DumpHardwareEntry::manufacturerLength</a></div><div class="ttdeci">uint32_t manufacturerLength</div><div class="ttdoc">Length in bytes of manufacturer UTF-8 string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00114">dump.h:114</a></div></div>