NAME
KASSERT
,
KASSERTMSG
, KDASSERT
,
KDASSERTMSG
—
kernel expression verification
macros
SYNOPSIS
void
KASSERT
(expression);
void
KASSERTMSG
(expression,
format,
...);
void
KDASSERT
(expression);
void
KDASSERTMSG
(expression,
format,
...);
DESCRIPTION
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.- The
KASSERT
() andKASSERTMSG
() tests are included only in kernels compiled with theDIAGNOSTIC
configuration option. In a kernel that does not have this configuration option, the macros are defined to be no-ops. - The
KDASSERT
() andKDASSERTMSG
() tests are included only in kernels compiled with theDEBUG
configuration option. TheKDASSERT
() andKASSERT
() macros are identical except for the controlling option (DEBUG
vsDIAGNOSTIC
). Basically,KASSERT
() should be used for light-weight checks andKDASSERT
() 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.
SEE ALSO
AUTHORS
These macros were written by Chris G. Demetriou ⟨cgd@netbsd.org⟩.