142 lines
3.3 KiB
ReStructuredText
142 lines
3.3 KiB
ReStructuredText
.. nanokernel_api:
|
|
|
|
Nanokernel APIs
|
|
###############
|
|
|
|
.. contents::
|
|
:depth: 1
|
|
:local:
|
|
:backlinks: top
|
|
|
|
Fibers
|
|
******
|
|
|
|
A :dfn:`fiber` is a lightweight, non-preemptible thread of execution that
|
|
implements a portion of an application's processing. Fibers are often
|
|
used in device drivers and for performance-critical work.
|
|
|
|
For an overview and important information about Fibers, see :ref:`nanokernel_fibers`.
|
|
|
|
------
|
|
|
|
.. doxygengroup:: nanokernel_fiber
|
|
:project: Zephyr
|
|
:content-only:
|
|
|
|
Tasks
|
|
******
|
|
|
|
A :dfn:`task` is a preemptible thread of execution that implements a portion of
|
|
an application's processing. It is normally used to perform processing that is
|
|
too lengthy or too complex to be performed by a fiber or an ISR.
|
|
|
|
For an overview and important information about Tasks, see :ref:`nanokernel_tasks`.
|
|
|
|
------
|
|
|
|
.. doxygengroup:: nanokernel_task
|
|
:project: Zephyr
|
|
:content-only:
|
|
|
|
Semaphores
|
|
**********
|
|
|
|
The nanokernel's :dfn:`semaphore` object type is an implementation of a
|
|
traditional counting semaphore. It is mainly intended for use by fibers.
|
|
|
|
For an overview and important information about Semaphores, see :ref:`nanokernel_synchronization`.
|
|
|
|
------
|
|
|
|
.. doxygengroup:: nanokernel_semaphore
|
|
:project: Zephyr
|
|
:content-only:
|
|
|
|
LIFOs
|
|
*****
|
|
|
|
The nanokernel's LIFO object type is an implementation of a traditional
|
|
last in, first out queue. It is mainly intended for use by fibers.
|
|
|
|
For an overview and important information about LIFOs, see :ref:`nanokernel_lifos`.
|
|
|
|
------
|
|
|
|
.. doxygengroup:: nanokernel_lifo
|
|
:project: Zephyr
|
|
:content-only:
|
|
|
|
FIFOs
|
|
*****
|
|
|
|
The nanokernel's FIFO object type is an implementation of a traditional
|
|
first in, first out queue. It is mainly intended for use by fibers.
|
|
|
|
For an overview and important information about FIFOs, see :ref:`nanokernel_fifos`.
|
|
|
|
------
|
|
|
|
.. doxygengroup:: nanokernel_fifo
|
|
:project: Zephyr
|
|
:content-only:
|
|
|
|
Ring Buffers
|
|
************
|
|
|
|
The ring buffer is an array-based
|
|
circular buffer, stored in first-in-first-out order. Concurrency control of
|
|
ring buffers is not implemented at this level.
|
|
|
|
For an overview and important information about ring buffers, see :ref:`nanokernel_ring_buffers`.
|
|
|
|
------
|
|
|
|
.. doxygengroup:: nanokernel_ringbuffer
|
|
:project: Zephyr
|
|
:content-only:
|
|
|
|
Stacks
|
|
******
|
|
|
|
The nanokernel's stack object type is an implementation of a traditional
|
|
last in, first out queue for a limited number of 32-bit data values.
|
|
It is mainly intended for use by fibers.
|
|
|
|
For an overview and important information about stacks, see :ref:`nanokernel_stacks`.
|
|
|
|
------
|
|
|
|
.. doxygengroup:: nanokernel_stack
|
|
:project: Zephyr
|
|
:content-only:
|
|
|
|
Timers
|
|
******
|
|
|
|
The nanokernel's :dfn:`timer` object type uses the kernel's system clock to
|
|
monitor the passage of time, as measured in ticks. It is mainly intended for use
|
|
by fibers.
|
|
|
|
For an overview and important information about timers, see :ref:`nanokernel_timers`.
|
|
|
|
------
|
|
|
|
.. doxygengroup:: nanokernel_timer
|
|
:project: Zephyr
|
|
:content-only:
|
|
|
|
Kernel Event Logger
|
|
*******************
|
|
|
|
The kernel event logger is a standardized mechanism to record events within the
|
|
Kernel while providing a single interface for the user to collect the data.
|
|
|
|
For an overview and important information about the kernel event logger API,
|
|
see :ref:`nanokernel_event_logger`.
|
|
|
|
------
|
|
|
|
.. doxygengroup:: nanokernel_event_logger
|
|
:project: Zephyr
|
|
:content-only:
|