KASSERT(9) BSD Kernel Developer's Manual KASSERT(9)
KASSERT, KASSERTMSG, KDASSERT, KDASSERTMSG -- kernel expression verification macros
KASSERTMSG(expression, format, ...);
KDASSERTMSG(expression, format, ...);
These machine independent assertion-checking macros cause a kernel panic(9) if the given
expression evaluates to false. Two compile-time options(4) define the behavior of the
1. The KASSERT() and KASSERTMSG() tests are included only in kernels compiled with the
DIAGNOSTIC configuration option. In a kernel that does not have this configuration
option, the macros are defined to be no-ops.
2. The KDASSERT() and KDASSERTMSG() tests are included only in kernels compiled with the
DEBUG configuration option. The KDASSERT() and KASSERT() macros are identical except
for the controlling option (DEBUG vs DIAGNOSTIC). Basically, KASSERT() should be
used for light-weight checks and KDASSERT() should be used for heavier ones.
Callers should not rely on the side effects of expression because, depending on the kernel
compile options mentioned above, expression might not be evaluated at all.
The panic message will display the style of assertion (debugging vs. diagnostic), the
expression that failed and the filename, and line number the failure happened on. The
KASSERTMSG() and KDASSERTMSG() macros append to the panic(9) format string the message spec-
ified by format and its subsequent arguments, similar to printf(9) functions.
config(1), options(4), CTASSERT(9), panic(9), printf(9)
These macros were written by Chris G. Demetriou <email@example.com>.
BSD September 27, 2011 BSD