1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
  23  */
  24 
  25 /*
  26  * Copyright 2019, Joyent, Inc.
  27  */
  28 
  29 #ifndef _RDSV3_DEBUG_H
  30 #define _RDSV3_DEBUG_H
  31 
  32 #ifdef __cplusplus
  33 extern "C" {
  34 #endif
  35 
  36 #define         LABEL   "RDSV3"
  37 
  38 /*
  39  * warnings, console & syslog buffer.
  40  * For Non recoverable or Major Errors
  41  */
  42 #define RDSV3_LOG_L0    0
  43 
  44 /*
  45  * syslog buffer or RDS trace buffer (console if booted /w debug)
  46  * For additional information on Non recoverable errors and
  47  * warnings/informational message for sys-admin types.
  48  */
  49 #define RDSV3_LOG_L1    1
  50 
  51 /*
  52  * debug only
  53  * for more verbose trace than L1, for e.g. recoverable errors,
  54  * or intersting trace
  55  */
  56 #define RDSV3_LOG_L2    2
  57 
  58 /*
  59  * debug only
  60  * for more verbose trace than L2, for e.g. informational messages
  61  */
  62 #define RDSV3_LOG_L3    3
  63 
  64 /*
  65  * debug only
  66  * for more verbose trace than L3, for e.g. printing function entries...
  67  */
  68 #define RDSV3_LOG_L4    4
  69 
  70 /*
  71  * debug only
  72  * most verbose level. Used only for  excessive trace, for e.g.
  73  * printing structures etc.
  74  */
  75 #define RDSV3_LOG_L5    5
  76 
  77 /*
  78  * debug only
  79  * for messages from softints, taskqs, intr handlers, timeout handlers etc.
  80  */
  81 #define RDSV3_LOG_LINTR 6
  82 
  83 
  84 #ifdef DEBUG
  85 #define RDSV3_DPRINTF_INTR      rdsv3_dprintf_intr
  86 #define RDSV3_DPRINTF5          rdsv3_dprintf5
  87 #define RDSV3_DPRINTF4          rdsv3_dprintf4
  88 #define RDSV3_DPRINTF3          rdsv3_dprintf3
  89 
  90 void rdsv3_dprintf_intr(
  91                 char            *name,
  92                 char            *fmt, ...);
  93 void rdsv3_dprintf5(
  94                 char            *name,
  95                 char            *fmt, ...);
  96 void rdsv3_dprintf4(
  97                 char            *name,
  98                 char            *fmt, ...);
  99 void rdsv3_dprintf3(
 100                 char            *name,
 101                 char            *fmt, ...);
 102 #else
 103 #define RDSV3_DPRINTF_INTR(...) (void)(0)
 104 #define RDSV3_DPRINTF5(...)     (void)(0)
 105 #define RDSV3_DPRINTF4(...)     (void)(0)
 106 #define RDSV3_DPRINTF3(...)     (void)(0)
 107 #endif
 108 
 109 #define RDSV3_DPRINTF2          rdsv3_dprintf2
 110 #define RDSV3_DPRINTF1          rdsv3_dprintf1
 111 #define RDSV3_DPRINTF0          rdsv3_dprintf0
 112 
 113 void rdsv3_dprintf2(
 114                 char            *name,
 115                 char            *fmt, ...);
 116 void rdsv3_dprintf1(
 117                 char            *name,
 118                 char            *fmt, ...);
 119 void rdsv3_dprintf0(
 120                 char            *name,
 121                 char            *fmt, ...);
 122 
 123 void rdsv3_trace(
 124                 char            *name,
 125                 uint8_t         lvl,
 126                 char            *fmt, ...);
 127 
 128 void rdsv3_vprintk(
 129                 char            *name,
 130                 uint8_t         lvl,
 131                 const char      *fmt,
 132                 va_list         ap);
 133 
 134 /* defined in rds_debug.c */
 135 void rdsv3_logging_initialization();
 136 void rdsv3_logging_destroy();
 137 int rdsv3_printk_ratelimit(void);
 138 
 139 #ifdef __cplusplus
 140 }
 141 #endif
 142 
 143 #endif  /* _RDSV3_DEBUG_H */