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 #ifndef _SYS_IB_IBTL_IMPL_IBTL_UTIL_H
  28 #define _SYS_IB_IBTL_IMPL_IBTL_UTIL_H
  29 
  30 #pragma ident   "%Z%%M% %I%     %E% SMI"
  31 
  32 /*
  33  * ibtl_util.h
  34  *
  35  * All data structures and function prototypes that serve as helper
  36  * routines for IBTF implementation.
  37  */
  38 
  39 #ifdef __cplusplus
  40 extern "C" {
  41 #endif
  42 
  43 #include <sys/ib/ib_types.h>
  44 #include <sys/varargs.h>
  45 
  46 /*
  47  * Time Related Functions
  48  *
  49  *   ibt_usec2ib
  50  *      This function converts the standard input time in microseconds to
  51  *      IB's 6 bits of timeout exponent, calculated based on
  52  *      time = 4.096us * 2 ^ exp.
  53  *
  54  *   ibt_ib2usec
  55  *      This function converts the input IB timeout exponent (6 bits) to
  56  *      standard time in microseconds, calculated based on
  57  *      time = 4.096us * 2 ^ exp.
  58  */
  59 ib_time_t       ibt_usec2ib(clock_t microsecs);
  60 clock_t         ibt_ib2usec(ib_time_t ib_time);
  61 
  62 
  63 /*
  64  * IB logging, debug and console message handling
  65  */
  66 
  67 
  68 /*
  69  * warnings, console & syslog buffer.
  70  * For Non recoverable or Major Errors
  71  */
  72 #define IBTF_LOG_L0     0
  73 
  74 /*
  75  * syslog buffer or IBTF trace buffer (console if booted /w debug)
  76  * For additional information on Non recoverable errors and
  77  * warnings/informational message for sys-admin types.
  78  */
  79 #define IBTF_LOG_L1     1
  80 
  81 /*
  82  * debug only
  83  * for more verbose trace than L1, for e.g. recoverable errors,
  84  * or intersting trace
  85  */
  86 #define IBTF_LOG_L2     2
  87 
  88 /*
  89  * debug only
  90  * for more verbose trace than L2, for e.g. printing function entries....
  91  */
  92 #define IBTF_LOG_L3     3
  93 
  94 /*
  95  * debug only
  96  * for more verbose trace than L3, for e.g. printing minor function entries...
  97  */
  98 #define IBTF_LOG_L4     4
  99 
 100 /*
 101  * debug only
 102  * most verbose level. Used only for  excessive trace, for e.g.
 103  * printing structures etc.
 104  */
 105 #define IBTF_LOG_L5     5
 106 
 107 /*
 108  * debug only
 109  * for messages from softints, taskqs, intr handlers, timeout handlers etc.
 110  * Only gets printed if "ibtl_allow_intr_msgs" is set
 111  */
 112 #define IBTF_LOG_LINTR  6
 113 
 114 
 115 #ifdef DEBUG
 116 #define IBTF_DPRINTF_LINTR      ibtl_dprintf_intr
 117 #define IBTF_DPRINTF_L5         ibtl_dprintf5
 118 #define IBTF_DPRINTF_L4         ibtl_dprintf4
 119 #define IBTF_DPRINTF_L3         ibtl_dprintf3
 120 
 121 void ibtl_dprintf_intr(
 122                 char            *name,
 123                 char            *fmt, ...);
 124 void ibtl_dprintf5(
 125                 char            *name,
 126                 char            *fmt, ...);
 127 void ibtl_dprintf4(
 128                 char            *name,
 129                 char            *fmt, ...);
 130 void ibtl_dprintf3(
 131                 char            *name,
 132                 char            *fmt, ...);
 133 #else
 134 #define IBTF_DPRINTF_LINTR      0 &&
 135 #define IBTF_DPRINTF_L5         0 &&
 136 #define IBTF_DPRINTF_L4         0 &&
 137 #define IBTF_DPRINTF_L3         0 &&
 138 #endif
 139 
 140 #define IBTF_DPRINTF_L2 ibtl_dprintf2
 141 #define IBTF_DPRINTF_L1 ibtl_dprintf1
 142 #define IBTF_DPRINTF_L0 ibtl_dprintf0
 143 
 144 void ibtl_dprintf2(
 145                 char            *name,
 146                 char            *fmt, ...);
 147 void ibtl_dprintf1(
 148                 char            *name,
 149                 char            *fmt, ...);
 150 void ibtl_dprintf0(
 151                 char            *name,
 152                 char            *fmt, ...);
 153 
 154 #ifdef __cplusplus
 155 }
 156 #endif
 157 
 158 #endif /* _SYS_IB_IBTL_IMPL_IBTL_UTIL_H */