Blame view

include/acpi/acoutput.h 17.7 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
  /******************************************************************************
   *
   * Name: acoutput.h -- debug output
   *
   *****************************************************************************/
  
  /*
c8100dc46   Bob Moore   ACPICA: Additiona...
8
   * Copyright (C) 2000 - 2016, Intel Corp.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
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
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions, and the following disclaimer,
   *    without modification.
   * 2. Redistributions in binary form must reproduce at minimum a disclaimer
   *    substantially similar to the "NO WARRANTY" disclaimer below
   *    ("Disclaimer") and any redistribution must be conditioned upon
   *    including a substantially similar Disclaimer requirement for further
   *    binary redistribution.
   * 3. Neither the names of the above-listed copyright holders nor the names
   *    of any contributors may be used to endorse or promote products derived
   *    from this software without specific prior written permission.
   *
   * Alternatively, this software may be distributed under the terms of the
   * GNU General Public License ("GPL") version 2 as published by the Free
   * Software Foundation.
   *
   * NO WARRANTY
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGES.
   */
  
  #ifndef __ACOUTPUT_H__
  #define __ACOUTPUT_H__
  
  /*
50df4d8b0   Bob Moore   ACPICA: Restructu...
48
49
50
   * Debug levels and component IDs. These are used to control the
   * granularity of the output of the ACPI_DEBUG_PRINT macro -- on a
   * per-component basis and a per-exception-type basis.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
51
   */
b229cf92e   Bob Moore   ACPI: ACPICA 2006...
52
  /* Component IDs are used in the global "DebugLayer" */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
  
  #define ACPI_UTILITIES              0x00000001
  #define ACPI_HARDWARE               0x00000002
  #define ACPI_EVENTS                 0x00000004
  #define ACPI_TABLES                 0x00000008
  #define ACPI_NAMESPACE              0x00000010
  #define ACPI_PARSER                 0x00000020
  #define ACPI_DISPATCHER             0x00000040
  #define ACPI_EXECUTER               0x00000080
  #define ACPI_RESOURCES              0x00000100
  #define ACPI_CA_DEBUGGER            0x00000200
  #define ACPI_OS_SERVICES            0x00000400
  #define ACPI_CA_DISASSEMBLER        0x00000800
  
  /* Component IDs for ACPI tools and utilities */
  
  #define ACPI_COMPILER               0x00001000
  #define ACPI_TOOLS                  0x00002000
50df4d8b0   Bob Moore   ACPICA: Restructu...
71
72
  #define ACPI_EXAMPLE                0x00004000
  #define ACPI_DRIVER                 0x00008000
ddcc6a037   Bob Moore   ACPICA: Update de...
73
  #define DT_COMPILER                 0x00010000
56324c109   Lv Zheng   ACPICA: Update co...
74
  #define ASL_PREPROCESSOR            0x00020000
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
75

ddcc6a037   Bob Moore   ACPICA: Update de...
76
  #define ACPI_ALL_COMPONENTS         0x0001FFFF
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
77
  #define ACPI_COMPONENT_DEFAULT      (ACPI_ALL_COMPONENTS)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
78
79
80
  /* Component IDs reserved for ACPI drivers */
  
  #define ACPI_ALL_DRIVERS            0xFFFF0000
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
81
  /*
50df4d8b0   Bob Moore   ACPICA: Restructu...
82
   * Raw debug output levels, do not use these in the ACPI_DEBUG_PRINT macros
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
83
   */
23d3e055b   Bob Moore   ACPICA: Remove ob...
84
85
86
  #define ACPI_LV_INIT                0x00000001
  #define ACPI_LV_DEBUG_OBJECT        0x00000002
  #define ACPI_LV_INFO                0x00000004
3a58176e4   Bob Moore   ACPICA: Remove me...
87
  #define ACPI_LV_REPAIR              0x00000008
a616dc2fe   Lv Zheng   ACPICA: Dispatche...
88
89
  #define ACPI_LV_TRACE_POINT         0x00000010
  #define ACPI_LV_ALL_EXCEPTIONS      0x0000001F
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
  
  /* Trace verbosity level 1 [Standard Trace Level] */
  
  #define ACPI_LV_INIT_NAMES          0x00000020
  #define ACPI_LV_PARSE               0x00000040
  #define ACPI_LV_LOAD                0x00000080
  #define ACPI_LV_DISPATCH            0x00000100
  #define ACPI_LV_EXEC                0x00000200
  #define ACPI_LV_NAMES               0x00000400
  #define ACPI_LV_OPREGION            0x00000800
  #define ACPI_LV_BFIELD              0x00001000
  #define ACPI_LV_TABLES              0x00002000
  #define ACPI_LV_VALUES              0x00004000
  #define ACPI_LV_OBJECTS             0x00008000
  #define ACPI_LV_RESOURCES           0x00010000
  #define ACPI_LV_USER_REQUESTS       0x00020000
  #define ACPI_LV_PACKAGE             0x00040000
  #define ACPI_LV_VERBOSITY1          0x0007FF40 | ACPI_LV_ALL_EXCEPTIONS
  
  /* Trace verbosity level 2 [Function tracing and memory allocation] */
  
  #define ACPI_LV_ALLOCATIONS         0x00100000
  #define ACPI_LV_FUNCTIONS           0x00200000
  #define ACPI_LV_OPTIMIZATIONS       0x00400000
  #define ACPI_LV_VERBOSITY2          0x00700000 | ACPI_LV_VERBOSITY1
  #define ACPI_LV_ALL                 ACPI_LV_VERBOSITY2
  
  /* Trace verbosity level 3 [Threading, I/O, and Interrupts] */
  
  #define ACPI_LV_MUTEX               0x01000000
  #define ACPI_LV_THREADS             0x02000000
  #define ACPI_LV_IO                  0x04000000
  #define ACPI_LV_INTERRUPTS          0x08000000
  #define ACPI_LV_VERBOSITY3          0x0F000000 | ACPI_LV_VERBOSITY2
b229cf92e   Bob Moore   ACPI: ACPICA 2006...
124
  /* Exceptionally verbose output -- also used in the global "DebugLevel"  */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
125
126
127
128
129
  
  #define ACPI_LV_AML_DISASSEMBLE     0x10000000
  #define ACPI_LV_VERBOSE_INFO        0x20000000
  #define ACPI_LV_FULL_TABLES         0x40000000
  #define ACPI_LV_EVENTS              0x80000000
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
130
  #define ACPI_LV_VERBOSE             0xF0000000
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
131
132
133
  /*
   * Debug level macros that are used in the DEBUG_PRINT macros
   */
f9f4601f3   Robert Moore   ACPICA 20050708 f...
134
  #define ACPI_DEBUG_LEVEL(dl)        (u32) dl,ACPI_DEBUG_PARAMETERS
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
135

23d3e055b   Bob Moore   ACPICA: Remove ob...
136
137
138
139
140
141
  /*
   * Exception level -- used in the global "DebugLevel"
   *
   * Note: For errors, use the ACPI_ERROR or ACPI_EXCEPTION interfaces.
   * For warnings, use ACPI_WARNING.
   */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
142
143
144
  #define ACPI_DB_INIT                ACPI_DEBUG_LEVEL (ACPI_LV_INIT)
  #define ACPI_DB_DEBUG_OBJECT        ACPI_DEBUG_LEVEL (ACPI_LV_DEBUG_OBJECT)
  #define ACPI_DB_INFO                ACPI_DEBUG_LEVEL (ACPI_LV_INFO)
3a58176e4   Bob Moore   ACPICA: Remove me...
145
  #define ACPI_DB_REPAIR              ACPI_DEBUG_LEVEL (ACPI_LV_REPAIR)
a616dc2fe   Lv Zheng   ACPICA: Dispatche...
146
  #define ACPI_DB_TRACE_POINT         ACPI_DEBUG_LEVEL (ACPI_LV_TRACE_POINT)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
147
  #define ACPI_DB_ALL_EXCEPTIONS      ACPI_DEBUG_LEVEL (ACPI_LV_ALL_EXCEPTIONS)
b229cf92e   Bob Moore   ACPI: ACPICA 2006...
148
  /* Trace level -- also used in the global "DebugLevel" */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
  
  #define ACPI_DB_INIT_NAMES          ACPI_DEBUG_LEVEL (ACPI_LV_INIT_NAMES)
  #define ACPI_DB_THREADS             ACPI_DEBUG_LEVEL (ACPI_LV_THREADS)
  #define ACPI_DB_PARSE               ACPI_DEBUG_LEVEL (ACPI_LV_PARSE)
  #define ACPI_DB_DISPATCH            ACPI_DEBUG_LEVEL (ACPI_LV_DISPATCH)
  #define ACPI_DB_LOAD                ACPI_DEBUG_LEVEL (ACPI_LV_LOAD)
  #define ACPI_DB_EXEC                ACPI_DEBUG_LEVEL (ACPI_LV_EXEC)
  #define ACPI_DB_NAMES               ACPI_DEBUG_LEVEL (ACPI_LV_NAMES)
  #define ACPI_DB_OPREGION            ACPI_DEBUG_LEVEL (ACPI_LV_OPREGION)
  #define ACPI_DB_BFIELD              ACPI_DEBUG_LEVEL (ACPI_LV_BFIELD)
  #define ACPI_DB_TABLES              ACPI_DEBUG_LEVEL (ACPI_LV_TABLES)
  #define ACPI_DB_FUNCTIONS           ACPI_DEBUG_LEVEL (ACPI_LV_FUNCTIONS)
  #define ACPI_DB_OPTIMIZATIONS       ACPI_DEBUG_LEVEL (ACPI_LV_OPTIMIZATIONS)
  #define ACPI_DB_VALUES              ACPI_DEBUG_LEVEL (ACPI_LV_VALUES)
  #define ACPI_DB_OBJECTS             ACPI_DEBUG_LEVEL (ACPI_LV_OBJECTS)
  #define ACPI_DB_ALLOCATIONS         ACPI_DEBUG_LEVEL (ACPI_LV_ALLOCATIONS)
  #define ACPI_DB_RESOURCES           ACPI_DEBUG_LEVEL (ACPI_LV_RESOURCES)
  #define ACPI_DB_IO                  ACPI_DEBUG_LEVEL (ACPI_LV_IO)
  #define ACPI_DB_INTERRUPTS          ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS)
  #define ACPI_DB_USER_REQUESTS       ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS)
  #define ACPI_DB_PACKAGE             ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE)
  #define ACPI_DB_MUTEX               ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX)
23d3e055b   Bob Moore   ACPICA: Remove ob...
171
  #define ACPI_DB_EVENTS              ACPI_DEBUG_LEVEL (ACPI_LV_EVENTS)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
172
173
  
  #define ACPI_DB_ALL                 ACPI_DEBUG_LEVEL (ACPI_LV_ALL)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
174
  /* Defaults for debug_level, debug and normal */
3a58176e4   Bob Moore   ACPICA: Remove me...
175
176
  #define ACPI_DEBUG_DEFAULT          (ACPI_LV_INFO | ACPI_LV_REPAIR)
  #define ACPI_NORMAL_DEFAULT         (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
177
  #define ACPI_DEBUG_ALL              (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
ab6c57332   Lv Zheng   ACPICA: Executer:...
178
179
180
  /*
   * Global trace flags
   */
fb18e8fd0   Lv Zheng   ACPICA: Executer:...
181
182
183
  #define ACPI_TRACE_ENABLED          ((u32) 4)
  #define ACPI_TRACE_ONESHOT          ((u32) 2)
  #define ACPI_TRACE_OPCODE           ((u32) 1)
ab6c57332   Lv Zheng   ACPICA: Executer:...
184
185
186
187
188
189
190
  
  /* Defaults for trace debugging level/layer */
  
  #define ACPI_TRACE_LEVEL_ALL        ACPI_LV_ALL
  #define ACPI_TRACE_LAYER_ALL        0x000001FF
  #define ACPI_TRACE_LEVEL_DEFAULT    ACPI_LV_TRACE_POINT
  #define ACPI_TRACE_LAYER_DEFAULT    ACPI_EXECUTER
50df4d8b0   Bob Moore   ACPICA: Restructu...
191
192
  #if defined (ACPI_DEBUG_OUTPUT) || !defined (ACPI_NO_ERROR_MESSAGES)
  /*
d59a3c6b3   Bob Moore   ACPICA: Fix unres...
193
194
195
196
   * The module name is used primarily for error and debug messages.
   * The __FILE__ macro is not very useful for this, because it
   * usually includes the entire pathname to the module making the
   * debug output difficult to read.
50df4d8b0   Bob Moore   ACPICA: Restructu...
197
198
199
   */
  #define ACPI_MODULE_NAME(name)          static const char ACPI_UNUSED_VAR _acpi_module_name[] = name;
  #else
d59a3c6b3   Bob Moore   ACPICA: Fix unres...
200
201
202
203
  /*
   * For the no-debug and no-error-msg cases, we must at least define
   * a null module name.
   */
50df4d8b0   Bob Moore   ACPICA: Restructu...
204
  #define ACPI_MODULE_NAME(name)
d59a3c6b3   Bob Moore   ACPICA: Fix unres...
205
  #define _acpi_module_name ""
50df4d8b0   Bob Moore   ACPICA: Restructu...
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
  #endif
  
  /*
   * Ascii error messages can be configured out
   */
  #ifndef ACPI_NO_ERROR_MESSAGES
  #define AE_INFO                         _acpi_module_name, __LINE__
  
  /*
   * Error reporting. Callers module and line number are inserted by AE_INFO,
   * the plist contains a set of parens to allow variable-length lists.
   * These macros are used for both the debug and non-debug versions of the code.
   */
  #define ACPI_INFO(plist)                acpi_info plist
  #define ACPI_WARNING(plist)             acpi_warning plist
  #define ACPI_EXCEPTION(plist)           acpi_exception plist
  #define ACPI_ERROR(plist)               acpi_error plist
62cdd1419   Bob Moore   ACPICA: Add new i...
223
224
  #define ACPI_BIOS_WARNING(plist)        acpi_bios_warning plist
  #define ACPI_BIOS_ERROR(plist)          acpi_bios_error plist
4cdf1a562   Lin Ming   ACPICA: Enhance c...
225
  #define ACPI_DEBUG_OBJECT(obj,l,i)      acpi_ex_do_debug_object(obj,l,i)
50df4d8b0   Bob Moore   ACPICA: Restructu...
226
227
228
229
230
231
232
233
234
  
  #else
  
  /* No error messages */
  
  #define ACPI_INFO(plist)
  #define ACPI_WARNING(plist)
  #define ACPI_EXCEPTION(plist)
  #define ACPI_ERROR(plist)
62cdd1419   Bob Moore   ACPICA: Add new i...
235
236
  #define ACPI_BIOS_WARNING(plist)
  #define ACPI_BIOS_ERROR(plist)
4cdf1a562   Lin Ming   ACPICA: Enhance c...
237
  #define ACPI_DEBUG_OBJECT(obj,l,i)
50df4d8b0   Bob Moore   ACPICA: Restructu...
238
239
240
241
242
243
244
245
246
247
248
  
  #endif				/* ACPI_NO_ERROR_MESSAGES */
  
  /*
   * Debug macros that are conditionally compiled
   */
  #ifdef ACPI_DEBUG_OUTPUT
  
  /*
   * If ACPI_GET_FUNCTION_NAME was not defined in the compiler-dependent header,
   * define it now. This is the case where there the compiler does not support
02f1f2170   Rasmus Villemoes   kernel.h: remove ...
249
   * a __func__ macro or equivalent.
50df4d8b0   Bob Moore   ACPICA: Restructu...
250
251
252
253
254
   */
  #ifndef ACPI_GET_FUNCTION_NAME
  #define ACPI_GET_FUNCTION_NAME          _acpi_function_name
  
  /*
1e059e20a   Bob Moore   ACPICA: Utilities...
255
   * The Name parameter should be the procedure name as a non-quoted string.
50df4d8b0   Bob Moore   ACPICA: Restructu...
256
257
   * The function name is also used by the function exit macros below.
   * Note: (const char) is used to be compatible with the debug interfaces
02f1f2170   Rasmus Villemoes   kernel.h: remove ...
258
   * and macros such as __func__.
50df4d8b0   Bob Moore   ACPICA: Restructu...
259
260
261
262
   */
  #define ACPI_FUNCTION_NAME(name)        static const char _acpi_function_name[] = #name;
  
  #else
02f1f2170   Rasmus Villemoes   kernel.h: remove ...
263
  /* Compiler supports __func__ (or equivalent) -- Ignore this macro */
50df4d8b0   Bob Moore   ACPICA: Restructu...
264
265
266
267
268
269
270
271
  
  #define ACPI_FUNCTION_NAME(name)
  #endif				/* ACPI_GET_FUNCTION_NAME */
  
  /*
   * Common parameters used for debug output functions:
   * line number, function name, module(file) name, component ID
   */
ad5a06f29   Bob Moore   ACPICA: DEBUG_PRI...
272
273
  #define ACPI_DEBUG_PARAMETERS \
  	__LINE__, ACPI_GET_FUNCTION_NAME, _acpi_module_name, _COMPONENT
50df4d8b0   Bob Moore   ACPICA: Restructu...
274

e81a52b8b   Bob Moore   ACPICA: Update fo...
275
276
277
278
  /* Check if debug output is currently dynamically enabled */
  
  #define ACPI_IS_DEBUG_ENABLED(level, component) \
  	((level & acpi_dbg_level) && (component & acpi_dbg_layer))
50df4d8b0   Bob Moore   ACPICA: Restructu...
279
280
281
282
283
  /*
   * Master debug print macros
   * Print message if and only if:
   *    1) Debug print for the current component is enabled
   *    2) Debug error level or trace level for the print statement is enabled
ad5a06f29   Bob Moore   ACPICA: DEBUG_PRI...
284
285
286
287
288
   *
   * November 2012: Moved the runtime check for whether to actually emit the
   * debug message outside of the print function itself. This improves overall
   * performance at a relatively small code cost. Implementation involves the
   * use of variadic macros supported by C99.
6e1888fdc   Bob Moore   ACPICA: Cleanup A...
289
290
291
292
   *
   * Note: the ACPI_DO_WHILE0 macro is used to prevent some compilers from
   * complaining about these constructs. On other compilers the do...while
   * adds some extra code, so this feature is optional.
50df4d8b0   Bob Moore   ACPICA: Restructu...
293
   */
6e1888fdc   Bob Moore   ACPICA: Cleanup A...
294
295
296
297
298
  #ifdef ACPI_USE_DO_WHILE_0
  #define ACPI_DO_WHILE0(a)               do a while(0)
  #else
  #define ACPI_DO_WHILE0(a)               a
  #endif
ad5a06f29   Bob Moore   ACPICA: DEBUG_PRI...
299
300
  
  /* DEBUG_PRINT functions */
7b09d8fde   Lv Zheng   ACPICA: MSVC6: Fi...
301
302
303
304
305
306
  #ifndef COMPILER_VA_MACRO
  
  #define ACPI_DEBUG_PRINT(plist)         acpi_debug_print plist
  #define ACPI_DEBUG_PRINT_RAW(plist)     acpi_debug_print_raw plist
  
  #else
ad5a06f29   Bob Moore   ACPICA: DEBUG_PRI...
307
308
  
  /* Helper macros for DEBUG_PRINT */
6e1888fdc   Bob Moore   ACPICA: Cleanup A...
309
310
311
312
313
314
315
  #define ACPI_DO_DEBUG_PRINT(function, level, line, filename, modulename, component, ...) \
  	ACPI_DO_WHILE0 ({ \
  		if (ACPI_IS_DEBUG_ENABLED (level, component)) \
  		{ \
  			function (level, line, filename, modulename, component, __VA_ARGS__); \
  		} \
  	})
ad5a06f29   Bob Moore   ACPICA: DEBUG_PRI...
316
317
  
  #define ACPI_ACTUAL_DEBUG(level, line, filename, modulename, component, ...) \
6e1888fdc   Bob Moore   ACPICA: Cleanup A...
318
319
  	ACPI_DO_DEBUG_PRINT (acpi_debug_print, level, line, \
  		filename, modulename, component, __VA_ARGS__)
ad5a06f29   Bob Moore   ACPICA: DEBUG_PRI...
320
321
  
  #define ACPI_ACTUAL_DEBUG_RAW(level, line, filename, modulename, component, ...) \
6e1888fdc   Bob Moore   ACPICA: Cleanup A...
322
323
  	ACPI_DO_DEBUG_PRINT (acpi_debug_print_raw, level, line, \
  		filename, modulename, component, __VA_ARGS__)
50df4d8b0   Bob Moore   ACPICA: Restructu...
324

7b09d8fde   Lv Zheng   ACPICA: MSVC6: Fi...
325
326
327
328
  #define ACPI_DEBUG_PRINT(plist)         ACPI_ACTUAL_DEBUG plist
  #define ACPI_DEBUG_PRINT_RAW(plist)     ACPI_ACTUAL_DEBUG_RAW plist
  
  #endif
0377b5acb   Bob Moore   ACPICA: Merge all...
329
330
331
332
333
334
335
336
  /*
   * Function entry tracing
   *
   * The name of the function is emitted as a local variable that is
   * intended to be used by both the entry trace and the exit trace.
   */
  
  /* Helper macro */
fd1af7126   Bob Moore   ACPICA: Regressio...
337
  #define ACPI_TRACE_ENTRY(name, function, type, param) \
0377b5acb   Bob Moore   ACPICA: Merge all...
338
  	ACPI_FUNCTION_NAME (name) \
fd1af7126   Bob Moore   ACPICA: Regressio...
339
  	function (ACPI_DEBUG_PARAMETERS, (type) (param))
0377b5acb   Bob Moore   ACPICA: Merge all...
340
341
342
343
344
345
346
347
  
  /* The actual entry trace macros */
  
  #define ACPI_FUNCTION_TRACE(name) \
  	ACPI_FUNCTION_NAME(name) \
  	acpi_ut_trace (ACPI_DEBUG_PARAMETERS)
  
  #define ACPI_FUNCTION_TRACE_PTR(name, pointer) \
fd1af7126   Bob Moore   ACPICA: Regressio...
348
  	ACPI_TRACE_ENTRY (name, acpi_ut_trace_ptr, void *, pointer)
0377b5acb   Bob Moore   ACPICA: Merge all...
349
350
  
  #define ACPI_FUNCTION_TRACE_U32(name, value) \
fd1af7126   Bob Moore   ACPICA: Regressio...
351
  	ACPI_TRACE_ENTRY (name, acpi_ut_trace_u32, u32, value)
0377b5acb   Bob Moore   ACPICA: Merge all...
352
353
  
  #define ACPI_FUNCTION_TRACE_STR(name, string) \
4857a94de   Jung-uk Kim   ACPICA: Fix decon...
354
  	ACPI_TRACE_ENTRY (name, acpi_ut_trace_str, const char *, string)
0377b5acb   Bob Moore   ACPICA: Merge all...
355
356
357
358
359
360
361
362
363
364
365
366
367
  
  #define ACPI_FUNCTION_ENTRY() \
  	acpi_ut_track_stack_ptr()
  
  /*
   * Function exit tracing
   *
   * These macros include a return statement. This is usually considered
   * bad form, but having a separate exit macro before the actual return
   * is very ugly and difficult to maintain.
   *
   * One of the FUNCTION_TRACE macros above must be used in conjunction
   * with these macros so that "_AcpiFunctionName" is defined.
fd1af7126   Bob Moore   ACPICA: Regressio...
368
369
370
371
372
373
374
375
   *
   * There are two versions of most of the return macros. The default version is
   * safer, since it avoids side-effects by guaranteeing that the argument will
   * not be evaluated twice.
   *
   * A less-safe version of the macros is provided for optional use if the
   * compiler uses excessive CPU stack (for example, this may happen in the
   * debug case if code optimzation is disabled.)
0377b5acb   Bob Moore   ACPICA: Merge all...
376
   */
0377b5acb   Bob Moore   ACPICA: Merge all...
377
378
  
  /* Exit trace helper macro */
fd1af7126   Bob Moore   ACPICA: Regressio...
379
380
381
382
383
384
385
386
387
388
389
390
  #ifndef ACPI_SIMPLE_RETURN_MACROS
  
  #define ACPI_TRACE_EXIT(function, type, param) \
  	ACPI_DO_WHILE0 ({ \
  		register type _param = (type) (param); \
  		function (ACPI_DEBUG_PARAMETERS, _param); \
  		return (_param); \
  	})
  
  #else				/* Use original less-safe macros */
  
  #define ACPI_TRACE_EXIT(function, type, param) \
0377b5acb   Bob Moore   ACPICA: Merge all...
391
  	ACPI_DO_WHILE0 ({ \
fd1af7126   Bob Moore   ACPICA: Regressio...
392
393
  		function (ACPI_DEBUG_PARAMETERS, (type) (param)); \
  		return (param); \
0377b5acb   Bob Moore   ACPICA: Merge all...
394
  	})
fd1af7126   Bob Moore   ACPICA: Regressio...
395
  #endif				/* ACPI_SIMPLE_RETURN_MACROS */
0377b5acb   Bob Moore   ACPICA: Merge all...
396
397
398
399
400
401
402
403
404
  /* The actual exit macros */
  
  #define return_VOID \
  	ACPI_DO_WHILE0 ({ \
  		acpi_ut_exit (ACPI_DEBUG_PARAMETERS); \
  		return; \
  	})
  
  #define return_ACPI_STATUS(status) \
fd1af7126   Bob Moore   ACPICA: Regressio...
405
  	ACPI_TRACE_EXIT (acpi_ut_status_exit, acpi_status, status)
0377b5acb   Bob Moore   ACPICA: Merge all...
406
407
  
  #define return_PTR(pointer) \
fd1af7126   Bob Moore   ACPICA: Regressio...
408
  	ACPI_TRACE_EXIT (acpi_ut_ptr_exit, void *, pointer)
0377b5acb   Bob Moore   ACPICA: Merge all...
409

4857a94de   Jung-uk Kim   ACPICA: Fix decon...
410
411
  #define return_STR(string) \
  	ACPI_TRACE_EXIT (acpi_ut_str_exit, const char *, string)
0377b5acb   Bob Moore   ACPICA: Merge all...
412
  #define return_VALUE(value) \
fd1af7126   Bob Moore   ACPICA: Regressio...
413
414
415
416
417
418
419
  	ACPI_TRACE_EXIT (acpi_ut_value_exit, u64, value)
  
  #define return_UINT32(value) \
  	ACPI_TRACE_EXIT (acpi_ut_value_exit, u32, value)
  
  #define return_UINT8(value) \
  	ACPI_TRACE_EXIT (acpi_ut_value_exit, u8, value)
0377b5acb   Bob Moore   ACPICA: Merge all...
420
421
422
423
424
425
426
427
428
429
430
431
432
433
  
  /* Conditional execution */
  
  #define ACPI_DEBUG_EXEC(a)              a
  #define ACPI_DEBUG_ONLY_MEMBERS(a)      a;
  #define _VERBOSE_STRUCTURES
  
  /* Various object display routines for debug */
  
  #define ACPI_DUMP_STACK_ENTRY(a)        acpi_ex_dump_operand((a), 0)
  #define ACPI_DUMP_OPERANDS(a, b ,c)     acpi_ex_dump_operands(a, b, c)
  #define ACPI_DUMP_ENTRY(a, b)           acpi_ns_dump_entry (a, b)
  #define ACPI_DUMP_PATHNAME(a, b, c, d)  acpi_ns_dump_pathname(a, b, c, d)
  #define ACPI_DUMP_BUFFER(a, b)          acpi_ut_debug_dump_buffer((u8 *) a, b, DB_BYTE_DISPLAY, _COMPONENT)
bab048241   Lv Zheng   ACPICA: Executer:...
434
  #define ACPI_TRACE_POINT(a, b, c, d)    acpi_trace_point (a, b, c, d)
0377b5acb   Bob Moore   ACPICA: Merge all...
435
  #else				/* ACPI_DEBUG_OUTPUT */
50df4d8b0   Bob Moore   ACPICA: Restructu...
436
437
438
439
  /*
   * This is the non-debug case -- make everything go away,
   * leaving no executable debug code!
   */
50df4d8b0   Bob Moore   ACPICA: Restructu...
440
441
  #define ACPI_DEBUG_PRINT(pl)
  #define ACPI_DEBUG_PRINT_RAW(pl)
0377b5acb   Bob Moore   ACPICA: Merge all...
442
443
  #define ACPI_DEBUG_EXEC(a)
  #define ACPI_DEBUG_ONLY_MEMBERS(a)
d835e7f4f   Lv Zheng   ACPICA: Remove un...
444
  #define ACPI_FUNCTION_NAME(a)
0377b5acb   Bob Moore   ACPICA: Merge all...
445
446
447
448
  #define ACPI_FUNCTION_TRACE(a)
  #define ACPI_FUNCTION_TRACE_PTR(a, b)
  #define ACPI_FUNCTION_TRACE_U32(a, b)
  #define ACPI_FUNCTION_TRACE_STR(a, b)
0377b5acb   Bob Moore   ACPICA: Merge all...
449
450
451
452
  #define ACPI_FUNCTION_ENTRY()
  #define ACPI_DUMP_STACK_ENTRY(a)
  #define ACPI_DUMP_OPERANDS(a, b, c)
  #define ACPI_DUMP_ENTRY(a, b)
0377b5acb   Bob Moore   ACPICA: Merge all...
453
454
  #define ACPI_DUMP_PATHNAME(a, b, c, d)
  #define ACPI_DUMP_BUFFER(a, b)
e81a52b8b   Bob Moore   ACPICA: Update fo...
455
  #define ACPI_IS_DEBUG_ENABLED(level, component) 0
bab048241   Lv Zheng   ACPICA: Executer:...
456
  #define ACPI_TRACE_POINT(a, b, c, d)
0377b5acb   Bob Moore   ACPICA: Merge all...
457
458
459
460
461
  
  /* Return macros must have a return statement at the minimum */
  
  #define return_VOID                     return
  #define return_ACPI_STATUS(s)           return(s)
0377b5acb   Bob Moore   ACPICA: Merge all...
462
  #define return_PTR(s)                   return(s)
4857a94de   Jung-uk Kim   ACPICA: Fix decon...
463
  #define return_STR(s)                   return(s)
fd1af7126   Bob Moore   ACPICA: Regressio...
464
465
466
  #define return_VALUE(s)                 return(s)
  #define return_UINT8(s)                 return(s)
  #define return_UINT32(s)                return(s)
50df4d8b0   Bob Moore   ACPICA: Restructu...
467
468
  
  #endif				/* ACPI_DEBUG_OUTPUT */
4be44fcd3   Len Brown   [ACPI] Lindent al...
469
  #endif				/* __ACOUTPUT_H__ */