doc/services/notify.rst
.. _async_notification:
Asynchronous Notifications ##########################
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 :c: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.
A limitation is that this API is not suitable for :ref:syscalls
because:
sys_notify is not a kernel object;CONTAINER_OF in the implementing function;Where a notification is required for an asynchronous operation invoked
from a user mode thread the subsystem or driver should provide a syscall
API that uses :c:struct:k_poll_signal for notification.
API Reference
.. doxygengroup:: sys_notify_apis