nuttx/Documentation/components/index.rst
Jorge Guzman 7cd511fed2 include/nuttx: Add link-time iterable sections infrastructure
Add generic support for link-time registration of struct instances,
modeled after the Zephyr STRUCT_SECTION_* mechanism:

- include/nuttx/iterable_sections.h: STRUCT_SECTION_ITERABLE/DECLARE/
  FOREACH/GET/COUNT macros placing instances in name-sorted linker
  sections delimited by _<type>_list_start/_end symbols (attributes
  through the nuttx/compiler.h macros; FOREACH takes a caller-declared
  iterator, like list_for_every_entry).
- include/nuttx/linker/iterable_sections.ld: ITERABLE_SECTION() macro
  emitting the KEEP + SORT_BY_NAME collection statements (linker
  scripts in ARCHSCRIPT are CPP-preprocessed).
- include/nuttx/linker/common-rom.ld / common-ram.ld: central
  aggregators meant to be included by board linker scripts (inside
  .text and .data respectively); subsystems register their sections
  here guarded by their Kconfig options, so the fragments expand to
  nothing on configurations that do not use them.
- CONFIG_ITERABLE_SECTIONS_LINKER_INSERT + include/nuttx/linker/
  common-insert.ld (added before the board script by tools/Config.mk and
  by the top-level CMakeLists.txt): optional zero-touch mode that
  supplements the board script through GNU ld INSERT AFTER, collecting
  the subsystems' ITERABLE_SECTION blocks in one output section; the
  common-rom.ld/common-ram.ld fragments expand to nothing in that mode.
  See the option help for the constraints.
- Documentation/components/iterable_sections.rst.

First user: the Zephyr zbus message bus port (apps/system/zbus in
nuttx-apps); its board integration comes in a companion PR.

Signed-off-by: Jorge Guzman <jorge.gzm@gmail.com>
2026-08-27 01:04:05 +08:00

34 lines
771 B
ReStructuredText

=============
OS Components
=============
NuttX is very feature-rich RTOS and is thus composed of various different
subsystems. The following sections explain how each of these main RTOS components
work and can be used. For detailed documentation on the specific API used in this
case, you can head to the :doc:`reference <../reference/index>`.
.. toctree::
:maxdepth: 2
:caption: Contents:
binfmt.rst
concurrency/index.rst
iterable_sections.rst
drivers/index.rst
nxflat.rst
nxgraphics/index.rst
paging.rst
audio/index.rst
filesystem/index.rst
libs/index.rst
net/index.rst
mm/index.rst
syscall.rst
tools/index.rst
arch/index.rst
boards.rst
cmake.rst
openamp.rst
video.rst
crypto.rst
wireless.rst