doc: kernel: flatten kernel docs and add API references

Instead of having kernel APIs documentated in a separate page, move the
API references to the object pages and have everything in one place.

Remove the intermediate category page and list all section under the
kernel directly.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2019-01-21 20:53:59 -05:00
commit 2dc4e270b2
26 changed files with 102 additions and 472 deletions

View file

@ -18,169 +18,6 @@ as described in the :ref:`kernel`.
not documenting
.. doxygengroup:: kernel_apis
Clocks
******
Kernel clocks enable threads and ISRs to measure the passage of time
with either normal and high precision.
(See :ref:`clocks_v2`.)
.. doxygengroup:: clock_apis
:project: Zephyr
Timers
******
Timers enable threads to measure the passage of time, and to optionally execute
an action when the timer expires.
(See :ref:`timers_v2`.)
.. doxygengroup:: timer_apis
:project: Zephyr
Memory Slabs
************
Memory slabs enable the dynamic allocation and release of fixed-size
memory blocks.
(See :ref:`memory_slabs_v2`.)
.. doxygengroup:: mem_slab_apis
:project: Zephyr
Memory Pools
************
Memory pools enable the dynamic allocation and release of variable-size
memory blocks.
(See :ref:`memory_pools_v2`.)
.. doxygengroup:: mem_pool_apis
:project: Zephyr
Heap Memory Pool
****************
The heap memory pools enable the dynamic allocation and release of memory
in a :cpp:func:`malloc()`-like manner.
(See :ref:`heap_v2`.)
.. doxygengroup:: heap_apis
:project: Zephyr
Semaphores
**********
Semaphores provide traditional counting semaphore capabilities.
(See :ref:`semaphores_v2`.)
.. doxygengroup:: semaphore_apis
:project: Zephyr
Mutexes
*******
Mutexes provide traditional reentrant mutex capabilities
with basic priority inheritance.
(See :ref:`mutexes_v2`.)
.. doxygengroup:: mutex_apis
:project: Zephyr
FIFOs
*****
FIFOs provide traditional first in, first out (FIFO) queuing of data items
of any size.
(See :ref:`fifos_v2`.)
.. doxygengroup:: fifo_apis
:project: Zephyr
LIFOs
*****
LIFOs provide traditional last in, first out (LIFO) queuing of data items
of any size.
(See :ref:`lifos_v2`.)
.. doxygengroup:: lifo_apis
:project: Zephyr
Stacks
******
Stacks provide traditional last in, first out (LIFO) queuing of 32-bit
data items.
(See :ref:`stacks_v2`.)
.. doxygengroup:: stack_apis
:project: Zephyr
Queues
******
.. doxygengroup:: queue_apis
:project: Zephyr
Message Queues
**************
Message queues provide a simple message queuing mechanism
for fixed-size data items.
(See :ref:`message_queues_v2`.)
.. doxygengroup:: msgq_apis
:project: Zephyr
Mailboxes
*********
Mailboxes provide an enhanced message queuing mechanism
for variable-size messages.
(See :ref:`mailboxes_v2`.)
.. doxygengroup:: mailbox_apis
:project: Zephyr
Pipes
*****
Pipes provide a traditional anonymous pipe mechanism for sending
variable-size chunks of data, in whole or in part.
(See :ref:`pipes_v2`.)
.. doxygengroup:: pipe_apis
:project: Zephyr
Asynchronous Polling
********************
.. doxygengroup:: poll_apis
:project: Zephyr
Interrupt Service Routines (ISRs)
*********************************
An interrupt service routine is a series of instructions that is
executed asynchronously in response to a hardware or software interrupt.
(See :ref:`interrupts_v2`.)
.. doxygengroup:: isr_apis
:project: Zephyr
Atomic Services
***************
The atomic services enable multiple threads and ISRs to read and modify
32-bit variables in an uninterruptible manner.
(See :ref:`atomic_v2`.)
.. important::
All atomic services APIs can be used by both threads and ISRs.
.. doxygengroup:: atomic_apis
:project: Zephyr
Profiling
*********
@ -188,26 +25,6 @@ Profiling
.. doxygengroup:: profiling_apis
:project: Zephyr
Floating Point Services
***********************
The floating point services enable threads to use a board's floating point
registers.
(See :ref:`float_v2`.)
.. doxygengroup:: float_apis
:project: Zephyr
Ring Buffers
************
Ring buffers enable simple first in, first out (FIFO) queuing
of variable-size data items.
(See :ref:`ring_buffers_v2`.)
.. doxygengroup:: ring_buffer_apis
:project: Zephyr
:content-only:
Kernel Version
**************

View file

@ -1,17 +0,0 @@
.. _data_passing_v2:
Data Passing
############
This section describes kernel services for passing data
between different threads, or between an ISR and a thread.
.. toctree::
:maxdepth: 2
fifos.rst
lifos.rst
stacks.rst
message_queues.rst
mailboxes.rst
pipes.rst

View file

@ -154,17 +154,10 @@ Configuration Options
Related configuration options:
* None.
* None
APIs
****
API Reference
*************
The following fifo APIs are provided by :file:`kernel.h`:
* :c:macro:`K_FIFO_DEFINE`
* :cpp:func:`k_fifo_init()`
* :cpp:func:`k_fifo_alloc_put()`
* :cpp:func:`k_fifo_put()`
* :cpp:func:`k_fifo_put_list()`
* :cpp:func:`k_fifo_put_slist()`
* :cpp:func:`k_fifo_get()`
.. doxygengroup:: fifo_apis
:project: Zephyr

View file

@ -144,12 +144,8 @@ Related configuration options:
* None.
APIs
****
API Reference
*************
The following lifo APIs are provided by :file:`kernel.h`:
* :c:macro:`K_LIFO_DEFINE`
* :cpp:func:`k_lifo_init()`
* :cpp:func:`k_lifo_put()`
* :cpp:func:`k_lifo_get()`
.. doxygengroup:: lifo_apis
:project: Zephyr

View file

@ -630,15 +630,8 @@ Related configuration options:
* :option:`CONFIG_NUM_MBOX_ASYNC_MSGS`
APIs
****
API Reference
*************
The following APIs for a mailbox are provided by :file:`kernel.h`:
* :c:macro:`K_MBOX_DEFINE`
* :cpp:func:`k_mbox_init()`
* :cpp:func:`k_mbox_put()`
* :cpp:func:`k_mbox_async_put()`
* :cpp:func:`k_mbox_get()`
* :cpp:func:`k_mbox_data_get()`
* :cpp:func:`k_mbox_data_block_get()`
.. doxygengroup:: mailbox_apis
:project: Zephyr

View file

@ -199,16 +199,8 @@ Related configuration options:
* None.
APIs
****
API Reference
*************
The following message queue APIs are provided by :file:`kernel.h`:
* :c:macro:`K_MSGQ_DEFINE`
* :cpp:func:`k_msgq_init()`
* :cpp:func:`k_msgq_put()`
* :cpp:func:`k_msgq_get()`
* :cpp:func:`k_msgq_peek()`
* :cpp:func:`k_msgq_purge()`
* :cpp:func:`k_msgq_num_used_get()`
* :cpp:func:`k_msgq_num_free_get()`
.. doxygengroup:: msgq_apis
:project: Zephyr

View file

@ -174,13 +174,8 @@ Related configuration options:
* :option:`CONFIG_NUM_PIPE_ASYNC_MSGS`
APIs
****
API Reference
*************
The following message queue APIs are provided by :file:`kernel.h`:
* :c:macro:`K_PIPE_DEFINE`
* :cpp:func:`k_pipe_init()`
* :cpp:func:`k_pipe_put()`
* :cpp:func:`k_pipe_get()`
* :cpp:func:`k_pipe_block_put()`
.. doxygengroup:: pipe_apis
:project: Zephyr

View file

@ -134,12 +134,9 @@ Related configuration options:
* None.
APIs
****
API Reference
*************
The following stack APIs are provided by :file:`kernel.h`:
.. doxygengroup:: stack_apis
:project: Zephyr
* :c:macro:`K_STACK_DEFINE`
* :cpp:func:`k_stack_init()`
* :cpp:func:`k_stack_push()`
* :cpp:func:`k_stack_pop()`

View file

@ -26,9 +26,24 @@ include: fitness wearables, smart watches, and IoT wireless gateways.
:maxdepth: 2
threads/index.rst
timing/timing.rst
memory/memory.rst
synchronization/synchronization.rst
data_passing/data_passing.rst
other/interrupts.rst
usermode/usermode.rst
other/other.rst
synchronization/semaphores.rst
synchronization/mutexes.rst
data_passing/fifos.rst
data_passing/lifos.rst
data_passing/stacks.rst
data_passing/message_queues.rst
data_passing/mailboxes.rst
data_passing/pipes.rst
timing/clocks.rst
other/cpu_idle.rst
timing/timers.rst
memory/slabs.rst
memory/pools.rst
memory/heap.rst
other/atomic.rst
other/polling.rst
other/float.rst
other/ring_buffers.rst
other/cxx_support.rst

View file

@ -129,10 +129,8 @@ Related configuration options:
* :option:`CONFIG_HEAP_MEM_POOL_SIZE`
APIs
****
API Reference
*************
The following heap memory pool APIs are provided by :file:`kernel.h`:
* :cpp:func:`k_malloc()`
* :cpp:func:`k_free()`
.. doxygengroup:: heap_apis
:project: Zephyr

View file

@ -1,14 +0,0 @@
.. _memory_v2:
Memory Allocation
#################
This section describes kernel services that allow threads to dynamically
allocate memory.
.. toctree::
:maxdepth: 2
slabs.rst
pools.rst
heap.rst

View file

@ -200,15 +200,9 @@ Use a memory pool to allocate memory in variable-size blocks.
Use memory pool blocks when sending large amounts of data from one thread
to another, to avoid unnecessary copying of the data.
APIs
****
API Reference
*************
The following memory pool APIs are provided by :file:`kernel.h`:
.. doxygengroup:: mem_pool_apis
:project: Zephyr
* :c:macro:`K_MEM_POOL_DEFINE`
* :cpp:func:`k_mem_pool_alloc()`
* :cpp:func:`k_mem_pool_free()`
* :cpp:func:`k_mem_pool_malloc()`
* :cpp:func:`k_free()`
* :cpp:func:`k_thread_resource_pool_assign()`
* :cpp:func:`k_thread_system_pool_assign()`

View file

@ -139,16 +139,10 @@ Configuration Options
Related configuration options:
* None.
* None
APIs
****
API Reference
*************
The following memory slab APIs are provided by :file:`kernel.h`:
* :c:macro:`K_MEM_SLAB_DEFINE`
* :cpp:func:`k_mem_slab_init()`
* :cpp:func:`k_mem_slab_alloc()`
* :cpp:func:`k_mem_slab_free()`
* :cpp:func:`k_mem_slab_num_used_get()`
* :cpp:func:`k_mem_slab_num_free_get()`
.. doxygengroup:: mem_slab_apis
:project: Zephyr

View file

@ -110,27 +110,12 @@ Related configuration options:
* :option:`CONFIG_ATOMIC_OPERATIONS_CUSTOM`
* :option:`CONFIG_ATOMIC_OPERATIONS_C`
APIs
****
API Reference
*************
The following atomic operation APIs are provided by :file:`atomic.h`:
.. important::
All atomic services APIs can be used by both threads and ISRs.
.. doxygengroup:: atomic_apis
:project: Zephyr
* :c:macro:`ATOMIC_INIT`
* :c:macro:`ATOMIC_DEFINE`
* :cpp:func:`atomic_get()`
* :cpp:func:`atomic_set()`
* :cpp:func:`atomic_clear()`
* :cpp:func:`atomic_add()`
* :cpp:func:`atomic_sub()`
* :cpp:func:`atomic_inc()`
* :cpp:func:`atomic_dec()`
* :cpp:func:`atomic_and()`
* :cpp:func:`atomic_or()`
* :cpp:func:`atomic_xor()`
* :cpp:func:`atomic_nand()`
* :cpp:func:`atomic_cas()`
* :cpp:func:`atomic_set_bit()`
* :cpp:func:`atomic_clear_bit()`
* :cpp:func:`atomic_test_bit()`
* :cpp:func:`atomic_test_and_set_bit()`
* :cpp:func:`atomic_test_and_clear_bit()`

View file

@ -134,10 +134,8 @@ i.e. not doing any real work, like in this example below.
**Do not use these APIs unless absolutely necessary.** In a normal system,
the idle thread takes care of power management, including CPU idling.
APIs
****
API Reference
*************
The following CPU idling APIs are provided by :file:`kernel.h`:
* :cpp:func:`k_cpu_idle()`
* :cpp:func:`k_cpu_atomic_idle()`
.. doxygengroup:: cpu_idle_apis
:project: Zephyr

View file

@ -172,10 +172,9 @@ during context switches, as described above.
Use the :option:`CONFIG_SSE` configuration option to enable support for
SSEx instructions (x86 only).
APIs
****
API Reference
*************
The following floating point APIs (x86 only) are provided by :file:`kernel.h`:
.. doxygengroup:: float_apis
:project: Zephyr
* :cpp:func:`k_float_enable()`
* :cpp:func:`k_float_disable()`

View file

@ -437,25 +437,8 @@ Related configuration options:
Additional architecture-specific and device-specific configuration options
also exist.
APIs
****
API Reference
*************
The following interrupt-related APIs are provided by :file:`irq.h`:
* :c:macro:`IRQ_CONNECT`
* :c:macro:`IRQ_DIRECT_CONNECT`
* :c:macro:`ISR_DIRECT_HEADER`
* :c:macro:`ISR_DIRECT_FOOTER`
* :c:macro:`ISR_DIRECT_PM`
* :c:macro:`ISR_DIRECT_DECLARE`
* :cpp:func:`irq_lock()`
* :cpp:func:`irq_unlock()`
* :cpp:func:`irq_enable()`
* :cpp:func:`irq_disable()`
* :cpp:func:`irq_is_enabled()`
* :cpp:func:`irq_connect_dynamic()`
The following interrupt-related APIs are provided by :file:`kernel.h`:
* :cpp:func:`k_is_in_isr()`
* :cpp:func:`k_is_preempt_thread`
.. doxygengroup:: isr_apis
:project: Zephyr

View file

@ -1,17 +0,0 @@
.. _other_v2:
Other Services
##############
This section describes other services provided by the kernel.
.. toctree::
:maxdepth: 1
interrupts.rst
atomic.rst
polling.rst
ring_buffers.rst
float.rst
cxx_support.rst
cpu_idle.rst

View file

@ -280,14 +280,8 @@ Related configuration options:
* :option:`CONFIG_POLL`
APIs
****
API Reference
*************
The following polling APIs are provided by :file:`kernel.h`:
* :c:macro:`K_POLL_EVENT_INITIALIZER`
* :c:macro:`K_POLL_EVENT_STATIC_INITIALIZER`
* :cpp:func:`k_poll_event_init()`
* :cpp:func:`k_poll()`
* :cpp:func:`k_poll_signal_init()`
* :cpp:func:`k_poll_signal_raise()`
.. doxygengroup:: poll_apis
:project: Zephyr

View file

@ -303,22 +303,10 @@ operations on the ring buffer's memory. For example:
...
}
APIs
****
API Reference
*************
The following ring buffer APIs are provided by :file:`include/ring_buffer.h`:
* :cpp:func:`RING_BUF_ITEM_DECLARE_POW2()`
* :cpp:func:`RING_BUF_ITEM_DECLARE_SIZE()`
* :cpp:func:`RING_BUF_DECLARE_SIZE()`
* :cpp:func:`ring_buf_init()`
* :cpp:func:`ring_buf_is_empty()`
* :cpp:func:`ring_buf_space_get()`
* :cpp:func:`ring_buf_item_put()`
* :cpp:func:`ring_buf_item_get()`
* :cpp:func:`ring_buf_put()`
* :cpp:func:`ring_buf_put_claim()`
* :cpp:func:`ring_buf_put_finish()`
* :cpp:func:`ring_buf_get()`
* :cpp:func:`ring_buf_get_claim()`
* :cpp:func:`ring_buf_get_finish()`
.. doxygengroup:: ring_buffer_apis
:project: Zephyr

View file

@ -161,12 +161,9 @@ Related configuration options:
* :option:`CONFIG_PRIORITY_CEILING`
APIs
****
API Reference
*************
The following mutex APIs are provided by :file:`kernel.h`:
.. doxygengroup:: mutex_apis
:project: Zephyr
* :c:macro:`K_MUTEX_DEFINE`
* :cpp:func:`k_mutex_init()`
* :cpp:func:`k_mutex_lock()`
* :cpp:func:`k_mutex_unlock()`

View file

@ -125,14 +125,9 @@ Related configuration options:
* None.
APIs
****
API Reference
**************
The following semaphore APIs are provided by :file:`kernel.h`:
.. doxygengroup:: semaphore_apis
:project: Zephyr
* :c:macro:`K_SEM_DEFINE`
* :cpp:func:`k_sem_init()`
* :cpp:func:`k_sem_give()`
* :cpp:func:`k_sem_take()`
* :cpp:func:`k_sem_reset()`
* :cpp:func:`k_sem_count_get()`

View file

@ -1,13 +0,0 @@
.. _synchronization_v2:
Synchronization
###############
This section describes kernel services for synchronizing the operation
of different threads, or the operation of an ISR and a thread.
.. toctree::
:maxdepth: 2
semaphores.rst
mutexes.rst

View file

@ -154,20 +154,8 @@ Related configuration options:
* :option:`CONFIG_SYS_CLOCK_TICKS_PER_SEC`
APIs
****
API Reference
*************
The following kernel clock APIs are provided by :file:`kernel.h`:
* :cpp:func:`k_uptime_get()`
* :cpp:func:`k_uptime_get_32()`
* :cpp:func:`k_uptime_delta()`
* :cpp:func:`k_uptime_delta_32()`
* :cpp:func:`k_cycle_get_32()`
* :c:macro:`SYS_CLOCK_HW_CYCLES_TO_NS`
* :c:macro:`K_NO_WAIT`
* :c:macro:`K_MSEC`
* :c:macro:`K_SECONDS`
* :c:macro:`K_MINUTES`
* :c:macro:`K_HOURS`
* :c:macro:`K_FOREVER`
.. doxygengroup:: clock_apis
:project: Zephyr

View file

@ -235,17 +235,10 @@ Configuration Options
Related configuration options:
* None.
* None
APIs
****
API Reference
*************
The following timer APIs are provided by :file:`kernel.h`:
* :c:macro:`K_TIMER_DEFINE`
* :cpp:func:`k_timer_init()`
* :cpp:func:`k_timer_start()`
* :cpp:func:`k_timer_stop()`
* :cpp:func:`k_timer_status_get()`
* :cpp:func:`k_timer_status_sync()`
* :cpp:func:`k_timer_remaining_get()`
.. doxygengroup:: timer_apis
:project: Zephyr

View file

@ -1,13 +0,0 @@
.. _timing_v2:
Timing
######
This section describes the kernel's time-based services, such as
specifying time delays or for measuring the passage of time.
.. toctree::
:maxdepth: 2
clocks.rst
timers.rst