.. microkernel_api: Microkernel APIs ################ .. contents:: :depth: 1 :local: :backlinks: top Events ****** The microkernel's :dfn:`event` objects are an implementation of traditional binary semaphores. For an overview and important information about Events, see :ref:`microkernel_events`. ------ .. doxygengroup:: microkernel_event :project: Zephyr :content-only: FIFOs ***** The microkernel's :dfn:`FIFO` object type is an implementation of a traditional first in, first out queue. A FIFO allows tasks to asynchronously send and receive fixed-size data items. For an overview and important information about FIFOs, see :ref:`microkernel_fifos`. ------ .. doxygengroup:: microkernel_fifo :project: Zephyr :content-only: Pipes ***** The microkernel's :dfn:`pipe` object type is an implementation of a traditional anonymous pipe. A pipe allows a task to send a byte stream to another task. For an overview and important information about Pipes, see :ref:`microkernel_pipes`. ------ .. doxygengroup:: microkernel_pipe :project: Zephyr :content-only: Mailboxes ********* The microkernel's :dfn:`mailbox` object type is an implementation of a traditional message queue that allows tasks to exchange messages. For an overview and important information about Mailboxes, see :ref:`microkernel_mailboxes`. ------ .. doxygengroup:: microkernel_mailbox :project: Zephyr :content-only: Memory Maps *********** The microkernel's memory map objects provide dynamic allocation and release of fixed-size memory blocks. For an overview and important information about Memory Maps, see :ref:`microkernel_memory_maps`. ------ .. doxygengroup:: microkernel_memorymap :project: Zephyr :content-only: Memory Pools ************ The microkernel's :dfn:`memory pool` objects provide dynamic allocation and release of variable-size memory blocks. For an overview and important information about Memory Pools, see :ref:`microkernel_memory_pools`. ------ .. doxygengroup:: microkernel_memorypool :project: Zephyr :content-only: Mutexes ******* The microkernel's :dfn:`mutex` objects provide reentrant mutex capabilities with basic priority inheritance. A mutex allows tasks to safely share a resource by ensuring mutual exclusivity while the resource is being accessed by a task. For an overview and important information about Mutexes, see :ref:`microkernel_mutexes`. ------ .. doxygengroup:: microkernel_mutex :project: Zephyr :content-only: Semaphores ********** The microkernel's :dfn:`semaphore` objects are an implementation of traditional counting semaphores. For an overview and important information about Semaphores, see :ref:`microkernel_semaphores`. ------ .. doxygengroup:: microkernel_semaphore :project: Zephyr :content-only: Timers ****** A :dfn:`microkernel timer` allows a task to determine whether or not a specified time limit has been reached while the task is busy performing other work. The timer uses the kernel's system clock, measured in ticks, to monitor the passage of time. For an overview and important information about Timers, see :ref:`microkernel_timers`. ------ .. doxygengroup:: microkernel_timer :project: Zephyr :content-only: Tasks ***** A task is a preemptible thread of execution that implements a portion of an application's processing. It is normally used for 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:`microkernel_tasks`. ------ .. doxygengroup:: microkernel_task :project: Zephyr :content-only: