2023-10-25 21:21:50 +08:00
|
|
|
===============
|
|
|
|
NuttX libraries
|
|
|
|
===============
|
|
|
|
|
|
|
|
This page discusses the NuttX libraries that can be found in ``libs/``
|
|
|
|
|
|
|
|
Libraries in NuttX are very special creatures. They have these properties:
|
|
|
|
|
2023-10-26 19:10:13 +08:00
|
|
|
#. They can be shared by both application logic and logic within the OS when
|
2023-10-25 21:21:50 +08:00
|
|
|
using the FLAT build.
|
|
|
|
|
2023-10-26 19:10:13 +08:00
|
|
|
#. But in PROTECTED and KERNEL modes, they must be built differently: The
|
2023-10-25 21:21:50 +08:00
|
|
|
copies used by applications and the OS cannot be the same. Rather,
|
|
|
|
separate versions of libraries must be built for the kernel and for
|
|
|
|
applications.
|
|
|
|
|
2023-10-26 19:10:13 +08:00
|
|
|
#. When used by the OS, some special care must be taken to assure that the
|
2023-10-25 21:21:50 +08:00
|
|
|
OS logic does not disrupt the user's errno value and that the OS does
|
|
|
|
not create inappropriate cancellation points.
|
|
|
|
|
|
|
|
For example, ``sem_wait()`` is both a cancellation point and modifies the
|
|
|
|
errno value. So within the FLAT build and without kernel version for
|
|
|
|
the PROTECTED and KERNEL builds, the special internal OS interface
|
2023-11-24 16:54:22 +08:00
|
|
|
``nxsem_wait()`` must be used.
|
2023-10-25 21:21:50 +08:00
|
|
|
|
|
|
|
NOTE: The libraries under ``libs/`` build differently from other NuttX
|
|
|
|
components: There are no build-related files in the ``libs/`` directory; it
|
|
|
|
is simply a container for other well-known, individual library directories.
|
|
|
|
The upper level Makefile logic is aware of the libraries within the ``libs/``
|
|
|
|
container.
|
|
|
|
|
|
|
|
The only real function of the ``libs/`` directory is to prevent the top-level
|
|
|
|
directory from becoming cluttered with individual libraries.
|
|
|
|
|
|
|
|
.. toctree::
|
|
|
|
:maxdepth: 1
|
|
|
|
:caption: Contents:
|
|
|
|
|
|
|
|
libc/index.rst
|
|
|
|
libdsp.rst
|
|
|
|
libm.rst
|
|
|
|
libxx.rst
|
|
|
|
libnx/index.rst
|