1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61#ifndef _DEBUG_H
62#define _DEBUG_H
63
64
65
66
67
68#ifndef DBG
69#define DBG 0
70#else
71#undef DBG
72#define DBG 1
73#endif
74
75
76
77
78#if DBG
79
80
81
82
83
84#ifndef DBG_LVL
85#define DBG_LVL 5
86
87#endif
88
89
90#define DBG_ERROR_ON 0x00000001L
91#define DBG_WARNING_ON 0x00000002L
92#define DBG_NOTICE_ON 0x00000004L
93#define DBG_TRACE_ON 0x00000008L
94#define DBG_VERBOSE_ON 0x00000010L
95#define DBG_PARAM_ON 0x00000020L
96#define DBG_BREAK_ON 0x00000040L
97#define DBG_RX_ON 0x00000100L
98#define DBG_TX_ON 0x00000200L
99#define DBG_DS_ON 0x00000400L
100
101#define DBG_DEFAULTS (DBG_ERROR_ON | DBG_WARNING_ON | DBG_BREAK_ON)
102
103#define DBG_FLAGS(A) ((A)->DebugFlag)
104#define DBG_NAME(A) ((A)->dbgName)
105#define DBG_LEVEL(A) ((A)->dbgLevel)
106
107
108#ifndef PRINTK
109# define PRINTK(S...) printk(S)
110#endif
111
112
113#ifndef DBG_PRINT
114# define DBG_PRINT(S...) PRINTK(KERN_DEBUG S)
115#endif
116
117
118#ifndef DBG_PRINTC
119# define DBG_PRINTC(S...) PRINTK(S)
120#endif
121
122
123#ifndef DBG_TRAP
124# define DBG_TRAP {}
125#endif
126
127
128#define _ENTER_STR ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
129#define _LEAVE_STR "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
130
131
132#define _DBG_ENTER(A) \
133 DBG_PRINT("%s:%.*s:%s\n", DBG_NAME(A), ++DBG_LEVEL(A), \
134 _ENTER_STR, __func__)
135#define _DBG_LEAVE(A) \
136 DBG_PRINT("%s:%.*s:%s\n", DBG_NAME(A), DBG_LEVEL(A)--, \
137 _LEAVE_STR, __func__)
138
139
140#define DBG_FUNC(F)
141
142#define DBG_ENTER(A) {if (DBG_FLAGS(A) & DBG_TRACE_ON) \
143 _DBG_ENTER(A); }
144
145#define DBG_LEAVE(A) {if (DBG_FLAGS(A) & DBG_TRACE_ON) \
146 _DBG_LEAVE(A); }
147
148#define DBG_PARAM(A, N, F, S...) {if (DBG_FLAGS(A) & DBG_PARAM_ON) \
149 DBG_PRINT(" %s -- "F"\n", N, S); }
150
151
152#define DBG_ERROR(A, S...) do { \
153 if (DBG_FLAGS(A) & DBG_ERROR_ON) { \
154 DBG_PRINT("%s:ERROR:%s ", DBG_NAME(A), __func__); \
155 DBG_PRINTC(S); \
156 DBG_TRAP; \
157 } } while (0)
158
159
160#define DBG_WARNING(A, S...) do { \
161 if (DBG_FLAGS(A) & DBG_WARNING_ON) { \
162 DBG_PRINT("%s:WARNING:%s ", DBG_NAME(A), __func__); \
163 DBG_PRINTC(S); \
164 } } while (0)
165
166
167#define DBG_NOTICE(A, S...) do { \
168 if (DBG_FLAGS(A) & DBG_NOTICE_ON) { \
169 DBG_PRINT("%s:NOTICE:%s ", DBG_NAME(A), __func__); \
170 DBG_PRINTC(S); \
171 } } while (0)
172
173
174#define DBG_TRACE(A, S...) do { \
175 if (DBG_FLAGS(A) & DBG_TRACE_ON) { \
176 DBG_PRINT("%s:%s ", DBG_NAME(A), __func__); \
177 DBG_PRINTC(S); \
178 } } while (0)
179
180
181#define DBG_RX(A, S...) {if (DBG_FLAGS(A) & DBG_RX_ON) {\
182 DBG_PRINT(S); } }
183
184
185#define DBG_TX(A, S...) {if (DBG_FLAGS(A) & DBG_TX_ON) {\
186 DBG_PRINT(S); } }
187
188#define DBG_DS(A, S...) {if (DBG_FLAGS(A) & DBG_DS_ON) {\
189 DBG_PRINT(S); } }
190
191
192#define DBG_ASSERT(C) do { \
193 if (!(C)) { \
194 DBG_PRINT("ASSERT(%s) -- %s#%d (%s)\n", \
195 #C, __FILE__, __LINE__, __func__); \
196 DBG_TRAP; \
197 } } while (0)
198
199typedef struct {
200 char *dbgName;
201 int dbgLevel;
202 unsigned long DebugFlag;
203} dbg_info_t;
204
205
206
207#else
208
209
210#define DBG_DEFN
211#define DBG_TRAP
212#define DBG_FUNC(F)
213#define DBG_PRINT(S...)
214#define DBG_ENTER(A)
215#define DBG_LEAVE(A)
216#define DBG_PARAM(A, N, F, S...)
217#define DBG_ERROR(A, S...)
218#define DBG_WARNING(A, S...)
219#define DBG_NOTICE(A, S...)
220#define DBG_TRACE(A, S...)
221#define DBG_RX(A, S...)
222#define DBG_TX(A, S...)
223#define DBG_DS(A, S...)
224#define DBG_ASSERT(C)
225
226#endif
227
228
229
230
231
232#endif
233
234