Preprocessor macro expanding to a function header
| Space | User/kernel |
| Context | Async |
| May block | No |
| SPL | Any |
| Dynamic memory | No |
#include <ARCH/AC.H>
DECL_AST(function_name, spl, structure){
  function code...
  RETURN or RETURN_AST or RETURN_IORQ or RETURN_IORQ_LSTAT or RETURN_IORQ_CANCELABLE
} Declares function usable for AST handler. Macro DECL_AST expands to machine-dependent and compiler-dependent function header. The function must return with one of RETURN* macros (they expand to machine- and compiler-dependent return code). There may be more RETURN statements. The function has one argument, RQ, that points to AST being called.
AST.fn and IORQ.fn. The return type, arguments and attributes of the function are machine- and compiler-dependent. RQ that has this type. The structure argument doesn't have effect on behavior of code, it is just a convenience, so that the programmer doesn't have to cast RQ argument each time it is used.