xref: /illumos-gate/usr/src/uts/common/sys/ib/ibtl/impl/ibtl_util.h (revision 581cede61ac9c14d8d4ea452562a567189eead78)
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 */
159