Interface CALL_AST

Preprocessor macro expanding to a command

SpaceUser/kernel
ContextSync/async
May blockNo
SPLAny
Dynamic memoryNo

#include <SPAD/AC.H>

CALL_AST(ast);

Description

This is a preprocessor macro that expands to machine- and compiler-dependent code to call an AST. If current SPL is lower than AST's SPL, the AST function is executed immediatelly, otherwise the AST is queued. There is no way to cancel an AST — once queued, the AST structure must be valid and unchanged until AST function is entered. The structure may be freed or modified in the AST function.

Arguments

Implementation note

ASTs on the same SPL are called in the same order they were queued, but the programmer must not depend on it for correctness. The programmer may depend on this feature for good performance (for example networking packets are queued with this call — the protocols are required to handle out-of-order packets correctly, altough it causes performance degradation).

See also

DECL_AST, CALL_IORQ, KERNEL$SPL