xref: /freebsd/sys/geom/geom_dbg.h (revision ac03832ef3afa26cc8e23bf5cfeaa32501b21c3e)
1*ac03832eSConrad Meyer /*-
2*ac03832eSConrad Meyer  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3*ac03832eSConrad Meyer  *
4*ac03832eSConrad Meyer  * Copyright (c) 2019 Conrad Meyer <cem@FreeBSD.org>
5*ac03832eSConrad Meyer  *
6*ac03832eSConrad Meyer  * Redistribution and use in source and binary forms, with or without
7*ac03832eSConrad Meyer  * modification, are permitted provided that the following conditions
8*ac03832eSConrad Meyer  * are met:
9*ac03832eSConrad Meyer  * 1. Redistributions of source code must retain the above copyright
10*ac03832eSConrad Meyer  *    notice, this list of conditions and the following disclaimer.
11*ac03832eSConrad Meyer  * 2. Redistributions in binary form must reproduce the above copyright
12*ac03832eSConrad Meyer  *    notice, this list of conditions and the following disclaimer in the
13*ac03832eSConrad Meyer  *    documentation and/or other materials provided with the distribution.
14*ac03832eSConrad Meyer  *
15*ac03832eSConrad Meyer  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*ac03832eSConrad Meyer  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*ac03832eSConrad Meyer  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*ac03832eSConrad Meyer  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19*ac03832eSConrad Meyer  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*ac03832eSConrad Meyer  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*ac03832eSConrad Meyer  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*ac03832eSConrad Meyer  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*ac03832eSConrad Meyer  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*ac03832eSConrad Meyer  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*ac03832eSConrad Meyer  * SUCH DAMAGE.
26*ac03832eSConrad Meyer  *
27*ac03832eSConrad Meyer  * $FreeBSD$
28*ac03832eSConrad Meyer  */
29*ac03832eSConrad Meyer 
30*ac03832eSConrad Meyer #pragma once
31*ac03832eSConrad Meyer 
32*ac03832eSConrad Meyer #ifdef _KERNEL
33*ac03832eSConrad Meyer 
34*ac03832eSConrad Meyer #define _GEOM_DEBUG(classname, ctrlvar, loglvl, biop, formatstr, ...)	\
35*ac03832eSConrad Meyer do {									\
36*ac03832eSConrad Meyer 	const int __control = (ctrlvar);				\
37*ac03832eSConrad Meyer 	const int __level = (loglvl);					\
38*ac03832eSConrad Meyer 									\
39*ac03832eSConrad Meyer 	if (__control < __level)					\
40*ac03832eSConrad Meyer 		break;							\
41*ac03832eSConrad Meyer 									\
42*ac03832eSConrad Meyer 	g_dbg_printf((classname), (__control > 0) ? __level : -1,	\
43*ac03832eSConrad Meyer 	    (biop), ": " formatstr, ## __VA_ARGS__);			\
44*ac03832eSConrad Meyer } while (0)
45*ac03832eSConrad Meyer 
46*ac03832eSConrad Meyer void g_dbg_printf(const char *classname, int lvl, struct bio *bp,
47*ac03832eSConrad Meyer     const char *format, ...) __printflike(4, 5);
48*ac03832eSConrad Meyer 
49*ac03832eSConrad Meyer #endif /* _KERNEL */
50