| KASSERT(9) | Kernel Developer's Manual | KASSERT(9) |
KASSERT,
KASSERTMSG, KDASSERT,
KDASSERTMSG — kernel
expression verification macros
void
KASSERT(expression);
void
KASSERTMSG(expression,
format,
...);
void
KDASSERT(expression);
void
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 checks.
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.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 specified by format and its
subsequent arguments, similar to
printf(9) functions.
These macros were written by Chris G. Demetriou ⟨cgd@netbsd.org⟩.
| September 27, 2011 | NetBSD 11.0 |