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, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*
  23  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 /*
  28  * Copyright 2019, Joyent, Inc.
  29  */
  30 
  31 #ifndef _SYS_IB_IBTL_IMPL_IBTL_UTIL_H
  32 #define _SYS_IB_IBTL_IMPL_IBTL_UTIL_H
  33 
  34 /*
  35  * ibtl_util.h
  36  *
  37  * All data structures and function prototypes that serve as helper
  38  * routines for IBTF implementation.
  39  */
  40 
  41 #ifdef __cplusplus
  42 extern "C" {
  43 #endif
  44 
  45 #include <sys/ib/ib_types.h>
  46 #include <sys/varargs.h>
  47 
  48 /*
  49  * Time Related Functions
  50  *
  51  *   ibt_usec2ib
  52  *      This function converts the standard input time in microseconds to
  53  *      IB's 6 bits of timeout exponent, calculated based on
  54  *      time = 4.096us * 2 ^ exp.
  55  *
  56  *   ibt_ib2usec
  57  *      This function converts the input IB timeout exponent (6 bits) to
  58  *      standard time in microseconds, calculated based on
  59  *      time = 4.096us * 2 ^ exp.
  60  */
  61 ib_time_t       ibt_usec2ib(clock_t microsecs);
  62 clock_t         ibt_ib2usec(ib_time_t ib_time);
  63 
  64 
  65 /*
  66  * IB logging, debug and console message handling
  67  */
  68 
  69 
  70 /*
  71  * warnings, console & syslog buffer.
  72  * For Non recoverable or Major Errors
  73  */
  74 #define IBTF_LOG_L0     0
  75 
  76 /*
  77  * syslog buffer or IBTF trace buffer (console if booted /w debug)
  78  * For additional information on Non recoverable errors and
  79  * warnings/informational message for sys-admin types.
  80  */
  81 #define IBTF_LOG_L1     1
  82 
  83 /*
  84  * debug only
  85  * for more verbose trace than L1, for e.g. recoverable errors,
  86  * or intersting trace
  87  */
  88 #define IBTF_LOG_L2     2
  89 
  90 /*
  91  * debug only
  92  * for more verbose trace than L2, for e.g. printing function entries....
  93  */
  94 #define IBTF_LOG_L3     3
  95 
  96 /*
  97  * debug only
  98  * for more verbose trace than L3, for e.g. printing minor function entries...
  99  */
 100 #define IBTF_LOG_L4     4
 101 
 102 /*
 103  * debug only
 104  * most verbose level. Used only for  excessive trace, for e.g.
 105  * printing structures etc.
 106  */
 107 #define IBTF_LOG_L5     5
 108 
 109 /*
 110  * debug only
 111  * for messages from softints, taskqs, intr handlers, timeout handlers etc.
 112  * Only gets printed if "ibtl_allow_intr_msgs" is set
 113  */
 114 #define IBTF_LOG_LINTR  6
 115 
 116 
 117 #ifdef DEBUG
 118 #define IBTF_DPRINTF_LINTR      ibtl_dprintf_intr
 119 #define IBTF_DPRINTF_L5         ibtl_dprintf5
 120 #define IBTF_DPRINTF_L4         ibtl_dprintf4
 121 #define IBTF_DPRINTF_L3         ibtl_dprintf3
 122 
 123 void ibtl_dprintf_intr(
 124                 char            *name,
 125                 char            *fmt, ...);
 126 void ibtl_dprintf5(
 127                 char            *name,
 128                 char            *fmt, ...);
 129 void ibtl_dprintf4(
 130                 char            *name,
 131                 char            *fmt, ...);
 132 void ibtl_dprintf3(
 133                 char            *name,
 134                 char            *fmt, ...);
 135 #else
 136 #define IBTF_DPRINTF_LINTR(...) (void)(0)
 137 #define IBTF_DPRINTF_L5(...)    (void)(0)
 138 #define IBTF_DPRINTF_L4(...)    (void)(0)
 139 #define IBTF_DPRINTF_L3(...)    (void)(0)
 140 #endif
 141 
 142 #define IBTF_DPRINTF_L2 ibtl_dprintf2
 143 #define IBTF_DPRINTF_L1 ibtl_dprintf1
 144 #define IBTF_DPRINTF_L0 ibtl_dprintf0
 145 
 146 void ibtl_dprintf2(
 147                 char            *name,
 148                 char            *fmt, ...);
 149 void ibtl_dprintf1(
 150                 char            *name,
 151                 char            *fmt, ...);
 152 void ibtl_dprintf0(
 153                 char            *name,
 154                 char            *fmt, ...);
 155 
 156 #ifdef __cplusplus
 157 }
 158 #endif
 159 
 160 #endif /* _SYS_IB_IBTL_IMPL_IBTL_UTIL_H */