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 */