aboutsummaryrefslogtreecommitdiff
path: root/coverage-report/core/mem_region.c.gcov.html
diff options
context:
space:
mode:
Diffstat (limited to 'coverage-report/core/mem_region.c.gcov.html')
-rw-r--r--coverage-report/core/mem_region.c.gcov.html248
1 files changed, 124 insertions, 124 deletions
diff --git a/coverage-report/core/mem_region.c.gcov.html b/coverage-report/core/mem_region.c.gcov.html
index 10080a1..3a39043 100644
--- a/coverage-report/core/mem_region.c.gcov.html
+++ b/coverage-report/core/mem_region.c.gcov.html
@@ -37,7 +37,7 @@
</tr>
<tr>
<td class="headerItem">Date:</td>
- <td class="headerValue">2022-05-24 17:20:14</td>
+ <td class="headerValue">2022-06-13 14:57:12</td>
<td></td>
<td class="headerItem">Functions:</td>
<td class="headerCovTableEntry">39</td>
@@ -189,41 +189,41 @@
<a name="118"><span class="lineNum"> 118 </span> : : #define ALLOC_MIN_LONGS (sizeof(struct free_hdr) / sizeof(long) + 1)</a>
<a name="119"><span class="lineNum"> 119 </span> : : </a>
<a name="120"><span class="lineNum"> 120 </span> : : /* Avoid ugly casts. */</a>
-<a name="121"><span class="lineNum"> 121 </span> :<span class="lineCov"> 448510 : static void *region_start(const struct mem_region *region)</span></a>
+<a name="121"><span class="lineNum"> 121 </span> :<span class="lineCov"> 448525 : static void *region_start(const struct mem_region *region)</span></a>
<a name="122"><span class="lineNum"> 122 </span> : : {</a>
-<a name="123"><span class="lineNum"> 123 </span> :<span class="lineCov"> 448510 : return (void *)(unsigned long)region-&gt;start;</span></a>
+<a name="123"><span class="lineNum"> 123 </span> :<span class="lineCov"> 448525 : return (void *)(unsigned long)region-&gt;start;</span></a>
<a name="124"><span class="lineNum"> 124 </span> : : }</a>
<a name="125"><span class="lineNum"> 125 </span> : : </a>
<a name="126"><span class="lineNum"> 126 </span> : : /* Each free block has a tailer, so we can walk backwards. */</a>
-<a name="127"><span class="lineNum"> 127 </span> :<span class="lineCov"> 30211 : static unsigned long *tailer(struct free_hdr *f)</span></a>
+<a name="127"><span class="lineNum"> 127 </span> :<span class="lineCov"> 30217 : static unsigned long *tailer(struct free_hdr *f)</span></a>
<a name="128"><span class="lineNum"> 128 </span> : : {</a>
-<a name="129"><span class="lineNum"> 129 </span> :<span class="lineCov"> 30211 : return (unsigned long *)f + f-&gt;hdr.num_longs - 1;</span></a>
+<a name="129"><span class="lineNum"> 129 </span> :<span class="lineCov"> 30217 : return (unsigned long *)f + f-&gt;hdr.num_longs - 1;</span></a>
<a name="130"><span class="lineNum"> 130 </span> : : }</a>
<a name="131"><span class="lineNum"> 131 </span> : : </a>
<a name="132"><span class="lineNum"> 132 </span> : : /* This walks forward to the next hdr (or NULL if at the end). */</a>
-<a name="133"><span class="lineNum"> 133 </span> :<span class="lineCov"> 308427 : static struct alloc_hdr *next_hdr(const struct mem_region *region,</span></a>
+<a name="133"><span class="lineNum"> 133 </span> :<span class="lineCov"> 308438 : static struct alloc_hdr *next_hdr(const struct mem_region *region,</span></a>
<a name="134"><span class="lineNum"> 134 </span> : : const struct alloc_hdr *hdr)</a>
<a name="135"><span class="lineNum"> 135 </span> : : {</a>
<a name="136"><span class="lineNum"> 136 </span> : : void *next;</a>
<a name="137"><span class="lineNum"> 137 </span> : : </a>
-<a name="138"><span class="lineNum"> 138 </span> :<span class="lineCov"> 308427 : next = ((unsigned long *)hdr + hdr-&gt;num_longs);</span></a>
-<a name="139"><span class="lineNum"> 139 </span> :<span class="lineCov"> 308427 : if (next &gt;= region_start(region) + region-&gt;len)</span></a>
-<a name="140"><span class="lineNum"> 140 </span> :<span class="lineCov"> 157929 : next = NULL;</span></a>
-<a name="141"><span class="lineNum"> 141 </span> :<span class="lineCov"> 308427 : return next;</span></a>
+<a name="138"><span class="lineNum"> 138 </span> :<span class="lineCov"> 308438 : next = ((unsigned long *)hdr + hdr-&gt;num_longs);</span></a>
+<a name="139"><span class="lineNum"> 139 </span> :<span class="lineCov"> 308438 : if (next &gt;= region_start(region) + region-&gt;len)</span></a>
+<a name="140"><span class="lineNum"> 140 </span> :<span class="lineCov"> 157934 : next = NULL;</span></a>
+<a name="141"><span class="lineNum"> 141 </span> :<span class="lineCov"> 308438 : return next;</span></a>
<a name="142"><span class="lineNum"> 142 </span> : : }</a>
<a name="143"><span class="lineNum"> 143 </span> : : </a>
<a name="144"><span class="lineNum"> 144 </span> : : #if POISON_MEM_REGION == 1</a>
-<a name="145"><span class="lineNum"> 145 </span> :<span class="lineCov"> 1671 : static void mem_poison(struct free_hdr *f)</span></a>
+<a name="145"><span class="lineNum"> 145 </span> :<span class="lineCov"> 1672 : static void mem_poison(struct free_hdr *f)</span></a>
<a name="146"><span class="lineNum"> 146 </span> : : {</a>
-<a name="147"><span class="lineNum"> 147 </span> :<span class="lineCov"> 1671 : size_t poison_size = (void*)tailer(f) - (void*)(f+1);</span></a>
+<a name="147"><span class="lineNum"> 147 </span> :<span class="lineCov"> 1672 : size_t poison_size = (void*)tailer(f) - (void*)(f+1);</span></a>
<a name="148"><span class="lineNum"> 148 </span> : : </a>
<a name="149"><span class="lineNum"> 149 </span> : : /* We only poison up to a limit, as otherwise boot is</a>
<a name="150"><span class="lineNum"> 150 </span> : : * kinda slow */</a>
-<a name="151"><span class="lineNum"> 151 </span> :<span class="lineCov"> 1671 : if (poison_size &gt; POISON_MEM_REGION_LIMIT)</span></a>
+<a name="151"><span class="lineNum"> 151 </span> :<span class="lineCov"> 1672 : if (poison_size &gt; POISON_MEM_REGION_LIMIT)</span></a>
<a name="152"><span class="lineNum"> 152 </span> :<span class="lineNoCov"> 0 : poison_size = POISON_MEM_REGION_LIMIT;</span></a>
<a name="153"><span class="lineNum"> 153 </span> : : </a>
-<a name="154"><span class="lineNum"> 154 </span> :<span class="lineCov"> 1671 : memset(f+1, POISON_MEM_REGION_WITH, poison_size);</span></a>
-<a name="155"><span class="lineNum"> 155 </span> :<span class="lineCov"> 1671 : }</span></a>
+<a name="154"><span class="lineNum"> 154 </span> :<span class="lineCov"> 1672 : memset(f+1, POISON_MEM_REGION_WITH, poison_size);</span></a>
+<a name="155"><span class="lineNum"> 155 </span> :<span class="lineCov"> 1672 : }</span></a>
<a name="156"><span class="lineNum"> 156 </span> : : #endif</a>
<a name="157"><span class="lineNum"> 157 </span> : : </a>
<a name="158"><span class="lineNum"> 158 </span> : : /* Creates free block covering entire region. */</a>
@@ -243,94 +243,94 @@
<a name="172"><span class="lineNum"> 172 </span> : : #endif</a>
<a name="173"><span class="lineNum"> 173 </span> :<span class="lineCov"> 8 : }</span></a>
<a name="174"><span class="lineNum"> 174 </span> : : </a>
-<a name="175"><span class="lineNum"> 175 </span> :<span class="lineCov"> 15889 : static void make_free(struct mem_region *region, struct free_hdr *f,</span></a>
+<a name="175"><span class="lineNum"> 175 </span> :<span class="lineCov"> 15893 : static void make_free(struct mem_region *region, struct free_hdr *f,</span></a>
<a name="176"><span class="lineNum"> 176 </span> : : const char *location, bool skip_poison)</a>
<a name="177"><span class="lineNum"> 177 </span> : : {</a>
<a name="178"><span class="lineNum"> 178 </span> : : struct alloc_hdr *next;</a>
<a name="179"><span class="lineNum"> 179 </span> : : </a>
<a name="180"><span class="lineNum"> 180 </span> : : #if POISON_MEM_REGION == 1</a>
-<a name="181"><span class="lineNum"> 181 </span> :<span class="lineCov"> 15889 : if (!skip_poison)</span></a>
-<a name="182"><span class="lineNum"> 182 </span> :<span class="lineCov"> 1663 : mem_poison(f);</span></a>
+<a name="181"><span class="lineNum"> 181 </span> :<span class="lineCov"> 15893 : if (!skip_poison)</span></a>
+<a name="182"><span class="lineNum"> 182 </span> :<span class="lineCov"> 1664 : mem_poison(f);</span></a>
<a name="183"><span class="lineNum"> 183 </span> : : #else</a>
<a name="184"><span class="lineNum"> 184 </span> : : (void)skip_poison;</a>
<a name="185"><span class="lineNum"> 185 </span> : : #endif</a>
<a name="186"><span class="lineNum"> 186 </span> : : </a>
-<a name="187"><span class="lineNum"> 187 </span> :<span class="lineCov"> 15889 : if (f-&gt;hdr.prev_free) {</span></a>
+<a name="187"><span class="lineNum"> 187 </span> :<span class="lineCov"> 15893 : if (f-&gt;hdr.prev_free) {</span></a>
<a name="188"><span class="lineNum"> 188 </span> : : struct free_hdr *prev;</a>
-<a name="189"><span class="lineNum"> 189 </span> :<span class="lineCov"> 1643 : unsigned long *prev_tailer = (unsigned long *)f - 1;</span></a>
+<a name="189"><span class="lineNum"> 189 </span> :<span class="lineCov"> 1645 : unsigned long *prev_tailer = (unsigned long *)f - 1;</span></a>
<a name="190"><span class="lineNum"> 190 </span> : : </a>
-<a name="191"><span class="lineNum"> 191 </span> :<span class="lineCov"> 1643 : assert(*prev_tailer);</span></a>
-<a name="192"><span class="lineNum"> 192 </span> :<span class="lineCov"> 1643 : prev = (void *)((unsigned long *)f - *prev_tailer);</span></a>
-<a name="193"><span class="lineNum"> 193 </span> :<span class="lineCov"> 1643 : assert(prev-&gt;hdr.free);</span></a>
-<a name="194"><span class="lineNum"> 194 </span> :<span class="lineCov"> 1643 : assert(!prev-&gt;hdr.prev_free);</span></a>
+<a name="191"><span class="lineNum"> 191 </span> :<span class="lineCov"> 1645 : assert(*prev_tailer);</span></a>
+<a name="192"><span class="lineNum"> 192 </span> :<span class="lineCov"> 1645 : prev = (void *)((unsigned long *)f - *prev_tailer);</span></a>
+<a name="193"><span class="lineNum"> 193 </span> :<span class="lineCov"> 1645 : assert(prev-&gt;hdr.free);</span></a>
+<a name="194"><span class="lineNum"> 194 </span> :<span class="lineCov"> 1645 : assert(!prev-&gt;hdr.prev_free);</span></a>
<a name="195"><span class="lineNum"> 195 </span> : : </a>
<a name="196"><span class="lineNum"> 196 </span> : : /* Expand to cover the one we just freed. */</a>
-<a name="197"><span class="lineNum"> 197 </span> :<span class="lineCov"> 1643 : prev-&gt;hdr.num_longs += f-&gt;hdr.num_longs;</span></a>
-<a name="198"><span class="lineNum"> 198 </span> :<span class="lineCov"> 1643 : f = prev;</span></a>
+<a name="197"><span class="lineNum"> 197 </span> :<span class="lineCov"> 1645 : prev-&gt;hdr.num_longs += f-&gt;hdr.num_longs;</span></a>
+<a name="198"><span class="lineNum"> 198 </span> :<span class="lineCov"> 1645 : f = prev;</span></a>
<a name="199"><span class="lineNum"> 199 </span> : : } else {</a>
-<a name="200"><span class="lineNum"> 200 </span> :<span class="lineCov"> 14246 : f-&gt;hdr.free = true;</span></a>
-<a name="201"><span class="lineNum"> 201 </span> :<span class="lineCov"> 14246 : f-&gt;hdr.location = location;</span></a>
-<a name="202"><span class="lineNum"> 202 </span> :<span class="lineCov"> 14246 : list_add(&amp;region-&gt;free_list, &amp;f-&gt;list);</span></a>
+<a name="200"><span class="lineNum"> 200 </span> :<span class="lineCov"> 14248 : f-&gt;hdr.free = true;</span></a>
+<a name="201"><span class="lineNum"> 201 </span> :<span class="lineCov"> 14248 : f-&gt;hdr.location = location;</span></a>
+<a name="202"><span class="lineNum"> 202 </span> :<span class="lineCov"> 14248 : list_add(&amp;region-&gt;free_list, &amp;f-&gt;list);</span></a>
<a name="203"><span class="lineNum"> 203 </span> : : }</a>
<a name="204"><span class="lineNum"> 204 </span> : : </a>
<a name="205"><span class="lineNum"> 205 </span> : : /* Fix up tailer. */</a>
-<a name="206"><span class="lineNum"> 206 </span> :<span class="lineCov"> 15889 : *tailer(f) = f-&gt;hdr.num_longs;</span></a>
+<a name="206"><span class="lineNum"> 206 </span> :<span class="lineCov"> 15893 : *tailer(f) = f-&gt;hdr.num_longs;</span></a>
<a name="207"><span class="lineNum"> 207 </span> : : </a>
<a name="208"><span class="lineNum"> 208 </span> : : /* If next is free, coalesce it */</a>
-<a name="209"><span class="lineNum"> 209 </span> :<span class="lineCov"> 15889 : next = next_hdr(region, &amp;f-&gt;hdr);</span></a>
-<a name="210"><span class="lineNum"> 210 </span> :<span class="lineCov"> 15889 : if (next) {</span></a>
-<a name="211"><span class="lineNum"> 211 </span> :<span class="lineCov"> 1782 : next-&gt;prev_free = true;</span></a>
-<a name="212"><span class="lineNum"> 212 </span> :<span class="lineCov"> 1782 : if (next-&gt;free) {</span></a>
-<a name="213"><span class="lineNum"> 213 </span> :<span class="lineCov"> 1597 : struct free_hdr *next_free = (void *)next;</span></a>
-<a name="214"><span class="lineNum"> 214 </span> :<span class="lineCov"> 1597 : list_del_from(&amp;region-&gt;free_list, &amp;next_free-&gt;list);</span></a>
+<a name="209"><span class="lineNum"> 209 </span> :<span class="lineCov"> 15893 : next = next_hdr(region, &amp;f-&gt;hdr);</span></a>
+<a name="210"><span class="lineNum"> 210 </span> :<span class="lineCov"> 15893 : if (next) {</span></a>
+<a name="211"><span class="lineNum"> 211 </span> :<span class="lineCov"> 1784 : next-&gt;prev_free = true;</span></a>
+<a name="212"><span class="lineNum"> 212 </span> :<span class="lineCov"> 1784 : if (next-&gt;free) {</span></a>
+<a name="213"><span class="lineNum"> 213 </span> :<span class="lineCov"> 1598 : struct free_hdr *next_free = (void *)next;</span></a>
+<a name="214"><span class="lineNum"> 214 </span> :<span class="lineCov"> 1598 : list_del_from(&amp;region-&gt;free_list, &amp;next_free-&gt;list);</span></a>
<a name="215"><span class="lineNum"> 215 </span> : : /* Maximum of one level of recursion */</a>
-<a name="216"><span class="lineNum"> 216 </span> :<span class="lineCov"> 1597 : make_free(region, next_free, location, true);</span></a>
+<a name="216"><span class="lineNum"> 216 </span> :<span class="lineCov"> 1598 : make_free(region, next_free, location, true);</span></a>
<a name="217"><span class="lineNum"> 217 </span> : : }</a>
<a name="218"><span class="lineNum"> 218 </span> : : }</a>
-<a name="219"><span class="lineNum"> 219 </span> :<span class="lineCov"> 15889 : }</span></a>
+<a name="219"><span class="lineNum"> 219 </span> :<span class="lineCov"> 15893 : }</span></a>
<a name="220"><span class="lineNum"> 220 </span> : : </a>
<a name="221"><span class="lineNum"> 221 </span> : : /* Can we fit this many longs with this alignment in this free block? */</a>
-<a name="222"><span class="lineNum"> 222 </span> :<span class="lineCov"> 4470 : static bool fits(struct free_hdr *f, size_t longs, size_t align, size_t *offset)</span></a>
+<a name="222"><span class="lineNum"> 222 </span> :<span class="lineCov"> 4471 : static bool fits(struct free_hdr *f, size_t longs, size_t align, size_t *offset)</span></a>
<a name="223"><span class="lineNum"> 223 </span> : : {</a>
-<a name="224"><span class="lineNum"> 224 </span> :<span class="lineCov"> 4470 : *offset = 0;</span></a>
+<a name="224"><span class="lineNum"> 224 </span> :<span class="lineCov"> 4471 : *offset = 0;</span></a>
<a name="225"><span class="lineNum"> 225 </span> : : </a>
-<a name="226"><span class="lineNum"> 226 </span> :<span class="lineCov"> 19455 : while (f-&gt;hdr.num_longs &gt;= *offset + longs) {</span></a>
+<a name="226"><span class="lineNum"> 226 </span> :<span class="lineCov"> 25677 : while (f-&gt;hdr.num_longs &gt;= *offset + longs) {</span></a>
<a name="227"><span class="lineNum"> 227 </span> : : size_t addr;</a>
<a name="228"><span class="lineNum"> 228 </span> : : </a>
-<a name="229"><span class="lineNum"> 229 </span> :<span class="lineCov"> 19443 : addr = (unsigned long)f</span></a>
-<a name="230"><span class="lineNum"> 230 </span> :<span class="lineCov"> 19443 : + (*offset + ALLOC_HDR_LONGS) * sizeof(long);</span></a>
-<a name="231"><span class="lineNum"> 231 </span> :<span class="lineCov"> 19443 : if ((addr &amp; (align - 1)) == 0)</span></a>
-<a name="232"><span class="lineNum"> 232 </span> :<span class="lineCov"> 4458 : return true;</span></a>
+<a name="229"><span class="lineNum"> 229 </span> :<span class="lineCov"> 25665 : addr = (unsigned long)f</span></a>
+<a name="230"><span class="lineNum"> 230 </span> :<span class="lineCov"> 25665 : + (*offset + ALLOC_HDR_LONGS) * sizeof(long);</span></a>
+<a name="231"><span class="lineNum"> 231 </span> :<span class="lineCov"> 25665 : if ((addr &amp; (align - 1)) == 0)</span></a>
+<a name="232"><span class="lineNum"> 232 </span> :<span class="lineCov"> 4459 : return true;</span></a>
<a name="233"><span class="lineNum"> 233 </span> : : </a>
<a name="234"><span class="lineNum"> 234 </span> : : /* Don't make tiny chunks! */</a>
-<a name="235"><span class="lineNum"> 235 </span> :<span class="lineCov"> 14985 : if (*offset == 0)</span></a>
-<a name="236"><span class="lineNum"> 236 </span> :<span class="lineCov"> 15 : *offset = ALLOC_MIN_LONGS;</span></a>
+<a name="235"><span class="lineNum"> 235 </span> :<span class="lineCov"> 21206 : if (*offset == 0)</span></a>
+<a name="236"><span class="lineNum"> 236 </span> :<span class="lineCov"> 16 : *offset = ALLOC_MIN_LONGS;</span></a>
<a name="237"><span class="lineNum"> 237 </span> : : else</a>
-<a name="238"><span class="lineNum"> 238 </span> :<span class="lineCov"> 14970 : (*offset)++;</span></a>
+<a name="238"><span class="lineNum"> 238 </span> :<span class="lineCov"> 21190 : (*offset)++;</span></a>
<a name="239"><span class="lineNum"> 239 </span> : : }</a>
<a name="240"><span class="lineNum"> 240 </span> :<span class="lineCov"> 12 : return false;</span></a>
<a name="241"><span class="lineNum"> 241 </span> : : }</a>
<a name="242"><span class="lineNum"> 242 </span> : : </a>
-<a name="243"><span class="lineNum"> 243 </span> :<span class="lineCov"> 135503 : static void discard_excess(struct mem_region *region,</span></a>
+<a name="243"><span class="lineNum"> 243 </span> :<span class="lineCov"> 135504 : static void discard_excess(struct mem_region *region,</span></a>
<a name="244"><span class="lineNum"> 244 </span> : : struct alloc_hdr *hdr, size_t alloc_longs,</a>
<a name="245"><span class="lineNum"> 245 </span> : : const char *location, bool skip_poison)</a>
<a name="246"><span class="lineNum"> 246 </span> : : {</a>
<a name="247"><span class="lineNum"> 247 </span> : : /* Do we have excess? */</a>
-<a name="248"><span class="lineNum"> 248 </span> :<span class="lineCov"> 135503 : if (hdr-&gt;num_longs &gt; alloc_longs + ALLOC_MIN_LONGS) {</span></a>
+<a name="248"><span class="lineNum"> 248 </span> :<span class="lineCov"> 135504 : if (hdr-&gt;num_longs &gt; alloc_longs + ALLOC_MIN_LONGS) {</span></a>
<a name="249"><span class="lineNum"> 249 </span> : : struct free_hdr *post;</a>
<a name="250"><span class="lineNum"> 250 </span> : : </a>
<a name="251"><span class="lineNum"> 251 </span> : : /* Set up post block. */</a>
-<a name="252"><span class="lineNum"> 252 </span> :<span class="lineCov"> 13981 : post = (void *)hdr + alloc_longs * sizeof(long);</span></a>
-<a name="253"><span class="lineNum"> 253 </span> :<span class="lineCov"> 13981 : post-&gt;hdr.num_longs = hdr-&gt;num_longs - alloc_longs;</span></a>
-<a name="254"><span class="lineNum"> 254 </span> :<span class="lineCov"> 13981 : post-&gt;hdr.prev_free = false;</span></a>
+<a name="252"><span class="lineNum"> 252 </span> :<span class="lineCov"> 13982 : post = (void *)hdr + alloc_longs * sizeof(long);</span></a>
+<a name="253"><span class="lineNum"> 253 </span> :<span class="lineCov"> 13982 : post-&gt;hdr.num_longs = hdr-&gt;num_longs - alloc_longs;</span></a>
+<a name="254"><span class="lineNum"> 254 </span> :<span class="lineCov"> 13982 : post-&gt;hdr.prev_free = false;</span></a>
<a name="255"><span class="lineNum"> 255 </span> : : </a>
<a name="256"><span class="lineNum"> 256 </span> : : /* Trim our block. */</a>
-<a name="257"><span class="lineNum"> 257 </span> :<span class="lineCov"> 13981 : hdr-&gt;num_longs = alloc_longs;</span></a>
+<a name="257"><span class="lineNum"> 257 </span> :<span class="lineCov"> 13982 : hdr-&gt;num_longs = alloc_longs;</span></a>
<a name="258"><span class="lineNum"> 258 </span> : : </a>
<a name="259"><span class="lineNum"> 259 </span> : : /* This coalesces as required. */</a>
-<a name="260"><span class="lineNum"> 260 </span> :<span class="lineCov"> 13981 : make_free(region, post, location, skip_poison);</span></a>
+<a name="260"><span class="lineNum"> 260 </span> :<span class="lineCov"> 13982 : make_free(region, post, location, skip_poison);</span></a>
<a name="261"><span class="lineNum"> 261 </span> : : }</a>
-<a name="262"><span class="lineNum"> 262 </span> :<span class="lineCov"> 135503 : }</span></a>
+<a name="262"><span class="lineNum"> 262 </span> :<span class="lineCov"> 135504 : }</span></a>
<a name="263"><span class="lineNum"> 263 </span> : : </a>
<a name="264"><span class="lineNum"> 264 </span> :<span class="lineCov"> 6 : static const char *hdr_location(const struct alloc_hdr *hdr)</span></a>
<a name="265"><span class="lineNum"> 265 </span> : : {</a>
@@ -457,7 +457,7 @@
<a name="386"><span class="lineNum"> 386 </span> :<span class="lineCov"> 2 : return total_free;</span></a>
<a name="387"><span class="lineNum"> 387 </span> : : }</a>
<a name="388"><span class="lineNum"> 388 </span> : : </a>
-<a name="389"><span class="lineNum"> 389 </span> :<span class="lineCov"> 4462 : static void *__mem_alloc(struct mem_region *region, size_t size, size_t align,</span></a>
+<a name="389"><span class="lineNum"> 389 </span> :<span class="lineCov"> 4463 : static void *__mem_alloc(struct mem_region *region, size_t size, size_t align,</span></a>
<a name="390"><span class="lineNum"> 390 </span> : : const char *location)</a>
<a name="391"><span class="lineNum"> 391 </span> : : {</a>
<a name="392"><span class="lineNum"> 392 </span> : : size_t alloc_longs, offset;</a>
@@ -465,100 +465,100 @@
<a name="394"><span class="lineNum"> 394 </span> : : struct alloc_hdr *next;</a>
<a name="395"><span class="lineNum"> 395 </span> : : </a>
<a name="396"><span class="lineNum"> 396 </span> : : /* Align must be power of 2. */</a>
-<a name="397"><span class="lineNum"> 397 </span> :<span class="lineCov"> 4462 : assert(!((align - 1) &amp; align));</span></a>
+<a name="397"><span class="lineNum"> 397 </span> :<span class="lineCov"> 4463 : assert(!((align - 1) &amp; align));</span></a>
<a name="398"><span class="lineNum"> 398 </span> : : </a>
<a name="399"><span class="lineNum"> 399 </span> : : /* This should be a constant. */</a>
<a name="400"><span class="lineNum"> 400 </span> :<span class="lineNoCov"> 0 : assert(is_rodata(location));</span></a>
<a name="401"><span class="lineNum"> 401 </span> : : </a>
<a name="402"><span class="lineNum"> 402 </span> : : /* Unallocatable region? */</a>
-<a name="403"><span class="lineNum"> 403 </span> :<span class="lineCov"> 4462 : if (!(region-&gt;type == REGION_SKIBOOT_HEAP ||</span></a>
+<a name="403"><span class="lineNum"> 403 </span> :<span class="lineCov"> 4463 : if (!(region-&gt;type == REGION_SKIBOOT_HEAP ||</span></a>
<a name="404"><span class="lineNum"> 404 </span> :<span class="lineCov"> 1 : region-&gt;type == REGION_MEMORY))</span></a>
<a name="405"><span class="lineNum"> 405 </span> :<span class="lineNoCov"> 0 : return NULL;</span></a>
<a name="406"><span class="lineNum"> 406 </span> : : </a>
<a name="407"><span class="lineNum"> 407 </span> : : /* First allocation? */</a>
-<a name="408"><span class="lineNum"> 408 </span> :<span class="lineCov"> 4462 : if (region-&gt;free_list.n.next == NULL)</span></a>
+<a name="408"><span class="lineNum"> 408 </span> :<span class="lineCov"> 4463 : if (region-&gt;free_list.n.next == NULL)</span></a>
<a name="409"><span class="lineNum"> 409 </span> :<span class="lineCov"> 8 : init_allocatable_region(region);</span></a>
<a name="410"><span class="lineNum"> 410 </span> : : </a>
<a name="411"><span class="lineNum"> 411 </span> : : /* Don't do screwy sizes. */</a>
-<a name="412"><span class="lineNum"> 412 </span> :<span class="lineCov"> 4462 : if (size &gt; region-&gt;len)</span></a>
+<a name="412"><span class="lineNum"> 412 </span> :<span class="lineCov"> 4463 : if (size &gt; region-&gt;len)</span></a>
<a name="413"><span class="lineNum"> 413 </span> :<span class="lineCov"> 2 : return NULL;</span></a>
<a name="414"><span class="lineNum"> 414 </span> : : </a>
<a name="415"><span class="lineNum"> 415 </span> : : /* Don't do tiny alignments, we deal in long increments. */</a>
-<a name="416"><span class="lineNum"> 416 </span> :<span class="lineCov"> 4460 : if (align &lt; sizeof(long))</span></a>
+<a name="416"><span class="lineNum"> 416 </span> :<span class="lineCov"> 4461 : if (align &lt; sizeof(long))</span></a>
<a name="417"><span class="lineNum"> 417 </span> :<span class="lineCov"> 128 : align = sizeof(long);</span></a>
<a name="418"><span class="lineNum"> 418 </span> : : </a>
<a name="419"><span class="lineNum"> 419 </span> : : /* Convert size to number of longs, too. */</a>
-<a name="420"><span class="lineNum"> 420 </span> :<span class="lineCov"> 4460 : alloc_longs = (size + sizeof(long)-1) / sizeof(long) + ALLOC_HDR_LONGS;</span></a>
+<a name="420"><span class="lineNum"> 420 </span> :<span class="lineCov"> 4461 : alloc_longs = (size + sizeof(long)-1) / sizeof(long) + ALLOC_HDR_LONGS;</span></a>
<a name="421"><span class="lineNum"> 421 </span> : : </a>
<a name="422"><span class="lineNum"> 422 </span> : : /* Can't be too small for when we free it, either. */</a>
-<a name="423"><span class="lineNum"> 423 </span> :<span class="lineCov"> 4460 : if (alloc_longs &lt; ALLOC_MIN_LONGS)</span></a>
-<a name="424"><span class="lineNum"> 424 </span> :<span class="lineCov"> 175 : alloc_longs = ALLOC_MIN_LONGS;</span></a>
+<a name="423"><span class="lineNum"> 423 </span> :<span class="lineCov"> 4461 : if (alloc_longs &lt; ALLOC_MIN_LONGS)</span></a>
+<a name="424"><span class="lineNum"> 424 </span> :<span class="lineCov"> 176 : alloc_longs = ALLOC_MIN_LONGS;</span></a>
<a name="425"><span class="lineNum"> 425 </span> : : </a>
<a name="426"><span class="lineNum"> 426 </span> : : /* Walk free list. */</a>
-<a name="427"><span class="lineNum"> 427 </span> :<span class="lineCov"> 4472 : list_for_each(&amp;region-&gt;free_list, f, list) {</span></a>
+<a name="427"><span class="lineNum"> 427 </span> :<span class="lineCov"> 4473 : list_for_each(&amp;region-&gt;free_list, f, list) {</span></a>
<a name="428"><span class="lineNum"> 428 </span> : : /* We may have to skip some to meet alignment. */</a>
-<a name="429"><span class="lineNum"> 429 </span> :<span class="lineCov"> 4470 : if (fits(f, alloc_longs, align, &amp;offset))</span></a>
-<a name="430"><span class="lineNum"> 430 </span> :<span class="lineCov"> 4458 : goto found;</span></a>
+<a name="429"><span class="lineNum"> 429 </span> :<span class="lineCov"> 4471 : if (fits(f, alloc_longs, align, &amp;offset))</span></a>
+<a name="430"><span class="lineNum"> 430 </span> :<span class="lineCov"> 4459 : goto found;</span></a>
<a name="431"><span class="lineNum"> 431 </span> : : }</a>
<a name="432"><span class="lineNum"> 432 </span> : : </a>
<a name="433"><span class="lineNum"> 433 </span> :<span class="lineCov"> 2 : return NULL;</span></a>
<a name="434"><span class="lineNum"> 434 </span> : : </a>
-<a name="435"><span class="lineNum"> 435 </span> :<span class="lineCov"> 4458 : found:</span></a>
-<a name="436"><span class="lineNum"> 436 </span> :<span class="lineCov"> 4458 : assert(f-&gt;hdr.free);</span></a>
-<a name="437"><span class="lineNum"> 437 </span> :<span class="lineCov"> 4458 : assert(!f-&gt;hdr.prev_free);</span></a>
+<a name="435"><span class="lineNum"> 435 </span> :<span class="lineCov"> 4459 : found:</span></a>
+<a name="436"><span class="lineNum"> 436 </span> :<span class="lineCov"> 4459 : assert(f-&gt;hdr.free);</span></a>
+<a name="437"><span class="lineNum"> 437 </span> :<span class="lineCov"> 4459 : assert(!f-&gt;hdr.prev_free);</span></a>
<a name="438"><span class="lineNum"> 438 </span> : : </a>
<a name="439"><span class="lineNum"> 439 </span> : : /* This block is no longer free. */</a>
-<a name="440"><span class="lineNum"> 440 </span> :<span class="lineCov"> 4458 : list_del_from(&amp;region-&gt;free_list, &amp;f-&gt;list);</span></a>
-<a name="441"><span class="lineNum"> 441 </span> :<span class="lineCov"> 4458 : f-&gt;hdr.free = false;</span></a>
-<a name="442"><span class="lineNum"> 442 </span> :<span class="lineCov"> 4458 : f-&gt;hdr.location = location;</span></a>
+<a name="440"><span class="lineNum"> 440 </span> :<span class="lineCov"> 4459 : list_del_from(&amp;region-&gt;free_list, &amp;f-&gt;list);</span></a>
+<a name="441"><span class="lineNum"> 441 </span> :<span class="lineCov"> 4459 : f-&gt;hdr.free = false;</span></a>
+<a name="442"><span class="lineNum"> 442 </span> :<span class="lineCov"> 4459 : f-&gt;hdr.location = location;</span></a>
<a name="443"><span class="lineNum"> 443 </span> : : </a>
-<a name="444"><span class="lineNum"> 444 </span> :<span class="lineCov"> 4458 : next = next_hdr(region, &amp;f-&gt;hdr);</span></a>
-<a name="445"><span class="lineNum"> 445 </span> :<span class="lineCov"> 4458 : if (next) {</span></a>
+<a name="444"><span class="lineNum"> 444 </span> :<span class="lineCov"> 4459 : next = next_hdr(region, &amp;f-&gt;hdr);</span></a>
+<a name="445"><span class="lineNum"> 445 </span> :<span class="lineCov"> 4459 : if (next) {</span></a>
<a name="446"><span class="lineNum"> 446 </span> :<span class="lineCov"> 65 : assert(next-&gt;prev_free);</span></a>
<a name="447"><span class="lineNum"> 447 </span> :<span class="lineCov"> 65 : next-&gt;prev_free = false;</span></a>
<a name="448"><span class="lineNum"> 448 </span> : : }</a>
<a name="449"><span class="lineNum"> 449 </span> : : </a>
-<a name="450"><span class="lineNum"> 450 </span> :<span class="lineCov"> 4458 : if (offset != 0) {</span></a>
-<a name="451"><span class="lineNum"> 451 </span> :<span class="lineCov"> 14 : struct free_hdr *pre = f;</span></a>
+<a name="450"><span class="lineNum"> 450 </span> :<span class="lineCov"> 4459 : if (offset != 0) {</span></a>
+<a name="451"><span class="lineNum"> 451 </span> :<span class="lineCov"> 15 : struct free_hdr *pre = f;</span></a>
<a name="452"><span class="lineNum"> 452 </span> : : </a>
-<a name="453"><span class="lineNum"> 453 </span> :<span class="lineCov"> 14 : f = (void *)f + offset * sizeof(long);</span></a>
-<a name="454"><span class="lineNum"> 454 </span> :<span class="lineCov"> 14 : assert(f &gt;= pre + 1);</span></a>
+<a name="453"><span class="lineNum"> 453 </span> :<span class="lineCov"> 15 : f = (void *)f + offset * sizeof(long);</span></a>
+<a name="454"><span class="lineNum"> 454 </span> :<span class="lineCov"> 15 : assert(f &gt;= pre + 1);</span></a>
<a name="455"><span class="lineNum"> 455 </span> : : </a>
<a name="456"><span class="lineNum"> 456 </span> : : /* Set up new header. */</a>
-<a name="457"><span class="lineNum"> 457 </span> :<span class="lineCov"> 14 : f-&gt;hdr.num_longs = pre-&gt;hdr.num_longs - offset;</span></a>
+<a name="457"><span class="lineNum"> 457 </span> :<span class="lineCov"> 15 : f-&gt;hdr.num_longs = pre-&gt;hdr.num_longs - offset;</span></a>
<a name="458"><span class="lineNum"> 458 </span> : : /* f-&gt;hdr.prev_free will be set by make_free below. */</a>
-<a name="459"><span class="lineNum"> 459 </span> :<span class="lineCov"> 14 : f-&gt;hdr.free = false;</span></a>
-<a name="460"><span class="lineNum"> 460 </span> :<span class="lineCov"> 14 : f-&gt;hdr.location = location;</span></a>
+<a name="459"><span class="lineNum"> 459 </span> :<span class="lineCov"> 15 : f-&gt;hdr.free = false;</span></a>
+<a name="460"><span class="lineNum"> 460 </span> :<span class="lineCov"> 15 : f-&gt;hdr.location = location;</span></a>
<a name="461"><span class="lineNum"> 461 </span> : : </a>
<a name="462"><span class="lineNum"> 462 </span> : : /* Fix up old header. */</a>
-<a name="463"><span class="lineNum"> 463 </span> :<span class="lineCov"> 14 : pre-&gt;hdr.num_longs = offset;</span></a>
-<a name="464"><span class="lineNum"> 464 </span> :<span class="lineCov"> 14 : pre-&gt;hdr.prev_free = false;</span></a>
+<a name="463"><span class="lineNum"> 463 </span> :<span class="lineCov"> 15 : pre-&gt;hdr.num_longs = offset;</span></a>
+<a name="464"><span class="lineNum"> 464 </span> :<span class="lineCov"> 15 : pre-&gt;hdr.prev_free = false;</span></a>
<a name="465"><span class="lineNum"> 465 </span> : : </a>
<a name="466"><span class="lineNum"> 466 </span> : : /* This coalesces as required. */</a>
-<a name="467"><span class="lineNum"> 467 </span> :<span class="lineCov"> 14 : make_free(region, pre, location, true);</span></a>
+<a name="467"><span class="lineNum"> 467 </span> :<span class="lineCov"> 15 : make_free(region, pre, location, true);</span></a>
<a name="468"><span class="lineNum"> 468 </span> : : }</a>
<a name="469"><span class="lineNum"> 469 </span> : : </a>
<a name="470"><span class="lineNum"> 470 </span> : : /* We might be too long; put the rest back. */</a>
-<a name="471"><span class="lineNum"> 471 </span> :<span class="lineCov"> 4458 : discard_excess(region, &amp;f-&gt;hdr, alloc_longs, location, true);</span></a>
+<a name="471"><span class="lineNum"> 471 </span> :<span class="lineCov"> 4459 : discard_excess(region, &amp;f-&gt;hdr, alloc_longs, location, true);</span></a>
<a name="472"><span class="lineNum"> 472 </span> : : </a>
<a name="473"><span class="lineNum"> 473 </span> : : /* Clear tailer for debugging */</a>
-<a name="474"><span class="lineNum"> 474 </span> :<span class="lineCov"> 4458 : *tailer(f) = 0;</span></a>
+<a name="474"><span class="lineNum"> 474 </span> :<span class="lineCov"> 4459 : *tailer(f) = 0;</span></a>
<a name="475"><span class="lineNum"> 475 </span> : : </a>
<a name="476"><span class="lineNum"> 476 </span> : : /* Their pointer is immediately after header. */</a>
-<a name="477"><span class="lineNum"> 477 </span> :<span class="lineCov"> 4458 : return &amp;f-&gt;hdr + 1;</span></a>
+<a name="477"><span class="lineNum"> 477 </span> :<span class="lineCov"> 4459 : return &amp;f-&gt;hdr + 1;</span></a>
<a name="478"><span class="lineNum"> 478 </span> : : }</a>
<a name="479"><span class="lineNum"> 479 </span> : : </a>
-<a name="480"><span class="lineNum"> 480 </span> :<span class="lineCov"> 4462 : void *mem_alloc(struct mem_region *region, size_t size, size_t align,</span></a>
+<a name="480"><span class="lineNum"> 480 </span> :<span class="lineCov"> 4463 : void *mem_alloc(struct mem_region *region, size_t size, size_t align,</span></a>
<a name="481"><span class="lineNum"> 481 </span> : : const char *location)</a>
<a name="482"><span class="lineNum"> 482 </span> : : {</a>
<a name="483"><span class="lineNum"> 483 </span> : : static bool dumped = false;</a>
<a name="484"><span class="lineNum"> 484 </span> : : void *r;</a>
<a name="485"><span class="lineNum"> 485 </span> : : </a>
-<a name="486"><span class="lineNum"> 486 </span> :<span class="lineCov"> 4462 : assert(lock_held_by_me(&amp;region-&gt;free_list_lock));</span></a>
+<a name="486"><span class="lineNum"> 486 </span> :<span class="lineCov"> 4463 : assert(lock_held_by_me(&amp;region-&gt;free_list_lock));</span></a>
<a name="487"><span class="lineNum"> 487 </span> : : </a>
-<a name="488"><span class="lineNum"> 488 </span> :<span class="lineCov"> 4462 : r = __mem_alloc(region, size, align, location);</span></a>
-<a name="489"><span class="lineNum"> 489 </span> :<span class="lineCov"> 4462 : if (r)</span></a>
-<a name="490"><span class="lineNum"> 490 </span> :<span class="lineCov"> 4458 : return r;</span></a>
+<a name="488"><span class="lineNum"> 488 </span> :<span class="lineCov"> 4463 : r = __mem_alloc(region, size, align, location);</span></a>
+<a name="489"><span class="lineNum"> 489 </span> :<span class="lineCov"> 4463 : if (r)</span></a>
+<a name="490"><span class="lineNum"> 490 </span> :<span class="lineCov"> 4459 : return r;</span></a>
<a name="491"><span class="lineNum"> 491 </span> : : </a>
<a name="492"><span class="lineNum"> 492 </span> :<span class="lineCov"> 4 : prerror(&quot;mem_alloc(0x%lx, 0x%lx, \&quot;%s\&quot;, %s) failed !\n&quot;,</span></a>
<a name="493"><span class="lineNum"> 493 </span> : : size, align, location, region-&gt;name);</a>
@@ -570,30 +570,30 @@
<a name="499"><span class="lineNum"> 499 </span> :<span class="lineCov"> 4 : return NULL;</span></a>
<a name="500"><span class="lineNum"> 500 </span> : : }</a>
<a name="501"><span class="lineNum"> 501 </span> : : </a>
-<a name="502"><span class="lineNum"> 502 </span> :<span class="lineCov"> 298 : void mem_free(struct mem_region *region, void *mem, const char *location)</span></a>
+<a name="502"><span class="lineNum"> 502 </span> :<span class="lineCov"> 299 : void mem_free(struct mem_region *region, void *mem, const char *location)</span></a>
<a name="503"><span class="lineNum"> 503 </span> : : {</a>
<a name="504"><span class="lineNum"> 504 </span> : : struct alloc_hdr *hdr;</a>
<a name="505"><span class="lineNum"> 505 </span> : : </a>
<a name="506"><span class="lineNum"> 506 </span> : : /* This should be a constant. */</a>
<a name="507"><span class="lineNum"> 507 </span> :<span class="lineNoCov"> 0 : assert(is_rodata(location));</span></a>
<a name="508"><span class="lineNum"> 508 </span> : : </a>
-<a name="509"><span class="lineNum"> 509 </span> :<span class="lineCov"> 298 : assert(lock_held_by_me(&amp;region-&gt;free_list_lock));</span></a>
+<a name="509"><span class="lineNum"> 509 </span> :<span class="lineCov"> 299 : assert(lock_held_by_me(&amp;region-&gt;free_list_lock));</span></a>
<a name="510"><span class="lineNum"> 510 </span> : : </a>
<a name="511"><span class="lineNum"> 511 </span> : : /* Freeing NULL is always a noop. */</a>
-<a name="512"><span class="lineNum"> 512 </span> :<span class="lineCov"> 298 : if (!mem)</span></a>
+<a name="512"><span class="lineNum"> 512 </span> :<span class="lineCov"> 299 : if (!mem)</span></a>
<a name="513"><span class="lineNum"> 513 </span> :<span class="lineCov"> 1 : return;</span></a>
<a name="514"><span class="lineNum"> 514 </span> : : </a>
<a name="515"><span class="lineNum"> 515 </span> : : /* Your memory is in the region, right? */</a>
-<a name="516"><span class="lineNum"> 516 </span> :<span class="lineCov"> 297 : assert(mem &gt;= region_start(region) + sizeof(*hdr));</span></a>
-<a name="517"><span class="lineNum"> 517 </span> :<span class="lineCov"> 297 : assert(mem &lt; region_start(region) + region-&gt;len);</span></a>
+<a name="516"><span class="lineNum"> 516 </span> :<span class="lineCov"> 298 : assert(mem &gt;= region_start(region) + sizeof(*hdr));</span></a>
+<a name="517"><span class="lineNum"> 517 </span> :<span class="lineCov"> 298 : assert(mem &lt; region_start(region) + region-&gt;len);</span></a>
<a name="518"><span class="lineNum"> 518 </span> : : </a>
<a name="519"><span class="lineNum"> 519 </span> : : /* Grab header. */</a>
-<a name="520"><span class="lineNum"> 520 </span> :<span class="lineCov"> 297 : hdr = mem - sizeof(*hdr);</span></a>
+<a name="520"><span class="lineNum"> 520 </span> :<span class="lineCov"> 298 : hdr = mem - sizeof(*hdr);</span></a>
<a name="521"><span class="lineNum"> 521 </span> : : </a>
-<a name="522"><span class="lineNum"> 522 </span> :<span class="lineCov"> 297 : if (hdr-&gt;free)</span></a>
+<a name="522"><span class="lineNum"> 522 </span> :<span class="lineCov"> 298 : if (hdr-&gt;free)</span></a>
<a name="523"><span class="lineNum"> 523 </span> :<span class="lineNoCov"> 0 : bad_header(region, hdr, &quot;re-freed&quot;, location);</span></a>
<a name="524"><span class="lineNum"> 524 </span> : : </a>
-<a name="525"><span class="lineNum"> 525 </span> :<span class="lineCov"> 297 : make_free(region, (struct free_hdr *)hdr, location, false);</span></a>
+<a name="525"><span class="lineNum"> 525 </span> :<span class="lineCov"> 298 : make_free(region, (struct free_hdr *)hdr, location, false);</span></a>
<a name="526"><span class="lineNum"> 526 </span> : : }</a>
<a name="527"><span class="lineNum"> 527 </span> : : </a>
<a name="528"><span class="lineNum"> 528 </span> :<span class="lineCov"> 65539 : size_t mem_allocated_size(const void *ptr)</span></a>
@@ -658,49 +658,49 @@
<a name="587"><span class="lineNum"> 587 </span> :<span class="lineCov"> 8185 : return true;</span></a>
<a name="588"><span class="lineNum"> 588 </span> : : }</a>
<a name="589"><span class="lineNum"> 589 </span> : : </a>
-<a name="590"><span class="lineNum"> 590 </span> :<span class="lineCov"> 131262 : bool mem_check(const struct mem_region *region)</span></a>
+<a name="590"><span class="lineNum"> 590 </span> :<span class="lineCov"> 131264 : bool mem_check(const struct mem_region *region)</span></a>
<a name="591"><span class="lineNum"> 591 </span> : : {</a>
-<a name="592"><span class="lineNum"> 592 </span> :<span class="lineCov"> 131262 : size_t frees = 0;</span></a>
-<a name="593"><span class="lineNum"> 593 </span> :<span class="lineCov"> 131262 : struct alloc_hdr *hdr, *prev_free = NULL;</span></a>
+<a name="592"><span class="lineNum"> 592 </span> :<span class="lineCov"> 131264 : size_t frees = 0;</span></a>
+<a name="593"><span class="lineNum"> 593 </span> :<span class="lineCov"> 131264 : struct alloc_hdr *hdr, *prev_free = NULL;</span></a>
<a name="594"><span class="lineNum"> 594 </span> : : struct free_hdr *f;</a>
<a name="595"><span class="lineNum"> 595 </span> : : </a>
<a name="596"><span class="lineNum"> 596 </span> : : /* Check it's sanely aligned. */</a>
-<a name="597"><span class="lineNum"> 597 </span> :<span class="lineCov"> 131262 : if (region-&gt;start % sizeof(long)) {</span></a>
+<a name="597"><span class="lineNum"> 597 </span> :<span class="lineCov"> 131264 : if (region-&gt;start % sizeof(long)) {</span></a>
<a name="598"><span class="lineNum"> 598 </span> :<span class="lineNoCov"> 0 : prerror(&quot;Region '%s' not sanely aligned (%llx)\n&quot;,</span></a>
<a name="599"><span class="lineNum"> 599 </span> : : region-&gt;name, (unsigned long long)region-&gt;start);</a>
<a name="600"><span class="lineNum"> 600 </span> :<span class="lineNoCov"> 0 : return false;</span></a>
<a name="601"><span class="lineNum"> 601 </span> : : }</a>
-<a name="602"><span class="lineNum"> 602 </span> :<span class="lineCov"> 131262 : if ((long)region-&gt;len % sizeof(long)) {</span></a>
+<a name="602"><span class="lineNum"> 602 </span> :<span class="lineCov"> 131264 : if ((long)region-&gt;len % sizeof(long)) {</span></a>
<a name="603"><span class="lineNum"> 603 </span> :<span class="lineNoCov"> 0 : prerror(&quot;Region '%s' not sane length (%llu)\n&quot;,</span></a>
<a name="604"><span class="lineNum"> 604 </span> : : region-&gt;name, (unsigned long long)region-&gt;len);</a>
<a name="605"><span class="lineNum"> 605 </span> :<span class="lineNoCov"> 0 : return false;</span></a>
<a name="606"><span class="lineNum"> 606 </span> : : }</a>
<a name="607"><span class="lineNum"> 607 </span> : : </a>
<a name="608"><span class="lineNum"> 608 </span> : : /* Not ours to play with, or empty? Don't do anything. */</a>
-<a name="609"><span class="lineNum"> 609 </span> :<span class="lineCov"> 131262 : if (!(region-&gt;type == REGION_MEMORY ||</span></a>
-<a name="610"><span class="lineNum"> 610 </span> :<span class="lineCov"> 131255 : region-&gt;type == REGION_SKIBOOT_HEAP) ||</span></a>
-<a name="611"><span class="lineNum"> 611 </span> :<span class="lineCov"> 131244 : region-&gt;free_list.n.next == NULL)</span></a>
+<a name="609"><span class="lineNum"> 609 </span> :<span class="lineCov"> 131264 : if (!(region-&gt;type == REGION_MEMORY ||</span></a>
+<a name="610"><span class="lineNum"> 610 </span> :<span class="lineCov"> 131257 : region-&gt;type == REGION_SKIBOOT_HEAP) ||</span></a>
+<a name="611"><span class="lineNum"> 611 </span> :<span class="lineCov"> 131246 : region-&gt;free_list.n.next == NULL)</span></a>
<a name="612"><span class="lineNum"> 612 </span> :<span class="lineCov"> 30 : return true;</span></a>
<a name="613"><span class="lineNum"> 613 </span> : : </a>
<a name="614"><span class="lineNum"> 614 </span> : : /* Walk linearly. */</a>
-<a name="615"><span class="lineNum"> 615 </span> :<span class="lineCov"> 402768 : for (hdr = region_start(region); hdr; hdr = next_hdr(region, hdr)) {</span></a>
-<a name="616"><span class="lineNum"> 616 </span> :<span class="lineCov"> 271536 : if (hdr-&gt;num_longs &lt; ALLOC_MIN_LONGS) {</span></a>
+<a name="615"><span class="lineNum"> 615 </span> :<span class="lineCov"> 402776 : for (hdr = region_start(region); hdr; hdr = next_hdr(region, hdr)) {</span></a>
+<a name="616"><span class="lineNum"> 616 </span> :<span class="lineCov"> 271542 : if (hdr-&gt;num_longs &lt; ALLOC_MIN_LONGS) {</span></a>
<a name="617"><span class="lineNum"> 617 </span> :<span class="lineNoCov"> 0 : prerror(&quot;Region '%s' %s %p (%s) size %zu\n&quot;,</span></a>
<a name="618"><span class="lineNum"> 618 </span> : : region-&gt;name, hdr-&gt;free ? &quot;free&quot; : &quot;alloc&quot;,</a>
<a name="619"><span class="lineNum"> 619 </span> : : hdr, hdr_location(hdr),</a>
<a name="620"><span class="lineNum"> 620 </span> : : hdr-&gt;num_longs * sizeof(long));</a>
<a name="621"><span class="lineNum"> 621 </span> :<span class="lineNoCov"> 0 : return false;</span></a>
<a name="622"><span class="lineNum"> 622 </span> : : }</a>
-<a name="623"><span class="lineNum"> 623 </span> :<span class="lineCov"> 271536 : if ((unsigned long)hdr + hdr-&gt;num_longs * sizeof(long) &gt;</span></a>
-<a name="624"><span class="lineNum"> 624 </span> :<span class="lineCov"> 271536 : region-&gt;start + region-&gt;len) {</span></a>
+<a name="623"><span class="lineNum"> 623 </span> :<span class="lineCov"> 271542 : if ((unsigned long)hdr + hdr-&gt;num_longs * sizeof(long) &gt;</span></a>
+<a name="624"><span class="lineNum"> 624 </span> :<span class="lineCov"> 271542 : region-&gt;start + region-&gt;len) {</span></a>
<a name="625"><span class="lineNum"> 625 </span> :<span class="lineNoCov"> 0 : prerror(&quot;Region '%s' %s %p (%s) oversize %zu\n&quot;,</span></a>
<a name="626"><span class="lineNum"> 626 </span> : : region-&gt;name, hdr-&gt;free ? &quot;free&quot; : &quot;alloc&quot;,</a>
<a name="627"><span class="lineNum"> 627 </span> : : hdr, hdr_location(hdr),</a>
<a name="628"><span class="lineNum"> 628 </span> : : hdr-&gt;num_longs * sizeof(long));</a>
<a name="629"><span class="lineNum"> 629 </span> :<span class="lineNoCov"> 0 : return false;</span></a>
<a name="630"><span class="lineNum"> 630 </span> : : }</a>
-<a name="631"><span class="lineNum"> 631 </span> :<span class="lineCov"> 271536 : if (hdr-&gt;free) {</span></a>
-<a name="632"><span class="lineNum"> 632 </span> :<span class="lineCov"> 131176 : if (hdr-&gt;prev_free || prev_free) {</span></a>
+<a name="631"><span class="lineNum"> 631 </span> :<span class="lineCov"> 271542 : if (hdr-&gt;free) {</span></a>
+<a name="632"><span class="lineNum"> 632 </span> :<span class="lineCov"> 131179 : if (hdr-&gt;prev_free || prev_free) {</span></a>
<a name="633"><span class="lineNum"> 633 </span> :<span class="lineNoCov"> 0 : prerror(&quot;Region '%s' free %p (%s) has prev_free&quot;</span></a>
<a name="634"><span class="lineNum"> 634 </span> : : &quot; %p (%s) %sset?\n&quot;,</a>
<a name="635"><span class="lineNum"> 635 </span> : : region-&gt;name, hdr, hdr_location(hdr),</a>
@@ -710,30 +710,30 @@
<a name="639"><span class="lineNum"> 639 </span> : : hdr-&gt;prev_free ? &quot;&quot; : &quot;un&quot;);</a>
<a name="640"><span class="lineNum"> 640 </span> :<span class="lineNoCov"> 0 : return false;</span></a>
<a name="641"><span class="lineNum"> 641 </span> : : }</a>
-<a name="642"><span class="lineNum"> 642 </span> :<span class="lineCov"> 131176 : prev_free = hdr;</span></a>
-<a name="643"><span class="lineNum"> 643 </span> :<span class="lineCov"> 131176 : frees ^= (unsigned long)hdr - region-&gt;start;</span></a>
+<a name="642"><span class="lineNum"> 642 </span> :<span class="lineCov"> 131179 : prev_free = hdr;</span></a>
+<a name="643"><span class="lineNum"> 643 </span> :<span class="lineCov"> 131179 : frees ^= (unsigned long)hdr - region-&gt;start;</span></a>
<a name="644"><span class="lineNum"> 644 </span> : : } else {</a>
-<a name="645"><span class="lineNum"> 645 </span> :<span class="lineCov"> 140360 : if (hdr-&gt;prev_free != (bool)prev_free) {</span></a>
+<a name="645"><span class="lineNum"> 645 </span> :<span class="lineCov"> 140363 : if (hdr-&gt;prev_free != (bool)prev_free) {</span></a>
<a name="646"><span class="lineNum"> 646 </span> :<span class="lineNoCov"> 0 : prerror(&quot;Region '%s' alloc %p (%s) has&quot;</span></a>
<a name="647"><span class="lineNum"> 647 </span> : : &quot; prev_free %p %sset?\n&quot;,</a>
<a name="648"><span class="lineNum"> 648 </span> : : region-&gt;name, hdr, hdr_location(hdr),</a>
<a name="649"><span class="lineNum"> 649 </span> : : prev_free, hdr-&gt;prev_free ? &quot;&quot; : &quot;un&quot;);</a>
<a name="650"><span class="lineNum"> 650 </span> :<span class="lineNoCov"> 0 : return false;</span></a>
<a name="651"><span class="lineNum"> 651 </span> : : }</a>
-<a name="652"><span class="lineNum"> 652 </span> :<span class="lineCov"> 140360 : prev_free = NULL;</span></a>
+<a name="652"><span class="lineNum"> 652 </span> :<span class="lineCov"> 140363 : prev_free = NULL;</span></a>
<a name="653"><span class="lineNum"> 653 </span> : : }</a>
<a name="654"><span class="lineNum"> 654 </span> : : }</a>
<a name="655"><span class="lineNum"> 655 </span> : : </a>
<a name="656"><span class="lineNum"> 656 </span> : : /* Now walk free list. */</a>
-<a name="657"><span class="lineNum"> 657 </span> :<span class="lineCov"> 262408 : list_for_each(&amp;region-&gt;free_list, f, list)</span></a>
-<a name="658"><span class="lineNum"> 658 </span> :<span class="lineCov"> 131176 : frees ^= (unsigned long)f - region-&gt;start;</span></a>
+<a name="657"><span class="lineNum"> 657 </span> :<span class="lineCov"> 262413 : list_for_each(&amp;region-&gt;free_list, f, list)</span></a>
+<a name="658"><span class="lineNum"> 658 </span> :<span class="lineCov"> 131179 : frees ^= (unsigned long)f - region-&gt;start;</span></a>
<a name="659"><span class="lineNum"> 659 </span> : : </a>
-<a name="660"><span class="lineNum"> 660 </span> :<span class="lineCov"> 131232 : if (frees) {</span></a>
+<a name="660"><span class="lineNum"> 660 </span> :<span class="lineCov"> 131234 : if (frees) {</span></a>
<a name="661"><span class="lineNum"> 661 </span> :<span class="lineNoCov"> 0 : prerror(&quot;Region '%s' free list and walk do not match!\n&quot;,</span></a>
<a name="662"><span class="lineNum"> 662 </span> : : region-&gt;name);</a>
<a name="663"><span class="lineNum"> 663 </span> :<span class="lineNoCov"> 0 : return false;</span></a>
<a name="664"><span class="lineNum"> 664 </span> : : }</a>
-<a name="665"><span class="lineNum"> 665 </span> :<span class="lineCov"> 131232 : return true;</span></a>
+<a name="665"><span class="lineNum"> 665 </span> :<span class="lineCov"> 131234 : return true;</span></a>
<a name="666"><span class="lineNum"> 666 </span> : : }</a>
<a name="667"><span class="lineNum"> 667 </span> : : </a>
<a name="668"><span class="lineNum"> 668 </span> :<span class="lineNoCov"> 0 : bool mem_check_all(void)</span></a>