nsdump.c revision 84491
1/******************************************************************************
2 *
3 * Module Name: nsdump - table dumping routines for debug
4 *              $Revision: 100 $
5 *
6 *****************************************************************************/
7
8/******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
12 * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp.
13 * All rights reserved.
14 *
15 * 2. License
16 *
17 * 2.1. This is your license from Intel Corp. under its intellectual property
18 * rights.  You may have additional license terms from the party that provided
19 * you this software, covering your right to use that party's intellectual
20 * property rights.
21 *
22 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23 * copy of the source code appearing in this file ("Covered Code") an
24 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25 * base code distributed originally by Intel ("Original Intel Code") to copy,
26
27 * make derivatives, distribute, use and display any portion of the Covered
28 * Code in any form, with the right to sublicense such rights; and
29 *
30 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
31 * license (with the right to sublicense), under only those claims of Intel
32 * patents that are infringed by the Original Intel Code, to make, use, sell,
33 * offer to sell, and import the Covered Code and derivative works thereof
34 * solely to the minimum extent necessary to exercise the above copyright
35 * license, and in no event shall the patent license extend to any additions
36 * to or modifications of the Original Intel Code.  No other license or right
37 * is granted directly or by implication, estoppel or otherwise;
38 *
39 * The above copyright and patent license is granted only if the following
40 * conditions are met:
41 *
42 * 3. Conditions
43 *
44 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
45 * Redistribution of source code of any substantial portion of the Covered
46 * Code or modification with rights to further distribute source must include
47 * the above Copyright Notice, the above License, this list of Conditions,
48 * and the following Disclaimer and Export Compliance provision.  In addition,
49 * Licensee must cause all Covered Code to which Licensee contributes to
50 * contain a file documenting the changes Licensee made to create that Covered
51 * Code and the date of any change.  Licensee must include in that file the
52 * documentation of any changes made by any predecessor Licensee.  Licensee
53 * must include a prominent statement that the modification is derived,
54 * directly or indirectly, from Original Intel Code.
55 *
56 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
57 * Redistribution of source code of any substantial portion of the Covered
58 * Code or modification without rights to further distribute source must
59 * include the following Disclaimer and Export Compliance provision in the
60 * documentation and/or other materials provided with distribution.  In
61 * addition, Licensee may not authorize further sublicense of source of any
62 * portion of the Covered Code, and must include terms to the effect that the
63 * license from Licensee to its licensee is limited to the intellectual
64 * property embodied in the software Licensee provides to its licensee, and
65 * not to intellectual property embodied in modifications its licensee may
66 * make.
67 *
68 * 3.3. Redistribution of Executable. Redistribution in executable form of any
69 * substantial portion of the Covered Code or modification must reproduce the
70 * above Copyright Notice, and the following Disclaimer and Export Compliance
71 * provision in the documentation and/or other materials provided with the
72 * distribution.
73 *
74 * 3.4. Intel retains all right, title, and interest in and to the Original
75 * Intel Code.
76 *
77 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
78 * Intel shall be used in advertising or otherwise to promote the sale, use or
79 * other dealings in products derived from or relating to the Covered Code
80 * without prior written authorization from Intel.
81 *
82 * 4. Disclaimer and Export Compliance
83 *
84 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
85 * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
86 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
87 * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
88 * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
89 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
90 * PARTICULAR PURPOSE.
91 *
92 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
93 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
94 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
95 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
96 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
97 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
98 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
99 * LIMITED REMEDY.
100 *
101 * 4.3. Licensee shall not export, either directly or indirectly, any of this
102 * software or system incorporating such software without first obtaining any
103 * required license or other approval from the U. S. Department of Commerce or
104 * any other agency or department of the United States Government.  In the
105 * event Licensee exports any such software from the United States or
106 * re-exports any such software from a foreign destination, Licensee shall
107 * ensure that the distribution and export/re-export of the software is in
108 * compliance with all laws, regulations, orders, or other restrictions of the
109 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
110 * any of its subsidiaries will export/re-export any technical data, process,
111 * software, or service, directly or indirectly, to any country for which the
112 * United States government or any agency thereof requires an export license,
113 * other governmental approval, or letter of assurance, without first obtaining
114 * such license, approval or letter.
115 *
116 *****************************************************************************/
117
118#define __NSDUMP_C__
119
120#include "acpi.h"
121#include "acinterp.h"
122#include "acnamesp.h"
123#include "actables.h"
124
125
126#define _COMPONENT          ACPI_NAMESPACE
127        MODULE_NAME         ("nsdump")
128
129
130#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER)
131
132/*******************************************************************************
133 *
134 * FUNCTION:    AcpiNsDumpPathname
135 *
136 * PARAMETERS:  Handle              - Object
137 *              Msg                 - Prefix message
138 *              Level               - Desired debug level
139 *              Component           - Caller's component ID
140 *
141 * DESCRIPTION: Print an object's full namespace pathname
142 *              Manages allocation/freeing of a pathname buffer
143 *
144 ******************************************************************************/
145
146ACPI_STATUS
147AcpiNsDumpPathname (
148    ACPI_HANDLE             Handle,
149    NATIVE_CHAR             *Msg,
150    UINT32                  Level,
151    UINT32                  Component)
152{
153    NATIVE_CHAR             *Buffer;
154    UINT32                  Length;
155
156
157    FUNCTION_TRACE ("NsDumpPathname");
158
159
160    /* Do this only if the requested debug level and component are enabled */
161
162    if (!(AcpiDbgLevel & Level) || !(AcpiDbgLayer & Component))
163    {
164        return_ACPI_STATUS (AE_OK);
165    }
166
167    Buffer = ACPI_MEM_ALLOCATE (PATHNAME_MAX);
168    if (!Buffer)
169    {
170        return_ACPI_STATUS (AE_NO_MEMORY);
171    }
172
173    /* Convert handle to a full pathname and print it (with supplied message) */
174
175    Length = PATHNAME_MAX;
176    if (ACPI_SUCCESS (AcpiNsHandleToPathname (Handle, &Length, Buffer)))
177    {
178        AcpiOsPrintf ("%s %s (%p)\n", Msg, Buffer, Handle);
179    }
180
181    ACPI_MEM_FREE (Buffer);
182
183    return_ACPI_STATUS (AE_OK);
184}
185
186
187/*******************************************************************************
188 *
189 * FUNCTION:    AcpiNsDumpOneObject
190 *
191 * PARAMETERS:  Handle              - Node to be dumped
192 *              Level               - Nesting level of the handle
193 *              Context             - Passed into WalkNamespace
194 *
195 * DESCRIPTION: Dump a single Node
196 *              This procedure is a UserFunction called by AcpiNsWalkNamespace.
197 *
198 ******************************************************************************/
199
200ACPI_STATUS
201AcpiNsDumpOneObject (
202    ACPI_HANDLE             ObjHandle,
203    UINT32                  Level,
204    void                    *Context,
205    void                    **ReturnValue)
206{
207    ACPI_WALK_INFO          *Info = (ACPI_WALK_INFO *) Context;
208    ACPI_NAMESPACE_NODE     *ThisNode;
209    UINT8                   *Value;
210    ACPI_OPERAND_OBJECT     *ObjDesc = NULL;
211    ACPI_OBJECT_TYPE8       ObjType;
212    ACPI_OBJECT_TYPE8       Type;
213    UINT32                  BytesToDump;
214    UINT32                  DownstreamSiblingMask = 0;
215    UINT32                  LevelTmp;
216    UINT32                  WhichBit;
217
218
219    PROC_NAME ("NsDumpOneObject");
220
221
222    ThisNode = AcpiNsConvertHandleToEntry (ObjHandle);
223
224    LevelTmp    = Level;
225    Type        = ThisNode->Type;
226    WhichBit    = 1;
227
228
229    if (!(AcpiDbgLevel & Info->DebugLevel))
230    {
231        return (AE_OK);
232    }
233
234    if (!ObjHandle)
235    {
236        ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Null object handle\n"));
237        return (AE_OK);
238    }
239
240    /* Check if the owner matches */
241
242    if ((Info->OwnerId != ACPI_UINT32_MAX) &&
243        (Info->OwnerId != ThisNode->OwnerId))
244    {
245        return (AE_OK);
246    }
247
248
249    /* Indent the object according to the level */
250
251    while (LevelTmp--)
252    {
253
254        /* Print appropriate characters to form tree structure */
255
256        if (LevelTmp)
257        {
258            if (DownstreamSiblingMask & WhichBit)
259            {
260                ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "|"));
261            }
262
263            else
264            {
265                ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " "));
266            }
267
268            WhichBit <<= 1;
269        }
270
271        else
272        {
273            if (AcpiNsExistDownstreamSibling (ThisNode + 1))
274            {
275                DownstreamSiblingMask |= (1 << (Level - 1));
276                ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "+"));
277            }
278
279            else
280            {
281                DownstreamSiblingMask &= ACPI_UINT32_MAX ^ (1 << (Level - 1));
282                ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "+"));
283            }
284
285            if (ThisNode->Child == NULL)
286            {
287                ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "-"));
288            }
289
290            else if (AcpiNsExistDownstreamSibling (ThisNode->Child))
291            {
292                ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "+"));
293            }
294
295            else
296            {
297                ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "-"));
298            }
299        }
300    }
301
302
303    /* Check the integrity of our data */
304
305    if (Type > INTERNAL_TYPE_MAX)
306    {
307        Type = INTERNAL_TYPE_DEF_ANY;                                /* prints as *ERROR* */
308    }
309
310    if (!AcpiUtValidAcpiName (ThisNode->Name))
311    {
312        REPORT_WARNING (("Invalid ACPI Name %08X\n", ThisNode->Name));
313    }
314
315    /*
316     * Now we can print out the pertinent information
317     */
318    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " %4.4s %-9s ", &ThisNode->Name, AcpiUtGetTypeName (Type)));
319    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "%p S:%p O:%p",  ThisNode, ThisNode->Child, ThisNode->Object));
320
321
322    if (!ThisNode->Object)
323    {
324        /* No attached object, we are done */
325
326        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
327        return (AE_OK);
328    }
329
330    switch (Type)
331    {
332
333    case ACPI_TYPE_METHOD:
334
335        /* Name is a Method and its AML offset/length are set */
336
337        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " M:%p-%X\n",
338                    ((ACPI_OPERAND_OBJECT  *) ThisNode->Object)->Method.AmlStart,
339                    ((ACPI_OPERAND_OBJECT  *) ThisNode->Object)->Method.AmlLength));
340
341        break;
342
343
344    case ACPI_TYPE_INTEGER:
345
346        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " N:%X\n",
347                    ((ACPI_OPERAND_OBJECT  *) ThisNode->Object)->Integer.Value));
348        break;
349
350
351    case ACPI_TYPE_STRING:
352
353        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " S:%p-%X\n",
354                    ((ACPI_OPERAND_OBJECT  *) ThisNode->Object)->String.Pointer,
355                    ((ACPI_OPERAND_OBJECT  *) ThisNode->Object)->String.Length));
356        break;
357
358
359    case ACPI_TYPE_BUFFER:
360
361        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " B:%p-%X\n",
362                    ((ACPI_OPERAND_OBJECT  *) ThisNode->Object)->Buffer.Pointer,
363                    ((ACPI_OPERAND_OBJECT  *) ThisNode->Object)->Buffer.Length));
364        break;
365
366
367    default:
368
369        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
370        break;
371    }
372
373    /* If debug turned off, done */
374
375    if (!(AcpiDbgLevel & ACPI_LV_VALUES))
376    {
377        return (AE_OK);
378    }
379
380
381    /* If there is an attached object, display it */
382
383    Value = ThisNode->Object;
384
385    /* Dump attached objects */
386
387    while (Value)
388    {
389        ObjType = INTERNAL_TYPE_INVALID;
390
391        /* Decode the type of attached object and dump the contents */
392
393        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "        Attached Object %p: ", Value));
394
395        if (AcpiTbSystemTablePointer (Value))
396        {
397            ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(Ptr to AML Code)\n"));
398            BytesToDump = 16;
399        }
400
401        else if (VALID_DESCRIPTOR_TYPE (Value, ACPI_DESC_TYPE_NAMED))
402        {
403            ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(Ptr to Node)\n"));
404            BytesToDump = sizeof (ACPI_NAMESPACE_NODE);
405        }
406
407
408        else if (VALID_DESCRIPTOR_TYPE (Value, ACPI_DESC_TYPE_INTERNAL))
409        {
410            ObjDesc = (ACPI_OPERAND_OBJECT  *) Value;
411            ObjType = ObjDesc->Common.Type;
412
413            if (ObjType > INTERNAL_TYPE_MAX)
414            {
415                ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(Ptr to ACPI Object type %X [UNKNOWN])\n", ObjType));
416                BytesToDump = 32;
417            }
418
419            else
420            {
421                ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(Ptr to ACPI Object type %X [%s])\n",
422                                    ObjType, AcpiUtGetTypeName (ObjType)));
423                BytesToDump = sizeof (ACPI_OPERAND_OBJECT);
424            }
425        }
426
427        else
428        {
429            ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(String or Buffer - not descriptor)\n", Value));
430            BytesToDump = 16;
431        }
432
433        DUMP_BUFFER (Value, BytesToDump);
434
435        /* If value is NOT an internal object, we are done */
436
437        if ((AcpiTbSystemTablePointer (Value)) ||
438            (VALID_DESCRIPTOR_TYPE (Value, ACPI_DESC_TYPE_NAMED)))
439        {
440            goto Cleanup;
441        }
442
443        /*
444         * Valid object, get the pointer to next level, if any
445         */
446        switch (ObjType)
447        {
448        case ACPI_TYPE_STRING:
449            Value = (UINT8 *) ObjDesc->String.Pointer;
450            break;
451
452        case ACPI_TYPE_BUFFER:
453            Value = (UINT8 *) ObjDesc->Buffer.Pointer;
454            break;
455
456        case ACPI_TYPE_BUFFER_FIELD:
457            Value = (UINT8 *) ObjDesc->BufferField.BufferObj;
458            break;
459
460        case ACPI_TYPE_PACKAGE:
461            Value = (UINT8 *) ObjDesc->Package.Elements;
462            break;
463
464        case ACPI_TYPE_METHOD:
465            Value = (UINT8 *) ObjDesc->Method.AmlStart;
466            break;
467
468        case INTERNAL_TYPE_REGION_FIELD:
469            Value = (UINT8 *) ObjDesc->Field.RegionObj;
470            break;
471
472        case INTERNAL_TYPE_BANK_FIELD:
473            Value = (UINT8 *) ObjDesc->BankField.RegionObj;
474            break;
475
476        case INTERNAL_TYPE_INDEX_FIELD:
477            Value = (UINT8 *) ObjDesc->IndexField.IndexObj;
478            break;
479
480       default:
481            goto Cleanup;
482        }
483
484        ObjType = INTERNAL_TYPE_INVALID;     /* Terminate loop after next pass */
485    }
486
487Cleanup:
488    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
489    return (AE_OK);
490}
491
492
493/*******************************************************************************
494 *
495 * FUNCTION:    AcpiNsDumpObjects
496 *
497 * PARAMETERS:  Type                - Object type to be dumped
498 *              MaxDepth            - Maximum depth of dump.  Use ACPI_UINT32_MAX
499 *                                    for an effectively unlimited depth.
500 *              OwnerId             - Dump only objects owned by this ID.  Use
501 *                                    ACPI_UINT32_MAX to match all owners.
502 *              StartHandle         - Where in namespace to start/end search
503 *
504 * DESCRIPTION: Dump typed objects within the loaded namespace.
505 *              Uses AcpiNsWalkNamespace in conjunction with AcpiNsDumpOneObject.
506 *
507 ******************************************************************************/
508
509void
510AcpiNsDumpObjects (
511    ACPI_OBJECT_TYPE8       Type,
512    UINT32                  MaxDepth,
513    UINT32                  OwnerId,
514    ACPI_HANDLE             StartHandle)
515{
516    ACPI_WALK_INFO          Info;
517
518
519    FUNCTION_ENTRY ();
520
521
522    Info.DebugLevel = ACPI_LV_TABLES;
523    Info.OwnerId = OwnerId;
524
525    AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, NS_WALK_NO_UNLOCK, AcpiNsDumpOneObject,
526                        (void *) &Info, NULL);
527}
528
529
530#ifndef _ACPI_ASL_COMPILER
531/*******************************************************************************
532 *
533 * FUNCTION:    AcpiNsDumpOneDevice
534 *
535 * PARAMETERS:  Handle              - Node to be dumped
536 *              Level               - Nesting level of the handle
537 *              Context             - Passed into WalkNamespace
538 *
539 * DESCRIPTION: Dump a single Node that represents a device
540 *              This procedure is a UserFunction called by AcpiNsWalkNamespace.
541 *
542 ******************************************************************************/
543
544ACPI_STATUS
545AcpiNsDumpOneDevice (
546    ACPI_HANDLE             ObjHandle,
547    UINT32                  Level,
548    void                    *Context,
549    void                    **ReturnValue)
550{
551    ACPI_DEVICE_INFO        Info;
552    ACPI_STATUS             Status;
553    UINT32                  i;
554
555
556    PROC_NAME ("NsDumpOneDevice");
557
558
559    Status = AcpiNsDumpOneObject (ObjHandle, Level, Context, ReturnValue);
560
561    Status = AcpiGetObjectInfo (ObjHandle, &Info);
562    if (ACPI_SUCCESS (Status))
563    {
564        for (i = 0; i < Level; i++)
565        {
566            ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " "));
567        }
568
569        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "    HID: %.8X, ADR: %.8X, Status: %x\n",
570                        Info.HardwareId, Info.Address, Info.CurrentStatus));
571    }
572
573    return (Status);
574}
575
576
577/*******************************************************************************
578 *
579 * FUNCTION:    AcpiNsDumpRootDevices
580 *
581 * PARAMETERS:  None
582 *
583 * DESCRIPTION: Dump all objects of type "device"
584 *
585 ******************************************************************************/
586
587void
588AcpiNsDumpRootDevices (void)
589{
590    ACPI_HANDLE             SysBusHandle;
591
592
593    PROC_NAME ("NsDumpRootDevices");
594
595
596    /* Only dump the table if tracing is enabled */
597
598    if (!(ACPI_LV_TABLES & AcpiDbgLevel))
599    {
600        return;
601    }
602
603    AcpiGetHandle (0, NS_SYSTEM_BUS, &SysBusHandle);
604
605    ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Display of all devices in the namespace:\n"));
606    AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, ACPI_UINT32_MAX, NS_WALK_NO_UNLOCK,
607                        AcpiNsDumpOneDevice, NULL, NULL);
608}
609
610#endif
611
612/*******************************************************************************
613 *
614 * FUNCTION:    AcpiNsDumpTables
615 *
616 * PARAMETERS:  SearchBase          - Root of subtree to be dumped, or
617 *                                    NS_ALL to dump the entire namespace
618 *              MaxDepth            - Maximum depth of dump.  Use INT_MAX
619 *                                    for an effectively unlimited depth.
620 *
621 * DESCRIPTION: Dump the name space, or a portion of it.
622 *
623 ******************************************************************************/
624
625void
626AcpiNsDumpTables (
627    ACPI_HANDLE             SearchBase,
628    UINT32                  MaxDepth)
629{
630    ACPI_HANDLE             SearchHandle = SearchBase;
631
632
633    FUNCTION_TRACE ("NsDumpTables");
634
635
636    if (!AcpiGbl_RootNode)
637    {
638        /*
639         * If the name space has not been initialized,
640         * there is nothing to dump.
641         */
642        ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "name space not initialized!\n"));
643        return_VOID;
644    }
645
646    if (NS_ALL == SearchBase)
647    {
648        /*  entire namespace    */
649
650        SearchHandle = AcpiGbl_RootNode;
651        ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "\\\n"));
652    }
653
654
655    AcpiNsDumpObjects (ACPI_TYPE_ANY, MaxDepth, ACPI_UINT32_MAX, SearchHandle);
656    return_VOID;
657}
658
659
660/*******************************************************************************
661 *
662 * FUNCTION:    AcpiNsDumpEntry
663 *
664 * PARAMETERS:  Handle              - Node to be dumped
665 *              DebugLevel          - Output level
666 *
667 * DESCRIPTION: Dump a single Node
668 *
669 ******************************************************************************/
670
671void
672AcpiNsDumpEntry (
673    ACPI_HANDLE             Handle,
674    UINT32                  DebugLevel)
675{
676    ACPI_WALK_INFO          Info;
677
678
679    FUNCTION_ENTRY ();
680
681
682    Info.DebugLevel = DebugLevel;
683    Info.OwnerId = ACPI_UINT32_MAX;
684
685    AcpiNsDumpOneObject (Handle, 1, &Info, NULL);
686}
687
688#endif
689
690