k_poll() for a signal is often desired for notification of completion of asynchronous operations, but there are APIs where it may be necessary to invoke "asynchronous" operations from contexts where sleep is disallowed, or before the kernel has been initialized. Extract the general notification solution from the on-off service into a utility that can be used for other APIs. Also move documentation out to a resource management section. Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
26 lines
985 B
ReStructuredText
26 lines
985 B
ReStructuredText
.. _async_notification:
|
|
|
|
Asynchronous Notification APIs
|
|
##############################
|
|
|
|
Zephyr APIs often include :ref:`api_term_async` functions where an
|
|
operation is initiated and the application needs to be informed when it
|
|
completes, and whether it succeeded. Using :cpp:func:`k_poll()` is
|
|
often a good method, but some application architectures may be more
|
|
suited to a callback notification, and operations like enabling clocks
|
|
and power rails may need to be invoked before kernel functions are
|
|
available so a busy-wait for completion may be needed.
|
|
|
|
This API is intended to be embedded within specific subsystems such as
|
|
:ref:`resource_mgmt_onoff` and other APIs that support async
|
|
transactions. The subsystem wrappers are responsible for extracting
|
|
operation-specific data from requests that include a notification
|
|
element, and for invoking callbacks with the parameters required by the
|
|
API.
|
|
|
|
API Reference
|
|
*************
|
|
|
|
.. doxygengroup:: sys_notify_apis
|
|
:project: Zephyr
|