The syntax for ASSERT(9F) is as follows:
void ASSERT(EXPRESSION)
ASSERT() is a macro that is used to halt the execution of the kernel if a condition expected to be true is actually false. ASSERT provides a way for the programmer to validate the assumptions made by a piece of code.
The ASSERT() macro is defined only when the DEBUG compilation symbol is defined. However, when DEBUG is not defined, theASSERT() macro has no effect.
For example, if a driver pointer should be non-NULL and is not, the following assertion can be used to check the code:
ASSERT(ptr != NULL);
If the driver is compiled with DEBUG defined and the assertion fails, a message is printed to the console and the system panics:
panic: assertion failed: ptr != NULL, file: driver.c, line: 56
Because ASSERT(9F) uses the DEBUG compilation symbol, any conditional debugging code should also use DEBUG.
Assertions are an extremely valuable form of active documentation.