<ahref="static__lru__hash__map_8h.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aid="l00001"name="l00001"></a><spanclass="lineno"> 1</span><spanclass="comment">/*</span></div>
<divclass="line"><aid="l00002"name="l00002"></a><spanclass="lineno"> 2</span><spanclass="comment"> * This file is part of the Aaru Data Preservation Suite.</span></div>
<divclass="line"><aid="l00005"name="l00005"></a><spanclass="lineno"> 5</span><spanclass="comment"> * This library is free software; you can redistribute it and/or modify</span></div>
<divclass="line"><aid="l00006"name="l00006"></a><spanclass="lineno"> 6</span><spanclass="comment"> * it under the terms of the GNU Lesser General Public License as</span></div>
<divclass="line"><aid="l00007"name="l00007"></a><spanclass="lineno"> 7</span><spanclass="comment"> * published by the Free Software Foundation; either version 2.1 of the</span></div>
<divclass="line"><aid="l00008"name="l00008"></a><spanclass="lineno"> 8</span><spanclass="comment"> * License, or (at your option) any later version.</span></div>
<divclass="line"><aid="l00010"name="l00010"></a><spanclass="lineno"> 10</span><spanclass="comment"> * This library is distributed in the hope that it will be useful, but</span></div>
<divclass="line"><aid="l00011"name="l00011"></a><spanclass="lineno"> 11</span><spanclass="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<divclass="line"><aid="l00012"name="l00012"></a><spanclass="lineno"> 12</span><spanclass="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div>
<divclass="line"><aid="l00013"name="l00013"></a><spanclass="lineno"> 13</span><spanclass="comment"> * Lesser General Public License for more details.</span></div>
<divclass="line"><aid="l00015"name="l00015"></a><spanclass="lineno"> 15</span><spanclass="comment"> * You should have received a copy of the GNU Lesser General Public</span></div>
<divclass="line"><aid="l00016"name="l00016"></a><spanclass="lineno"> 16</span><spanclass="comment"> * License along with this library; if not, see <http://www.gnu.org/licenses/>.</span></div>
<divclass="line"><aid="l00107"name="l00107"></a><spanclass="lineno"> 107</span><spanclass="comment">// Optional statistics (can be compiled out if not needed)</span></div>
<divclass="ttc"id="astatic__lru__hash__map_8h_html_a0dfd7086461b507c3a0e329e0d047e74"><divclass="ttname"><ahref="static__lru__hash__map_8h.html#a0dfd7086461b507c3a0e329e0d047e74">static_lru_free_map</a></div><divclass="ttdeci">void static_lru_free_map(static_lru_hash_map_t *map)</div><divclass="ttdoc">Frees all memory associated with a static LRU hash map.</div><divclass="ttdef"><b>Definition</b><ahref="static__lru__hash__map_8c_source.html#l00237">static_lru_hash_map.c:237</a></div></div>
<divclass="ttc"id="astatic__lru__hash__map_8h_html_a1682e53b3efd8786a8d0620fa12f142c"><divclass="ttname"><ahref="static__lru__hash__map_8h.html#a1682e53b3efd8786a8d0620fa12f142c">static_lru_age_counts</a></div><divclass="ttdeci">void static_lru_age_counts(static_lru_hash_map_t *map)</div><divclass="ttdoc">Manually ages all access counts.</div><divclass="ttdef"><b>Definition</b><ahref="static__lru__hash__map_8c_source.html#l00331">static_lru_hash_map.c:331</a></div></div>
<divclass="ttc"id="astatic__lru__hash__map_8h_html_a1d284756f5f2f589f20dd0be5a793390"><divclass="ttname"><ahref="static__lru__hash__map_8h.html#a1d284756f5f2f589f20dd0be5a793390">static_lru_free_slots</a></div><divclass="ttdeci">size_t static_lru_free_slots(const static_lru_hash_map_t *map)</div><divclass="ttdoc">Returns the number of free slots available.</div><divclass="ttdef"><b>Definition</b><ahref="static__lru__hash__map_8c_source.html#l00339">static_lru_hash_map.c:339</a></div></div>
<divclass="ttc"id="astatic__lru__hash__map_8h_html_a2c6aba784bb6cccf761347ad7c30e865"><divclass="ttname"><ahref="static__lru__hash__map_8h.html#a2c6aba784bb6cccf761347ad7c30e865">static_lru_create_map</a></div><divclass="ttdeci">static_lru_hash_map_t * static_lru_create_map(size_t size)</div><divclass="ttdoc">Creates a new static LRU hash map with fixed size.</div><divclass="ttdef"><b>Definition</b><ahref="static__lru__hash__map_8c_source.html#l00204">static_lru_hash_map.c:204</a></div></div>
<divclass="ttc"id="astatic__lru__hash__map_8h_html_a3fad20805fcd096bb6f4c9ec7b9e666b"><divclass="ttname"><ahref="static__lru__hash__map_8h.html#a3fad20805fcd096bb6f4c9ec7b9e666b">static_lru_evict</a></div><divclass="ttdeci">size_t static_lru_evict(static_lru_hash_map_t *map, size_t entries_to_keep)</div><divclass="ttdoc">Manually triggers eviction of least-used entries.</div><divclass="ttdef"><b>Definition</b><ahref="static__lru__hash__map_8c_source.html#l00328">static_lru_hash_map.c:328</a></div></div>
<divclass="ttc"id="astatic__lru__hash__map_8h_html_a450c1d834b74de014c5e943e662b39c0"><divclass="ttname"><ahref="static__lru__hash__map_8h.html#a450c1d834b74de014c5e943e662b39c0">static_lru_lookup_map</a></div><divclass="ttdeci">bool static_lru_lookup_map(static_lru_hash_map_t *map, uint64_t key, uint64_t *out_value)</div><divclass="ttdoc">Looks up a value by key in the static LRU hash map.</div><divclass="ttdef"><b>Definition</b><ahref="static__lru__hash__map_8c_source.html#l00284">static_lru_hash_map.c:284</a></div></div>
<divclass="ttc"id="astatic__lru__hash__map_8h_html_a5deee3df8ccae2c0c34bec4c4a28dfa2"><divclass="ttname"><ahref="static__lru__hash__map_8h.html#a5deee3df8ccae2c0c34bec4c4a28dfa2">static_lru_load_factor</a></div><divclass="ttdeci">double static_lru_load_factor(const static_lru_hash_map_t *map)</div><divclass="ttdoc">Returns the current load factor of the map.</div><divclass="ttdef"><b>Definition</b><ahref="static__lru__hash__map_8c_source.html#l00337">static_lru_hash_map.c:337</a></div></div>
<divclass="ttc"id="astatic__lru__hash__map_8h_html_aa96225bd1e66d8afd7541bc4587bb88f"><divclass="ttname"><ahref="static__lru__hash__map_8h.html#aa96225bd1e66d8afd7541bc4587bb88f">static_lru_insert_map</a></div><divclass="ttdeci">bool static_lru_insert_map(static_lru_hash_map_t *map, uint64_t key, uint64_t value)</div><divclass="ttdoc">Inserts a key-value pair into the static LRU hash map.</div><divclass="ttdef"><b>Definition</b><ahref="static__lru__hash__map_8c_source.html#l00245">static_lru_hash_map.c:245</a></div></div>
<divclass="ttc"id="astatic__lru__hash__map_8h_html_aead2422ca9f9aa1f4f08c65ba6dd1425"><divclass="ttname"><ahref="static__lru__hash__map_8h.html#aead2422ca9f9aa1f4f08c65ba6dd1425">static_lru_contains_key</a></div><divclass="ttdeci">bool static_lru_contains_key(const static_lru_hash_map_t *map, uint64_t key)</div><divclass="ttdoc">Checks if a key exists in the map WITHOUT updating access count.</div><divclass="ttdef"><b>Definition</b><ahref="static__lru__hash__map_8c_source.html#l00314">static_lru_hash_map.c:314</a></div></div>
<divclass="ttc"id="astructlru__kv__pair__t_html"><divclass="ttname"><ahref="structlru__kv__pair__t.html">lru_kv_pair_t</a></div><divclass="ttdoc">Single key/value slot with access tracking for the static LRU hash map.</div><divclass="ttdef"><b>Definition</b><ahref="#l00071">static_lru_hash_map.h:72</a></div></div>
<divclass="ttc"id="astructlru__kv__pair__t_html_a6b149392e7cb888c1a26459de99b1075"><divclass="ttname"><ahref="structlru__kv__pair__t.html#a6b149392e7cb888c1a26459de99b1075">lru_kv_pair_t::access_count</a></div><divclass="ttdeci">uint8_t access_count</div><divclass="ttdoc">Access frequency counter (0-255, saturates at 255).</div><divclass="ttdef"><b>Definition</b><ahref="#l00075">static_lru_hash_map.h:75</a></div></div>
<divclass="ttc"id="astructlru__kv__pair__t_html_a9a0d3d45a88d48bafab14c779ddd1f72"><divclass="ttname"><ahref="structlru__kv__pair__t.html#a9a0d3d45a88d48bafab14c779ddd1f72">lru_kv_pair_t::_padding</a></div><divclass="ttdeci">uint8_t _padding[7]</div><divclass="ttdoc">Padding for 8-byte alignment (24 bytes total per entry).</div><divclass="ttdef"><b>Definition</b><ahref="#l00076">static_lru_hash_map.h:76</a></div></div>
<divclass="ttc"id="astructlru__kv__pair__t_html_ac33547a6970d9671d85d4af2cdf662ce"><divclass="ttname"><ahref="structlru__kv__pair__t.html#ac33547a6970d9671d85d4af2cdf662ce">lru_kv_pair_t::value</a></div><divclass="ttdeci">uint64_t value</div><divclass="ttdoc">Associated value payload (64-bit).</div><divclass="ttdef"><b>Definition</b><ahref="#l00074">static_lru_hash_map.h:74</a></div></div>
<divclass="ttc"id="astructlru__kv__pair__t_html_adb871f5b46397dcd1c7f1ae3010f929b"><divclass="ttname"><ahref="structlru__kv__pair__t.html#adb871f5b46397dcd1c7f1ae3010f929b">lru_kv_pair_t::key</a></div><divclass="ttdeci">uint64_t key</div><divclass="ttdoc">Stored key (64-bit). 0 indicates an empty slot.</div><divclass="ttdef"><b>Definition</b><ahref="#l00073">static_lru_hash_map.h:73</a></div></div>
<divclass="ttc"id="astructstatic__lru__hash__map__t_html"><divclass="ttname"><ahref="structstatic__lru__hash__map__t.html">static_lru_hash_map_t</a></div><divclass="ttdoc">Fixed-size hash map with LRU-like eviction for bounded memory usage.</div><divclass="ttdef"><b>Definition</b><ahref="#l00097">static_lru_hash_map.h:98</a></div></div>
<divclass="ttc"id="astructstatic__lru__hash__map__t_html_a68079504fdb5f0c2fb08bad5efe26f21"><divclass="ttname"><ahref="structstatic__lru__hash__map__t.html#a68079504fdb5f0c2fb08bad5efe26f21">static_lru_hash_map_t::age_counter</a></div><divclass="ttdeci">uint32_t age_counter</div><divclass="ttdoc">Operations since last aging.</div><divclass="ttdef"><b>Definition</b><ahref="#l00104">static_lru_hash_map.h:104</a></div></div>
<divclass="ttc"id="astructstatic__lru__hash__map__t_html_a712c31a18edc1d62378523a91e8d6ad7"><divclass="ttname"><ahref="structstatic__lru__hash__map__t.html#a712c31a18edc1d62378523a91e8d6ad7">static_lru_hash_map_t::target_count</a></div><divclass="ttdeci">size_t target_count</div><divclass="ttdoc">Target count after eviction (size * TARGET_LOAD_FACTOR).</div><divclass="ttdef"><b>Definition</b><ahref="#l00103">static_lru_hash_map.h:103</a></div></div>
<divclass="ttc"id="astructstatic__lru__hash__map__t_html_a93de58e015e1b2a4628aea05e518726a"><divclass="ttname"><ahref="structstatic__lru__hash__map__t.html#a93de58e015e1b2a4628aea05e518726a">static_lru_hash_map_t::count</a></div><divclass="ttdeci">size_t count</div><divclass="ttdoc">Number of active (filled) entries.</div><divclass="ttdef"><b>Definition</b><ahref="#l00101">static_lru_hash_map.h:101</a></div></div>
<divclass="ttc"id="astructstatic__lru__hash__map__t_html_a9d02c3263af8f8d4ad94255884f4c80d"><divclass="ttname"><ahref="structstatic__lru__hash__map__t.html#a9d02c3263af8f8d4ad94255884f4c80d">static_lru_hash_map_t::table</a></div><divclass="ttdeci">lru_kv_pair_t * table</div><divclass="ttdoc">Array of key/value slots of length == size.</div><divclass="ttdef"><b>Definition</b><ahref="#l00099">static_lru_hash_map.h:99</a></div></div>
<divclass="ttc"id="astructstatic__lru__hash__map__t_html_abe1dee7566699b555a9d181999d92cc8"><divclass="ttname"><ahref="structstatic__lru__hash__map__t.html#abe1dee7566699b555a9d181999d92cc8">static_lru_hash_map_t::size</a></div><divclass="ttdeci">size_t size</div><divclass="ttdoc">Allocated slot capacity (FIXED at creation).</div><divclass="ttdef"><b>Definition</b><ahref="#l00100">static_lru_hash_map.h:100</a></div></div>
<divclass="ttc"id="astructstatic__lru__hash__map__t_html_ac594a3c7b5e21f2c69447ab6f74d5128"><divclass="ttname"><ahref="structstatic__lru__hash__map__t.html#ac594a3c7b5e21f2c69447ab6f74d5128">static_lru_hash_map_t::_padding</a></div><divclass="ttdeci">uint32_t _padding</div><divclass="ttdoc">Padding for alignment.</div><divclass="ttdef"><b>Definition</b><ahref="#l00105">static_lru_hash_map.h:105</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<divid="nav-path"class="navpath"><!-- id is needed for treeview function! -->
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.16.1 </li>