mirror of
https://github.com/Dasharo/zephyr.git
synced 2026-03-06 14:57:20 -08:00
This current sentence would need to be clarified a bit further to be really correct: It is only when building with the host C library that it applies, but with native_sim we can build with other libC's. The twister tests definitions are testing only with embedded C libraries, and there is anyway no harm if somebody defines the heap size even if using the host libC. So as such it would seem better to just remove this sentence. Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
.. zephyr:code-sample:: system_hashmap
:name: System hashmap
:relevant-api: hashmap_apis
Insert, replace, and remove entries in a hashmap.
Overview
********
This is a simple example that repeatedly:
* inserts up to ``CONFIG_TEST_LIB_HASH_MAP_MAX_ENTRIES``
* replaces up to the same number that were previously inserted
* removes all previously inserted keys
Building
********
This application can be built on :ref:`native_sim <native_sim>` as follows:
.. zephyr-app-commands::
:zephyr-app: samples/basic/hash_map
:host-os: unix
:board: native_sim
:goals: build
:compact:
To build for another board, change "native_sim" above to that board's name.
Additionally, it is possible to use one of the other Hashmap implementations by specifying
* ``CONFIG_SYS_HASH_MAP_CHOICE_SC=y`` (Separate Chaining)
* ``CONFIG_SYS_HASH_MAP_CHOICE_OA_LP=y`` (Open Addressing / Linear Probe)
* ``CONFIG_SYS_HASH_MAP_CHOICE_CXX=y`` (C Wrapper around the C++ ``std::unordered_map``)
To stress the Hashmap implementation, adjust ``CONFIG_TEST_LIB_HASH_MAP_MAX_ENTRIES``.
Running
*******
Run ``build/zephyr/zephyr.exe``
Sample Output
*************
.. code-block:: console
System Hashmap sample
[00:00:11.000,000] <inf> hashmap_sample: n_insert: 118200 n_remove: 295500 n_replace: 329061 n_miss: 0 n_error: 0 max_size: 118200
[00:00:11.010,000] <inf> hashmap_sample: success