105 lines
2.9 KiB
Groff
105 lines
2.9 KiB
Groff
.\" $OpenBSD: KASSERT.9,v 1.2 2019/05/10 14:36:21 mpi Exp $
|
|
.\"
|
|
.\" Copyright (c) 2002, 2003 CubeSoft Communications, Inc.
|
|
.\" <http://www.csoft.org>
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
|
|
.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
.\" (INCLUDING BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
|
.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE
|
|
.\" POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.Dd $Mdocdate: May 10 2019 $
|
|
.Dt KASSERT 9
|
|
.Os
|
|
.Sh NAME
|
|
.Nm assert ,
|
|
.Nm KASSERT ,
|
|
.Nm KDASSERT ,
|
|
.Nm KASSERTMSG ,
|
|
.Nm KDASSERTMSG ,
|
|
.Nm CTASSERT
|
|
.Nd kernel assert library routines
|
|
.Sh SYNOPSIS
|
|
.In sys/systm.h
|
|
.Ft "void"
|
|
.Fn assert "CONDITION"
|
|
.Ft "void"
|
|
.Fn KASSERT "CONDITION"
|
|
.Ft "void"
|
|
.Fn KDASSERT "CONDITION"
|
|
.Ft "void"
|
|
.Fn KASSERTMSG "CONDITION" "fmt" "..."
|
|
.Ft "void"
|
|
.Fn KDASSERTMSG "CONDITION" "fmt" "..."
|
|
.Ft "void"
|
|
.Fn CTASSERT "CONDITION"
|
|
.Sh DESCRIPTION
|
|
The
|
|
kernel
|
|
library implements a set of useful functions and macros implementing
|
|
expression verification.
|
|
.Pp
|
|
These macros cause kernel
|
|
.Xr panic 9
|
|
if the given condition evaluates to false.
|
|
.Fn assert
|
|
tests are always compiled in.
|
|
.Fn KASSERT
|
|
and
|
|
.Fn KASSERTMSG
|
|
tests are only included if the kernel has
|
|
.Dv DIAGNOSTIC
|
|
enabled.
|
|
.Fn KDASSERT
|
|
and
|
|
.Fn KDASSERTMSG
|
|
tests are only included if the kernel has
|
|
.Dv DEBUG
|
|
enabled.
|
|
The
|
|
.Fn KASSERTMSG
|
|
and
|
|
.Fn KDASSERTMSG
|
|
macros append
|
|
to the
|
|
.Xr panic 9
|
|
format string the message specified by
|
|
.Fa format
|
|
and its subsequent arguments, similar to
|
|
.Xr printf 9
|
|
functions.
|
|
.Pp
|
|
.Fn CTASSERT
|
|
causes a compile time error if the given condition evaluates to
|
|
false.
|
|
Its main purpose is to verify assertions about type and struct sizes that
|
|
would otherwise make the code fail at run time.
|
|
.Fn CTASSERT
|
|
can be used in global scope or at the start of blocks, where variable
|
|
declarations are allowed.
|
|
.Sh SEE ALSO
|
|
.Xr assert 3 ,
|
|
.Xr panic 9
|
|
.Sh HISTORY
|
|
The
|
|
.Fn KASSERTMSG
|
|
and
|
|
.Fn KDASSERTMSG
|
|
macros are taken from
|
|
.Nx .
|