The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/bhnd/bhnd_debug.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2016 Michael Zhilin <mizhka@gmail.com>
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer,
   12  *    without modification.
   13  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
   14  *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
   15  *    redistribution must be conditioned upon including a substantially
   16  *    similar Disclaimer requirement for further binary redistribution.
   17  *
   18  * NO WARRANTY
   19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   21  * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
   22  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
   23  * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
   24  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
   27  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
   29  * THE POSSIBILITY OF SUCH DAMAGES.
   30  */
   31 
   32 /* $FreeBSD$ */
   33 
   34 /*
   35  * This file provides set of macros for logging:
   36  *  - BHND_<LEVEL> and
   37  *  - BHND_<LEVEL>_DEV
   38  * where LEVEL = {ERROR,WARN,INFO,DEBUG}
   39  *
   40  * BHND_<LEVEL> macros is proxies to printf call and accept same parameters,
   41  * for instance:
   42  *      BHND_INFO("register %d has value %d", reg, val);
   43  *
   44  * BHND_<LEVEL>_DEV macros is proxies to device_printf call and accept
   45  * same parameters, for instance:
   46  *      BHND_INFO_DEV(dev, "register %d has value %d", reg, val);
   47  *
   48  * All macros contains newline char at the end of each call
   49  *
   50  * ERROR, WARN, INFO messages are printed only if:
   51  *      - log message level is lower than BHND_LOGGING (logging threshold)
   52  *
   53  * DEBUG, TRACE messages are printed only if:
   54  *      - bootverbose and
   55  *      - log message level is lower than BHND_LOGGING (logging threshold)
   56  *
   57  * In addition, for debugging purpose log message contains information about
   58  * file name and line number if BHND_LOGGING is more than BHND_INFO_LEVEL
   59  *
   60  * NOTE: macros starting with underscore (_) are private and should be not used
   61  *
   62  * To override logging (for instance, force tracing), you can use:
   63  *  - "options BHND_LOGLEVEL=BHND_TRACE_LEVEL" in kernel configuration
   64  *  - "#define  BHND_LOGGING    BHND_TRACE_LEVEL" in source code file
   65  *
   66  * NOTE: kernel config option doesn't override log level defined on file level,
   67  * so try to avoid "#define     BHND_LOGGING"
   68  */
   69 
   70 #ifndef _BHND_BHND_DEBUG_H_
   71 #define _BHND_BHND_DEBUG_H_
   72 
   73 #include <sys/systm.h>
   74 
   75 #define BHND_ERROR_LEVEL        0x00
   76 #define BHND_ERROR_MSG          "ERROR"
   77 #define BHND_WARN_LEVEL         0x10
   78 #define BHND_WARN_MSG           "!WARN"
   79 #define BHND_INFO_LEVEL         0x20
   80 #define BHND_INFO_MSG           " info"
   81 #define BHND_DEBUG_LEVEL        0x30
   82 #define BHND_DEBUG_MSG          "debug"
   83 #define BHND_TRACE_LEVEL        0x40
   84 #define BHND_TRACE_MSG          "trace"
   85 
   86 #if !(defined(BHND_LOGGING))
   87 #if !(defined(BHND_LOGLEVEL))
   88 /* By default logging will print only INFO+ message*/
   89 #define BHND_LOGGING            BHND_INFO_LEVEL
   90 #else /* defined(BHND_LOGLEVEL) */
   91 /* Kernel configuration specifies logging level */
   92 #define BHND_LOGGING            BHND_LOGLEVEL
   93 #endif /* !(defined(BHND_LOGLEVEL)) */
   94 #endif /* !(defined(BHND_LOGGING)) */
   95 
   96 #if BHND_LOGGING > BHND_INFO_LEVEL
   97 #define _BHND_PRINT(fn, level, fmt, ...)                                \
   98         do {                                                            \
   99                 if (level##LEVEL < BHND_DEBUG_LEVEL || bootverbose)     \
  100                     fn "[BHND " level##MSG "] %s:%d => " fmt "\n",      \
  101                         __func__, __LINE__, ## __VA_ARGS__);            \
  102         } while(0);
  103 #else /* BHND_LOGGING <= BHND_INFO_LEVEL */
  104 #define _BHND_PRINT(fn, level, fmt, ...)                                \
  105         do {                                                            \
  106                 if (level##LEVEL < BHND_DEBUG_LEVEL || bootverbose)     \
  107                     fn "bhnd: " fmt "\n", ## __VA_ARGS__);              \
  108         } while(0);
  109 #endif /* BHND_LOGGING > BHND_INFO_LEVEL */
  110 
  111 #define _BHND_RAWPRINTFN        printf(
  112 #define _BHND_DEVPRINTFN(dev)   device_printf(dev,
  113 
  114 #define _BHND_LOGPRINT(level, fmt, ...)                                 \
  115         _BHND_PRINT(_BHND_RAWPRINTFN, level, fmt, ## __VA_ARGS__)
  116 #define _BHND_DEVPRINT(dev, level, fmt, ...)                            \
  117         _BHND_PRINT(_BHND_DEVPRINTFN(dev), level, fmt, ## __VA_ARGS__)
  118 
  119 #define BHND_ERROR(fmt, ...)                                            \
  120         _BHND_LOGPRINT(BHND_ERROR_, fmt, ## __VA_ARGS__);
  121 #define BHND_ERROR_DEV(dev, fmt, ...)                                   \
  122         _BHND_DEVPRINT(dev, BHND_ERROR_, fmt, ## __VA_ARGS__)
  123 
  124 #if BHND_LOGGING >= BHND_WARN_LEVEL
  125 #define BHND_WARN(fmt, ...)                                             \
  126         _BHND_LOGPRINT(BHND_WARN_, fmt, ## __VA_ARGS__)
  127 #define BHND_WARN_DEV(dev, fmt, ...)                                    \
  128         _BHND_DEVPRINT(dev, BHND_WARN_, fmt, ## __VA_ARGS__)
  129 
  130 #if BHND_LOGGING >= BHND_INFO_LEVEL
  131 #define BHND_INFO(fmt, ...)                                             \
  132         _BHND_LOGPRINT(BHND_INFO_, fmt, ## __VA_ARGS__)
  133 #define BHND_INFO_DEV(dev, fmt, ...)                                    \
  134         _BHND_DEVPRINT(dev, BHND_INFO_, fmt, ## __VA_ARGS__)
  135 
  136 #if BHND_LOGGING >= BHND_DEBUG_LEVEL
  137 #define BHND_DEBUG(fmt, ...)                                            \
  138         _BHND_LOGPRINT(BHND_DEBUG_, fmt, ## __VA_ARGS__)
  139 #define BHND_DEBUG_DEV(dev, fmt, ...)                                   \
  140         _BHND_DEVPRINT(dev, BHND_DEBUG_, fmt, ## __VA_ARGS__)
  141 
  142 #if BHND_LOGGING >= BHND_TRACE_LEVEL
  143 #define BHND_TRACE(fmt, ...)                                            \
  144         _BHND_LOGPRINT(BHND_TRACE_, fmt, ## __VA_ARGS__)
  145 #define BHND_TRACE_DEV(dev, fmt, ...)                                   \
  146         _BHND_DEVPRINT(dev, BHND_TRACE_, fmt, ## __VA_ARGS__)
  147 
  148 #endif /* BHND_LOGGING >= BHND_TRACE_LEVEL */
  149 #endif /* BHND_LOGGING >= BHND_DEBUG_LEVEL */
  150 #endif /* BHND_LOGGING >= BHND_INFO_LEVEL */
  151 #endif /* BHND_LOGGING >= BHND_WARN_LEVEL */
  152 
  153 /*
  154  * Empty defines without device context
  155  */
  156 #if !(defined(BHND_WARN))
  157 #define BHND_WARN(fmt, ...);
  158 #endif
  159 
  160 #if !(defined(BHND_INFO))
  161 #define BHND_INFO(fmt, ...);
  162 #endif
  163 
  164 #if !(defined(BHND_DEBUG))
  165 #define BHND_DEBUG(fmt, ...);
  166 #endif
  167 
  168 #if !(defined(BHND_TRACE))
  169 #define BHND_TRACE(fmt, ...);
  170 #endif
  171 
  172 /*
  173  * Empty defines with device context
  174  */
  175 #if !(defined(BHND_WARN_DEV))
  176 #define BHND_WARN_DEV(dev, fmt, ...);
  177 #endif
  178 
  179 #if !(defined(BHND_INFO_DEV))
  180 #define BHND_INFO_DEV(dev, fmt, ...);
  181 #endif
  182 
  183 #if !(defined(BHND_DEBUG_DEV))
  184 #define BHND_DEBUG_DEV(dev, fmt, ...);
  185 #endif
  186 
  187 #if !(defined(BHND_TRACE_DEV))
  188 #define BHND_TRACE_DEV(dev, fmt, ...);
  189 #endif
  190 
  191 #endif /* _BHND_BHND_DEBUG_H_ */

Cache object: 6a3f46942f98241d048922c7d8a589d7


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.