xref: /netbsd-src/sys/external/bsd/acpica/dist/utilities/utdebug.c (revision 987b04d624d6d5e25e3e80d683a4ebe80fe47dcf)
1 /******************************************************************************
2  *
3  * Module Name: utdebug - Debug print/trace routines
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2023, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43 
44 #define EXPORT_ACPI_INTERFACES
45 
46 #include "acpi.h"
47 #include "accommon.h"
48 #include "acinterp.h"
49 
50 #define _COMPONENT          ACPI_UTILITIES
51         ACPI_MODULE_NAME    ("utdebug")
52 
53 
54 #ifdef ACPI_DEBUG_OUTPUT
55 
56 static ACPI_THREAD_ID       AcpiGbl_PreviousThreadId = (ACPI_THREAD_ID) 0xFFFFFFFF;
57 static const char           *AcpiGbl_FunctionEntryPrefix = "----Entry";
58 static const char           *AcpiGbl_FunctionExitPrefix  = "----Exit-";
59 
60 
61 /*******************************************************************************
62  *
63  * FUNCTION:    AcpiUtInitStackPtrTrace
64  *
65  * PARAMETERS:  None
66  *
67  * RETURN:      None
68  *
69  * DESCRIPTION: Save the current CPU stack pointer at subsystem startup
70  *
71  ******************************************************************************/
72 
73 void
74 AcpiUtInitStackPtrTrace (
75     void)
76 {
77     ACPI_SIZE               CurrentSp;
78 
79 
80 #pragma GCC diagnostic push
81 #if defined(__GNUC__) && __GNUC__ >= 12
82 #pragma GCC diagnostic ignored "-Wdangling-pointer="
83 #endif
84     AcpiGbl_EntryStackPointer = &CurrentSp;
85 #pragma GCC diagnostic pop
86 }
87 
88 
89 /*******************************************************************************
90  *
91  * FUNCTION:    AcpiUtTrackStackPtr
92  *
93  * PARAMETERS:  None
94  *
95  * RETURN:      None
96  *
97  * DESCRIPTION: Save the current CPU stack pointer
98  *
99  ******************************************************************************/
100 
101 void
102 AcpiUtTrackStackPtr (
103     void)
104 {
105     ACPI_SIZE               CurrentSp;
106 
107 
108     if (&CurrentSp < AcpiGbl_LowestStackPointer)
109     {
110 #pragma GCC diagnostic push
111 #if defined(__GNUC__) && __GNUC__ >= 12
112 #pragma GCC diagnostic ignored "-Wdangling-pointer="
113 #endif
114         AcpiGbl_LowestStackPointer = &CurrentSp;
115 #pragma GCC diagnostic pop
116     }
117 
118     if (AcpiGbl_NestingLevel > AcpiGbl_DeepestNesting)
119     {
120         AcpiGbl_DeepestNesting = AcpiGbl_NestingLevel;
121     }
122 }
123 
124 
125 /*******************************************************************************
126  *
127  * FUNCTION:    AcpiUtTrimFunctionName
128  *
129  * PARAMETERS:  FunctionName        - Ascii string containing a procedure name
130  *
131  * RETURN:      Updated pointer to the function name
132  *
133  * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present.
134  *              This allows compiler macros such as __FUNCTION__ to be used
135  *              with no change to the debug output.
136  *
137  ******************************************************************************/
138 
139 static const char *
140 AcpiUtTrimFunctionName (
141     const char              *FunctionName)
142 {
143 
144     /* All Function names are longer than 4 chars, check is safe */
145 
146     if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_MIXED)
147     {
148         /* This is the case where the original source has not been modified */
149 
150         return (FunctionName + 4);
151     }
152 
153     if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_LOWER)
154     {
155         /* This is the case where the source has been 'linuxized' */
156 
157         return (FunctionName + 5);
158     }
159 
160     return (FunctionName);
161 }
162 
163 
164 /*******************************************************************************
165  *
166  * FUNCTION:    AcpiDebugPrint
167  *
168  * PARAMETERS:  RequestedDebugLevel - Requested debug print level
169  *              LineNumber          - Caller's line number (for error output)
170  *              FunctionName        - Caller's procedure name
171  *              ModuleName          - Caller's module name
172  *              ComponentId         - Caller's component ID
173  *              Format              - Printf format field
174  *              ...                 - Optional printf arguments
175  *
176  * RETURN:      None
177  *
178  * DESCRIPTION: Print error message with prefix consisting of the module name,
179  *              line number, and component ID.
180  *
181  ******************************************************************************/
182 
183 void  ACPI_INTERNAL_VAR_XFACE
184 AcpiDebugPrint (
185     UINT32                  RequestedDebugLevel,
186     UINT32                  LineNumber,
187     const char              *FunctionName,
188     const char              *ModuleName,
189     UINT32                  ComponentId,
190     const char              *Format,
191     ...)
192 {
193     ACPI_THREAD_ID          ThreadId;
194     va_list                 args;
195 #ifdef ACPI_APPLICATION
196     int                     FillCount;
197 #endif
198 
199     /* Check if debug output enabled */
200 
201     if (!ACPI_IS_DEBUG_ENABLED (RequestedDebugLevel, ComponentId))
202     {
203         return;
204     }
205 
206     /*
207      * Thread tracking and context switch notification
208      */
209     ThreadId = AcpiOsGetThreadId ();
210     if (ThreadId != AcpiGbl_PreviousThreadId)
211     {
212         if (ACPI_LV_THREADS & AcpiDbgLevel)
213         {
214             AcpiOsPrintf (
215                 "\n**** Context Switch from TID %u to TID %u ****\n\n",
216                 (UINT32) AcpiGbl_PreviousThreadId, (UINT32) ThreadId);
217         }
218 
219         AcpiGbl_PreviousThreadId = ThreadId;
220         AcpiGbl_NestingLevel = 0;
221     }
222 
223     /*
224      * Display the module name, current line number, thread ID (if requested),
225      * current procedure nesting level, and the current procedure name
226      */
227     AcpiOsPrintf ("%9s-%04d ", ModuleName, LineNumber);
228 
229 #ifdef ACPI_APPLICATION
230     /*
231      * For AcpiExec/iASL only, emit the thread ID and nesting level.
232      * Note: nesting level is really only useful during a single-thread
233      * execution. Otherwise, multiple threads will keep resetting the
234      * level.
235      */
236     if (ACPI_LV_THREADS & AcpiDbgLevel)
237     {
238         AcpiOsPrintf ("[%u] ", (UINT32) ThreadId);
239     }
240 
241     FillCount = 48 - AcpiGbl_NestingLevel -
242         strlen (AcpiUtTrimFunctionName (FunctionName));
243     if (FillCount < 0)
244     {
245         FillCount = 0;
246     }
247 
248     AcpiOsPrintf ("[%02d] %*s",
249         AcpiGbl_NestingLevel, AcpiGbl_NestingLevel + 1, " ");
250     AcpiOsPrintf ("%s%*s: ",
251         AcpiUtTrimFunctionName (FunctionName), FillCount, " ");
252 
253 #else
254     AcpiOsPrintf ("%-22.22s: ", AcpiUtTrimFunctionName (FunctionName));
255 #endif
256 
257     va_start (args, Format);
258     AcpiOsVprintf (Format, args);
259     va_end (args);
260 }
261 
262 ACPI_EXPORT_SYMBOL (AcpiDebugPrint)
263 
264 
265 /*******************************************************************************
266  *
267  * FUNCTION:    AcpiDebugPrintRaw
268  *
269  * PARAMETERS:  RequestedDebugLevel - Requested debug print level
270  *              LineNumber          - Caller's line number
271  *              FunctionName        - Caller's procedure name
272  *              ModuleName          - Caller's module name
273  *              ComponentId         - Caller's component ID
274  *              Format              - Printf format field
275  *              ...                 - Optional printf arguments
276  *
277  * RETURN:      None
278  *
279  * DESCRIPTION: Print message with no headers. Has same interface as
280  *              DebugPrint so that the same macros can be used.
281  *
282  ******************************************************************************/
283 
284 void  ACPI_INTERNAL_VAR_XFACE
285 AcpiDebugPrintRaw (
286     UINT32                  RequestedDebugLevel,
287     UINT32                  LineNumber,
288     const char              *FunctionName,
289     const char              *ModuleName,
290     UINT32                  ComponentId,
291     const char              *Format,
292     ...)
293 {
294     va_list                 args;
295 
296 
297     /* Check if debug output enabled */
298 
299     if (!ACPI_IS_DEBUG_ENABLED (RequestedDebugLevel, ComponentId))
300     {
301         return;
302     }
303 
304     va_start (args, Format);
305     AcpiOsVprintf (Format, args);
306     va_end (args);
307 }
308 
309 ACPI_EXPORT_SYMBOL (AcpiDebugPrintRaw)
310 
311 
312 /*******************************************************************************
313  *
314  * FUNCTION:    AcpiUtTrace
315  *
316  * PARAMETERS:  LineNumber          - Caller's line number
317  *              FunctionName        - Caller's procedure name
318  *              ModuleName          - Caller's module name
319  *              ComponentId         - Caller's component ID
320  *
321  * RETURN:      None
322  *
323  * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is
324  *              set in DebugLevel
325  *
326  ******************************************************************************/
327 
328 void
329 AcpiUtTrace (
330     UINT32                  LineNumber,
331     const char              *FunctionName,
332     const char              *ModuleName,
333     UINT32                  ComponentId)
334 {
335 
336     AcpiGbl_NestingLevel++;
337     AcpiUtTrackStackPtr ();
338 
339     /* Check if enabled up-front for performance */
340 
341     if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
342     {
343         AcpiDebugPrint (ACPI_LV_FUNCTIONS,
344             LineNumber, FunctionName, ModuleName, ComponentId,
345             "%s\n", AcpiGbl_FunctionEntryPrefix);
346     }
347 }
348 
349 ACPI_EXPORT_SYMBOL (AcpiUtTrace)
350 
351 
352 /*******************************************************************************
353  *
354  * FUNCTION:    AcpiUtTracePtr
355  *
356  * PARAMETERS:  LineNumber          - Caller's line number
357  *              FunctionName        - Caller's procedure name
358  *              ModuleName          - Caller's module name
359  *              ComponentId         - Caller's component ID
360  *              Pointer             - Pointer to display
361  *
362  * RETURN:      None
363  *
364  * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is
365  *              set in DebugLevel
366  *
367  ******************************************************************************/
368 
369 void
370 AcpiUtTracePtr (
371     UINT32                  LineNumber,
372     const char              *FunctionName,
373     const char              *ModuleName,
374     UINT32                  ComponentId,
375     const void              *Pointer)
376 {
377 
378     AcpiGbl_NestingLevel++;
379     AcpiUtTrackStackPtr ();
380 
381     /* Check if enabled up-front for performance */
382 
383     if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
384     {
385         AcpiDebugPrint (ACPI_LV_FUNCTIONS,
386             LineNumber, FunctionName, ModuleName, ComponentId,
387             "%s %p\n", AcpiGbl_FunctionEntryPrefix, Pointer);
388     }
389 }
390 
391 
392 /*******************************************************************************
393  *
394  * FUNCTION:    AcpiUtTraceStr
395  *
396  * PARAMETERS:  LineNumber          - Caller's line number
397  *              FunctionName        - Caller's procedure name
398  *              ModuleName          - Caller's module name
399  *              ComponentId         - Caller's component ID
400  *              String              - Additional string to display
401  *
402  * RETURN:      None
403  *
404  * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is
405  *              set in DebugLevel
406  *
407  ******************************************************************************/
408 
409 void
410 AcpiUtTraceStr (
411     UINT32                  LineNumber,
412     const char              *FunctionName,
413     const char              *ModuleName,
414     UINT32                  ComponentId,
415     const char              *String)
416 {
417 
418     AcpiGbl_NestingLevel++;
419     AcpiUtTrackStackPtr ();
420 
421     /* Check if enabled up-front for performance */
422 
423     if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
424     {
425         AcpiDebugPrint (ACPI_LV_FUNCTIONS,
426             LineNumber, FunctionName, ModuleName, ComponentId,
427             "%s %s\n", AcpiGbl_FunctionEntryPrefix, String);
428     }
429 }
430 
431 
432 /*******************************************************************************
433  *
434  * FUNCTION:    AcpiUtTraceU32
435  *
436  * PARAMETERS:  LineNumber          - Caller's line number
437  *              FunctionName        - Caller's procedure name
438  *              ModuleName          - Caller's module name
439  *              ComponentId         - Caller's component ID
440  *              Integer             - Integer to display
441  *
442  * RETURN:      None
443  *
444  * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is
445  *              set in DebugLevel
446  *
447  ******************************************************************************/
448 
449 void
450 AcpiUtTraceU32 (
451     UINT32                  LineNumber,
452     const char              *FunctionName,
453     const char              *ModuleName,
454     UINT32                  ComponentId,
455     UINT32                  Integer)
456 {
457 
458     AcpiGbl_NestingLevel++;
459     AcpiUtTrackStackPtr ();
460 
461     /* Check if enabled up-front for performance */
462 
463     if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
464     {
465         AcpiDebugPrint (ACPI_LV_FUNCTIONS,
466             LineNumber, FunctionName, ModuleName, ComponentId,
467             "%s %08X\n", AcpiGbl_FunctionEntryPrefix, Integer);
468     }
469 }
470 
471 
472 /*******************************************************************************
473  *
474  * FUNCTION:    AcpiUtExit
475  *
476  * PARAMETERS:  LineNumber          - Caller's line number
477  *              FunctionName        - Caller's procedure name
478  *              ModuleName          - Caller's module name
479  *              ComponentId         - Caller's component ID
480  *
481  * RETURN:      None
482  *
483  * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is
484  *              set in DebugLevel
485  *
486  ******************************************************************************/
487 
488 void
489 AcpiUtExit (
490     UINT32                  LineNumber,
491     const char              *FunctionName,
492     const char              *ModuleName,
493     UINT32                  ComponentId)
494 {
495 
496     /* Check if enabled up-front for performance */
497 
498     if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
499     {
500         AcpiDebugPrint (ACPI_LV_FUNCTIONS,
501             LineNumber, FunctionName, ModuleName, ComponentId,
502             "%s\n", AcpiGbl_FunctionExitPrefix);
503     }
504 
505     if (AcpiGbl_NestingLevel)
506     {
507         AcpiGbl_NestingLevel--;
508     }
509 }
510 
511 ACPI_EXPORT_SYMBOL (AcpiUtExit)
512 
513 
514 /*******************************************************************************
515  *
516  * FUNCTION:    AcpiUtStatusExit
517  *
518  * PARAMETERS:  LineNumber          - Caller's line number
519  *              FunctionName        - Caller's procedure name
520  *              ModuleName          - Caller's module name
521  *              ComponentId         - Caller's component ID
522  *              Status              - Exit status code
523  *
524  * RETURN:      None
525  *
526  * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is
527  *              set in DebugLevel. Prints exit status also.
528  *
529  ******************************************************************************/
530 
531 void
532 AcpiUtStatusExit (
533     UINT32                  LineNumber,
534     const char              *FunctionName,
535     const char              *ModuleName,
536     UINT32                  ComponentId,
537     ACPI_STATUS             Status)
538 {
539 
540     /* Check if enabled up-front for performance */
541 
542     if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
543     {
544         if (ACPI_SUCCESS (Status))
545         {
546             AcpiDebugPrint (ACPI_LV_FUNCTIONS,
547                 LineNumber, FunctionName, ModuleName, ComponentId,
548                 "%s %s\n", AcpiGbl_FunctionExitPrefix,
549                 AcpiFormatException (Status));
550         }
551         else
552         {
553             AcpiDebugPrint (ACPI_LV_FUNCTIONS,
554                 LineNumber, FunctionName, ModuleName, ComponentId,
555                 "%s ****Exception****: %s\n", AcpiGbl_FunctionExitPrefix,
556                 AcpiFormatException (Status));
557         }
558     }
559 
560     if (AcpiGbl_NestingLevel)
561     {
562         AcpiGbl_NestingLevel--;
563     }
564 }
565 
566 ACPI_EXPORT_SYMBOL (AcpiUtStatusExit)
567 
568 
569 /*******************************************************************************
570  *
571  * FUNCTION:    AcpiUtValueExit
572  *
573  * PARAMETERS:  LineNumber          - Caller's line number
574  *              FunctionName        - Caller's procedure name
575  *              ModuleName          - Caller's module name
576  *              ComponentId         - Caller's component ID
577  *              Value               - Value to be printed with exit msg
578  *
579  * RETURN:      None
580  *
581  * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is
582  *              set in DebugLevel. Prints exit value also.
583  *
584  ******************************************************************************/
585 
586 void
587 AcpiUtValueExit (
588     UINT32                  LineNumber,
589     const char              *FunctionName,
590     const char              *ModuleName,
591     UINT32                  ComponentId,
592     UINT64                  Value)
593 {
594 
595     /* Check if enabled up-front for performance */
596 
597     if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
598     {
599         AcpiDebugPrint (ACPI_LV_FUNCTIONS,
600             LineNumber, FunctionName, ModuleName, ComponentId,
601             "%s %8.8X%8.8X\n", AcpiGbl_FunctionExitPrefix,
602             ACPI_FORMAT_UINT64 (Value));
603     }
604 
605     if (AcpiGbl_NestingLevel)
606     {
607         AcpiGbl_NestingLevel--;
608     }
609 }
610 
611 ACPI_EXPORT_SYMBOL (AcpiUtValueExit)
612 
613 
614 /*******************************************************************************
615  *
616  * FUNCTION:    AcpiUtPtrExit
617  *
618  * PARAMETERS:  LineNumber          - Caller's line number
619  *              FunctionName        - Caller's procedure name
620  *              ModuleName          - Caller's module name
621  *              ComponentId         - Caller's component ID
622  *              Ptr                 - Pointer to display
623  *
624  * RETURN:      None
625  *
626  * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is
627  *              set in DebugLevel. Prints exit value also.
628  *
629  ******************************************************************************/
630 
631 void
632 AcpiUtPtrExit (
633     UINT32                  LineNumber,
634     const char              *FunctionName,
635     const char              *ModuleName,
636     UINT32                  ComponentId,
637     UINT8                   *Ptr)
638 {
639 
640     /* Check if enabled up-front for performance */
641 
642     if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
643     {
644         AcpiDebugPrint (ACPI_LV_FUNCTIONS,
645             LineNumber, FunctionName, ModuleName, ComponentId,
646             "%s %p\n", AcpiGbl_FunctionExitPrefix, Ptr);
647     }
648 
649     if (AcpiGbl_NestingLevel)
650     {
651         AcpiGbl_NestingLevel--;
652     }
653 }
654 
655 
656 /*******************************************************************************
657  *
658  * FUNCTION:    AcpiUtStrExit
659  *
660  * PARAMETERS:  LineNumber          - Caller's line number
661  *              FunctionName        - Caller's procedure name
662  *              ModuleName          - Caller's module name
663  *              ComponentId         - Caller's component ID
664  *              String              - String to display
665  *
666  * RETURN:      None
667  *
668  * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is
669  *              set in DebugLevel. Prints exit value also.
670  *
671  ******************************************************************************/
672 
673 void
674 AcpiUtStrExit (
675     UINT32                  LineNumber,
676     const char              *FunctionName,
677     const char              *ModuleName,
678     UINT32                  ComponentId,
679     const char              *String)
680 {
681 
682     /* Check if enabled up-front for performance */
683 
684     if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
685     {
686         AcpiDebugPrint (ACPI_LV_FUNCTIONS,
687             LineNumber, FunctionName, ModuleName, ComponentId,
688             "%s %s\n", AcpiGbl_FunctionExitPrefix, String);
689     }
690 
691     if (AcpiGbl_NestingLevel)
692     {
693         AcpiGbl_NestingLevel--;
694     }
695 }
696 
697 
698 /*******************************************************************************
699  *
700  * FUNCTION:    AcpiTracePoint
701  *
702  * PARAMETERS:  Type                - Trace event type
703  *              Begin               - TRUE if before execution
704  *              Aml                 - Executed AML address
705  *              Pathname            - Object path
706  *              Pointer             - Pointer to the related object
707  *
708  * RETURN:      None
709  *
710  * DESCRIPTION: Interpreter execution trace.
711  *
712  ******************************************************************************/
713 
714 void
715 AcpiTracePoint (
716     ACPI_TRACE_EVENT_TYPE   Type,
717     BOOLEAN                 Begin,
718     UINT8                   *Aml,
719     char                    *Pathname)
720 {
721 
722     ACPI_FUNCTION_ENTRY ();
723 
724     AcpiExTracePoint (Type, Begin, Aml, Pathname);
725 
726 #ifdef ACPI_USE_SYSTEM_TRACER
727     AcpiOsTracePoint (Type, Begin, Aml, Pathname);
728 #endif
729 }
730 
731 ACPI_EXPORT_SYMBOL (AcpiTracePoint)
732 
733 
734 #endif
735