Use ASSERT() to Catch Invalid
Assumptions

Assertions are an extremely valuable form of active documentation. The
syntax for
ASSERT(9F) is
as follows:

void ASSERT(EXPRESSION)

The ASSERT() macro halts the execution of the kernel
if a condition that is 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. When
DEBUG is not defined, the ASSERT() macro
has no effect.

The following example assertion tests the assumption that a particular
pointer value is not NULL:

ASSERT(ptr != NULL);

If the driver has been compiled with DEBUG, and if
the value of ptr is NULL at this point
in execution, then the following panic message is printed to the console:

panic: assertion failed: ptr != NULL, file: driver.c, line: 56

Note –

Because ASSERT(9F) uses the DEBUG compilation
symbol, any conditional debugging code should also use DEBUG.