Preprocessor macro expanding to a command
Space | User/kernel |
Context | Async |
May block | No |
SPL | Higher or equal than SPL of AST or IORQ |
Dynamic memory | No |
#include <SPAD/AC.H>
RETURN_IORQ_CANCELABLE(iorq, handler, chained_iorq);
The behavior of RETURN_IORQ_CANCELABLE(iorq, handler, chained_iorq)
is equivalent to
CALL_IORQ_CANCELABLE(iorq, handler, chained_iorq)
;
RETURN;
RETURN_IORQ_CANCELABLE
is faster than the above sequence, because in most cases IORQ doesn't have to be queued and then extracted from the queue.
There is slight difference between CALL_IORQ_CANCELABLE; RETURN and RETURN_IORQ_CANCELABLE
: CALL_IORQ_CANCELABLE and RETURN queue the IORQ after all ASTs and IORQs on a given SPL, but RETURN_IORQ_CANCELABLE
executes the IORQ directly, jumping the queue. Because order of executing ASTs and IORQs is not defined, code must be written in such a way that this difference doesn't change behavior.