Index: sys/dev/bhnd/bhnd.h =================================================================== --- sys/dev/bhnd/bhnd.h +++ sys/dev/bhnd/bhnd.h @@ -39,6 +39,7 @@ #include "bhnd_ids.h" #include "bhnd_types.h" +#include "bhnd_debug.h" #include "bhnd_bus_if.h" extern devclass_t bhnd_devclass; Index: sys/dev/bhnd/bhnd_debug.h =================================================================== --- /dev/null +++ sys/dev/bhnd/bhnd_debug.h @@ -0,0 +1,99 @@ +/*- + * Copyright (c) 2016 Michael Zhilin + * All rights reserved. + * + * 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, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any + * redistribution must be conditioned upon including a substantially + * similar Disclaimer requirement for further binary redistribution. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR 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 DAMAGES. + */ + +#pragma once +#include + +#define BHND_WARN_LEVEL 0x00 +#define BHND_INFO_LEVEL 0x10 +#define BHND_DEBUG_LEVEL 0x20 +#define BHND_TRACE_LEVEL 0x30 + +#if !(defined(BHND_LOGGING)) +#define BHND_LOGGING BHND_DEBUG_LEVEL +#endif + +#if BHND_LOGGING >= BHND_DEBUG_LEVEL +#define BHND_LOGPRINT(a, level) {printf("[BHND %s] => %s:%d: ", level, __func__, __LINE__); printf a; printf("\n");} +#define BHND_DEVPRINT(dev, a, level) {device_printf(dev, "[BHND %s] => %s:%d: ", level, __func__, __LINE__); printf a; printf("\n");} +#else +#define BHND_LOGPRINT(a, level) {printf("bhnd: "), printf a; printf("\n");} +#define BHND_DEVPRINT(dev, a, level) {device_printf(dev, "bhnd: "), printf a; printf("\n");} +#endif + +#define BHND_ERROR(a) BHND_LOGPRINT(a, "ERROR") +#define BHND_ERROR_DEV(dev, a) BHND_DEVPRINT(dev, a, "ERROR") + +#if BHND_LOGGING >= BHND_WARN_LEVEL +#define BHND_WARN(a) BHND_LOGPRINT(a, "!!!!!") +#define BHND_WARN_DEV(dev, a) BHND_DEVPRINT(dev, a,"!!!!!") + +#if BHND_LOGGING >= BHND_INFO_LEVEL +#define BHND_INFO(a) BHND_LOGPRINT(a, " info") +#define BHND_INFO_DEV(dev, a) BHND_DEVPRINT(dev, a," info") + +#if BHND_LOGGING >= BHND_DEBUG_LEVEL +#define BHND_DEBUG(a) if(bootverbose) BHND_LOGPRINT(a, "debug") +#define BHND_DEBUG_DEV(dev, a) if(bootverbose) BHND_DEVPRINT(dev, a,"debug") + +#if BHND_LOGGING >= BHND_TRACE_LEVEL +#define BHND_TRACE(a) if(bootverbose) BHND_LOGPRINT(a, "trace") +#define BHND_TRACE_DEV(dev, a) if(bootverbose) BHND_DEVPRINT(dev, a,"trace") + +#endif +#endif +#endif +#endif + +//Empty +#if !(defined(BHND_WARN)) +#define BHND_WARN(a); +#endif +#if !(defined(BHND_INFO)) +#define BHND_INFO(a); +#endif +#if !(defined(BHND_DEBUG)) +#define BHND_DEBUG(a); +#endif +#if !(defined(BHND_TRACE)) +#define BHND_TRACE(a); +#endif + +#if !(defined(BHND_WARN_DEV)) +#define BHND_WARN_DEV(dev, a); +#endif +#if !(defined(BHND_INFO_DEV)) +#define BHND_INFO_DEV(dev, a); +#endif +#if !(defined(BHND_DEBUG_DEV)) +#define BHND_DEBUG_DEV(dev, a); +#endif +#if !(defined(BHND_TRACE_DEV)) +#define BHND_TRACE_DEV(dev, a); +#endif