No description
Find a file
Damian Krolik 74e4ac0883 nvs: implement NVS cache
The NVS data lookup time grows linearly with the number of
allocation table entries to walk through, meaning that if
some data pair in the NVS changes frequently, access to
other data pairs that change rarely can take a lot of time.

It is particularly visible when the NVS is used as the
settings backend since the backend needs to perform multiple
NVS reads to find a requested key.

Implement a simple cache that stores an address of the most
recent ATE for all NVS IDs that fall into the given cache
position. CRC8/16 is used as a hash function used to
distribute NVS IDs across the cache entries.

The cache entries are only invalidated when an NVS sector
is erased as part of the garbage collector task.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
2022-06-05 14:43:59 +02:00
.github ci: Run twister with forced color output 2022-05-25 12:48:31 +09:00
arch riscv: Rework and cleanup Kconfig 2022-06-05 14:28:42 +02:00
boards boards: riscv: longan_nano: Migrate to new SD subsystem 2022-06-05 14:42:53 +02:00
cmake riscv: Rework and cleanup Kconfig 2022-06-05 14:28:42 +02:00
doc coredump: drivers: Add coredump device 2022-06-05 14:28:34 +02:00
drivers modem: quectel-bg9x: remove unwanted space after comma in AT cmd 2022-06-05 14:42:46 +02:00
dts ADXL362: Add DTS properties for low-power modes 2022-06-05 14:42:40 +02:00
include/zephyr nvs: implement NVS cache 2022-06-05 14:43:59 +02:00
kernel kernel: Allow non-zephyr toolchains to advertise TLS support 2022-06-05 14:29:12 +02:00
lib libc: minimal: Fix gmtime() userspace support 2022-06-01 11:03:38 +02:00
misc misc: generated: update configs.c template with <zephyr/...> prefix 2022-05-09 12:45:29 -04:00
modules modules: mbedtls: Add Kconfig option to enable Extended Master Secret 2022-06-05 14:26:48 +02:00
samples samples: tfm_integration: Set TF-M profile type to none. 2022-06-05 14:42:20 +02:00
scripts scripts: gen_handles: injected device handles 2022-06-05 14:26:39 +02:00
share cmake: zephyr-package: add message mode 2022-03-23 13:24:41 +01:00
soc soc: arm: aspeed: enable cache for AST10x0 series SOC 2022-06-05 14:28:50 +02:00
submanifests west.yml: allow users to easily add more modules 2021-10-07 13:45:42 +02:00
subsys nvs: implement NVS cache 2022-06-05 14:43:59 +02:00
tests nvs: implement NVS cache 2022-06-05 14:43:59 +02:00
.checkpatch.conf checkpatch: Ignore IS_ENABLED_CONFIG warnings 2021-10-18 08:28:01 -04:00
.clang-format clang-format: Change lines length limit from 80 to 100 2021-05-06 08:13:32 -05:00
.codecov.yml
.editorconfig editorconfig: Improve verbosity 2022-04-28 08:55:39 -04:00
.gitattributes gitattributes: consider SVG files generated 2021-10-14 12:42:44 -04:00
.gitignore gitignore: Ignore emacs temporary edit files 2022-05-20 18:21:18 +02:00
.gitlint gitlint: Stop ignoring merge, revert, fixup and squash commits 2022-01-10 08:13:36 -05:00
.mailmap mailmap: update mailmap file with some stray emails 2021-06-17 14:15:41 -04:00
.uncrustify.cfg uncrustify: force a single EOF newline 2021-11-03 16:14:20 -04:00
CMakeLists.txt cmake: add a mechanism for deprecating modules 2022-05-27 15:32:31 -07:00
CODE_OF_CONDUCT.md coc: move to markdown format 2019-01-24 15:37:15 -05:00
CODEOWNERS ARC: HSDK: remove pinmux_hsdk driver 2022-05-18 17:20:26 +02:00
CONTRIBUTING.rst doc: Fixed a link in CONTRIBUTING.rst 2019-02-28 12:46:04 -08:00
Kconfig kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
Kconfig.zephyr LLVM: add built-in lld linker support for x86. 2022-06-05 14:10:25 +02:00
LICENSE
MAINTAINERS.yml coredump: drivers: Add coredump device test 2022-06-05 14:28:34 +02:00
README.rst doc: update architectures in README 2022-05-06 11:29:28 +02:00
VERSION VERSION: bump to 3.1.99 2022-06-05 13:19:10 +02:00
version.h.in cmake: version.h generation performed at build time 2022-02-08 07:50:24 -05:00
west.yml manifest: MCUboot update 2022-05-27 15:21:57 -07:00
zephyr-env.cmd scripts: remove west from scripts/ 2019-01-29 10:15:01 +01:00
zephyr-env.sh everywhere: fix typos 2022-03-18 13:24:08 -04:00

.. raw:: html

   <a href="https://www.zephyrproject.org">
     <p align="center">
       <img src="doc/_static/images/logo-readme.svg">
     </p>
   </a>

   <a href="https://bestpractices.coreinfrastructure.org/projects/74"><img
   src="https://bestpractices.coreinfrastructure.org/projects/74/badge"></a>
   <a
   href="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml?query=branch%3Amain">
   <img
   src="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml/badge.svg?event=push"></a>


The Zephyr Project is a scalable real-time operating system (RTOS) supporting
multiple hardware architectures, optimized for resource constrained devices,
and built with security in mind.

The Zephyr OS is based on a small-footprint kernel designed for use on
resource-constrained systems: from simple embedded environmental sensors and
LED wearables to sophisticated smart watches and IoT wireless gateways.

The Zephyr kernel supports multiple architectures, including ARM (Cortex-A,
Cortex-R, Cortex-M), Intel x86, ARC, Nios II, Tensilica Xtensa, and RISC-V,
SPARC, MIPS, and a large number of `supported boards`_.

.. below included in doc/introduction/introduction.rst


Getting Started
***************

Welcome to Zephyr! See the `Introduction to Zephyr`_ for a high-level overview,
and the documentation's `Getting Started Guide`_ to start developing.

.. start_include_here

Community Support
*****************

Community support is provided via mailing lists and Discord; see the Resources
below for details.

.. _project-resources:

Resources
*********

Here's a quick summary of resources to help you find your way around:

* **Help**: `Asking for Help Tips`_
* **Documentation**: http://docs.zephyrproject.org (`Getting Started Guide`_)
* **Source Code**: https://github.com/zephyrproject-rtos/zephyr is the main
  repository; https://elixir.bootlin.com/zephyr/latest/source contains a
  searchable index
* **Releases**: https://github.com/zephyrproject-rtos/zephyr/releases
* **Samples and example code**: see `Sample and Demo Code Examples`_
* **Mailing Lists**: users@lists.zephyrproject.org and
  devel@lists.zephyrproject.org are the main user and developer mailing lists,
  respectively. You can join the developer's list and search its archives at
  `Zephyr Development mailing list`_. The other `Zephyr mailing list
  subgroups`_ have their own archives and sign-up pages.
* **Nightly CI Build Status**: https://lists.zephyrproject.org/g/builds
  The builds@lists.zephyrproject.org mailing list archives the CI nightly build results.
* **Chat**: Real-time chat happens in Zephyr's Discord Server. Use
  this `Discord Invite`_ to register.
* **Contributing**: see the `Contribution Guide`_
* **Wiki**: `Zephyr GitHub wiki`_
* **Issues**: https://github.com/zephyrproject-rtos/zephyr/issues
* **Security Issues**: Email vulnerabilities@zephyrproject.org to report
  security issues; also see our `Security`_ documentation. Security issues are
  tracked separately at https://zephyrprojectsec.atlassian.net.
* **Zephyr Project Website**: https://zephyrproject.org

.. _Discord Invite: https://chat.zephyrproject.org
.. _supported boards: http://docs.zephyrproject.org/latest/boards/index.html
.. _Zephyr Documentation: http://docs.zephyrproject.org
.. _Introduction to Zephyr: http://docs.zephyrproject.org/latest/introduction/index.html
.. _Getting Started Guide: http://docs.zephyrproject.org/latest/getting_started/index.html
.. _Contribution Guide: http://docs.zephyrproject.org/latest/contribute/index.html
.. _Zephyr GitHub wiki: https://github.com/zephyrproject-rtos/zephyr/wiki
.. _Zephyr Development mailing list: https://lists.zephyrproject.org/g/devel
.. _Zephyr mailing list subgroups: https://lists.zephyrproject.org/g/main/subgroups
.. _Sample and Demo Code Examples: http://docs.zephyrproject.org/latest/samples/index.html
.. _Security: http://docs.zephyrproject.org/latest/security/index.html
.. _Asking for Help Tips: https://docs.zephyrproject.org/latest/getting_started/index.html#asking-for-help