⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nsdump.c

📁 acpi tools for linux include acpiexec and acpixtract
💻 C
📖 第 1 页 / 共 2 页
字号:
                    }                }                AcpiOsPrintf ("\n");            }            else            {                AcpiOsPrintf ("[Length not yet evaluated]\n");            }            break;        case ACPI_TYPE_STRING:            AcpiOsPrintf ("Len %.2X ", ObjDesc->String.Length);            AcpiUtPrintString (ObjDesc->String.Pointer, 32);            AcpiOsPrintf ("\n");            break;        case ACPI_TYPE_REGION:            AcpiOsPrintf ("[%s]",                AcpiUtGetRegionName (ObjDesc->Region.SpaceId));            if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID)            {                AcpiOsPrintf (" Addr %8.8X%8.8X Len %.4X\n",                    ACPI_FORMAT_NATIVE_UINT (ObjDesc->Region.Address),                    ObjDesc->Region.Length);            }            else            {                AcpiOsPrintf (" [Address/Length not yet evaluated]\n");            }            break;        case ACPI_TYPE_LOCAL_REFERENCE:            AcpiOsPrintf ("[%s]\n",                AcpiPsGetOpcodeName (ObjDesc->Reference.Opcode));            break;        case ACPI_TYPE_BUFFER_FIELD:            if (ObjDesc->BufferField.BufferObj &&                ObjDesc->BufferField.BufferObj->Buffer.Node)            {                AcpiOsPrintf ("Buf [%4.4s]",                    AcpiUtGetNodeName (ObjDesc->BufferField.BufferObj->Buffer.Node));            }            break;        case ACPI_TYPE_LOCAL_REGION_FIELD:            AcpiOsPrintf ("Rgn [%4.4s]",                AcpiUtGetNodeName (ObjDesc->CommonField.RegionObj->Region.Node));            break;        case ACPI_TYPE_LOCAL_BANK_FIELD:            AcpiOsPrintf ("Rgn [%4.4s] Bnk [%4.4s]",                AcpiUtGetNodeName (ObjDesc->CommonField.RegionObj->Region.Node),                AcpiUtGetNodeName (ObjDesc->BankField.BankObj->CommonField.Node));            break;        case ACPI_TYPE_LOCAL_INDEX_FIELD:            AcpiOsPrintf ("Idx [%4.4s] Dat [%4.4s]",                AcpiUtGetNodeName (ObjDesc->IndexField.IndexObj->CommonField.Node),                AcpiUtGetNodeName (ObjDesc->IndexField.DataObj->CommonField.Node));            break;        case ACPI_TYPE_LOCAL_ALIAS:        case ACPI_TYPE_LOCAL_METHOD_ALIAS:            AcpiOsPrintf ("Target %4.4s (%p)\n",                AcpiUtGetNodeName (ObjDesc), ObjDesc);            break;        default:            AcpiOsPrintf ("Object %p\n", ObjDesc);            break;        }        /* Common field handling */        switch (Type)        {        case ACPI_TYPE_BUFFER_FIELD:        case ACPI_TYPE_LOCAL_REGION_FIELD:        case ACPI_TYPE_LOCAL_BANK_FIELD:        case ACPI_TYPE_LOCAL_INDEX_FIELD:            AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2hd\n",                (ObjDesc->CommonField.BaseByteOffset * 8)                    + ObjDesc->CommonField.StartFieldBitOffset,                ObjDesc->CommonField.BitLength,                ObjDesc->CommonField.AccessByteWidth);            break;        default:            break;        }        break;    case ACPI_DISPLAY_OBJECTS:        AcpiOsPrintf ("O:%p", ObjDesc);        if (!ObjDesc)        {            /* No attached object, we are done */            AcpiOsPrintf ("\n");            return (AE_OK);        }        AcpiOsPrintf ("(R%d)", ObjDesc->Common.ReferenceCount);        switch (Type)        {        case ACPI_TYPE_METHOD:            /* Name is a Method and its AML offset/length are set */            AcpiOsPrintf (" M:%p-%X\n", ObjDesc->Method.AmlStart,                                        ObjDesc->Method.AmlLength);            break;        case ACPI_TYPE_INTEGER:            AcpiOsPrintf (" I:%8.8X8.8%X\n",                    ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));            break;        case ACPI_TYPE_STRING:            AcpiOsPrintf (" S:%p-%X\n", ObjDesc->String.Pointer,                                        ObjDesc->String.Length);            break;        case ACPI_TYPE_BUFFER:            AcpiOsPrintf (" B:%p-%X\n", ObjDesc->Buffer.Pointer,                                        ObjDesc->Buffer.Length);            break;        default:            AcpiOsPrintf ("\n");            break;        }        break;    default:        AcpiOsPrintf ("\n");        break;    }    /* If debug turned off, done */    if (!(AcpiDbgLevel & ACPI_LV_VALUES))    {        return (AE_OK);    }    /* If there is an attached object, display it */    DbgLevel     = AcpiDbgLevel;    AcpiDbgLevel = 0;    ObjDesc      = AcpiNsGetAttachedObject (ThisNode);    AcpiDbgLevel = DbgLevel;    /* Dump attached objects */    while (ObjDesc)    {        ObjType = ACPI_TYPE_INVALID;        AcpiOsPrintf ("Attached Object %p: ", ObjDesc);        /* Decode the type of attached object and dump the contents */        switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc))        {        case ACPI_DESC_TYPE_NAMED:            AcpiOsPrintf ("(Ptr to Node)\n");            BytesToDump = sizeof (ACPI_NAMESPACE_NODE);            ACPI_DUMP_BUFFER (ObjDesc, BytesToDump);            break;        case ACPI_DESC_TYPE_OPERAND:            ObjType = ACPI_GET_OBJECT_TYPE (ObjDesc);            if (ObjType > ACPI_TYPE_LOCAL_MAX)            {                AcpiOsPrintf ("(Ptr to ACPI Object type %X [UNKNOWN])\n",                    ObjType);                BytesToDump = 32;            }            else            {                AcpiOsPrintf ("(Ptr to ACPI Object type %X [%s])\n",                    ObjType, AcpiUtGetTypeName (ObjType));                BytesToDump = sizeof (ACPI_OPERAND_OBJECT);            }            ACPI_DUMP_BUFFER (ObjDesc, BytesToDump);            break;        default:            break;        }        /* If value is NOT an internal object, we are done */        if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)        {            goto Cleanup;        }        /*         * Valid object, get the pointer to next level, if any         */        switch (ObjType)        {        case ACPI_TYPE_BUFFER:        case ACPI_TYPE_STRING:            /*             * NOTE: takes advantage of common fields between string/buffer             */            BytesToDump = ObjDesc->String.Length;            ObjDesc = (void *) ObjDesc->String.Pointer;            AcpiOsPrintf ( "(Buffer/String pointer %p length %X)\n",                ObjDesc, BytesToDump);            ACPI_DUMP_BUFFER (ObjDesc, BytesToDump);            goto Cleanup;        case ACPI_TYPE_BUFFER_FIELD:            ObjDesc = (ACPI_OPERAND_OBJECT *) ObjDesc->BufferField.BufferObj;            break;        case ACPI_TYPE_PACKAGE:            ObjDesc = (void *) ObjDesc->Package.Elements;            break;        case ACPI_TYPE_METHOD:            ObjDesc = (void *) ObjDesc->Method.AmlStart;            break;        case ACPI_TYPE_LOCAL_REGION_FIELD:            ObjDesc = (void *) ObjDesc->Field.RegionObj;            break;        case ACPI_TYPE_LOCAL_BANK_FIELD:            ObjDesc = (void *) ObjDesc->BankField.RegionObj;            break;        case ACPI_TYPE_LOCAL_INDEX_FIELD:            ObjDesc = (void *) ObjDesc->IndexField.IndexObj;            break;        default:            goto Cleanup;        }        ObjType = ACPI_TYPE_INVALID;   /* Terminate loop after next pass */    }Cleanup:    AcpiOsPrintf ("\n");    return (AE_OK);}/******************************************************************************* * * FUNCTION:    AcpiNsDumpObjects * * PARAMETERS:  Type                - Object type to be dumped *              DisplayType         - 0 or ACPI_DISPLAY_SUMMARY *              MaxDepth            - Maximum depth of dump. Use ACPI_UINT32_MAX *                                    for an effectively unlimited depth. *              OwnerId             - Dump only objects owned by this ID.  Use *                                    ACPI_UINT32_MAX to match all owners. *              StartHandle         - Where in namespace to start/end search * * RETURN:      None * * DESCRIPTION: Dump typed objects within the loaded namespace. *              Uses AcpiNsWalkNamespace in conjunction with AcpiNsDumpOneObject. * ******************************************************************************/voidAcpiNsDumpObjects (    ACPI_OBJECT_TYPE        Type,    UINT8                   DisplayType,    UINT32                  MaxDepth,    ACPI_OWNER_ID           OwnerId,    ACPI_HANDLE             StartHandle){    ACPI_WALK_INFO          Info;    ACPI_FUNCTION_ENTRY ();    Info.DebugLevel = ACPI_LV_TABLES;    Info.OwnerId = OwnerId;    Info.DisplayType = DisplayType;    (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth,                ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES,                AcpiNsDumpOneObject, (void *) &Info, NULL);}/******************************************************************************* * * FUNCTION:    AcpiNsDumpEntry * * PARAMETERS:  Handle              - Node to be dumped *              DebugLevel          - Output level * * RETURN:      None * * DESCRIPTION: Dump a single Node * ******************************************************************************/voidAcpiNsDumpEntry (    ACPI_HANDLE             Handle,    UINT32                  DebugLevel){    ACPI_WALK_INFO          Info;    ACPI_FUNCTION_ENTRY ();    Info.DebugLevel = DebugLevel;    Info.OwnerId = ACPI_OWNER_ID_MAX;    Info.DisplayType = ACPI_DISPLAY_SUMMARY;    (void) AcpiNsDumpOneObject (Handle, 1, &Info, NULL);}#ifdef ACPI_ASL_COMPILER/******************************************************************************* * * FUNCTION:    AcpiNsDumpTables * * PARAMETERS:  SearchBase          - Root of subtree to be dumped, or *                                    NS_ALL to dump the entire namespace *              MaxDepth            - Maximum depth of dump.  Use INT_MAX *                                    for an effectively unlimited depth. * * RETURN:      None * * DESCRIPTION: Dump the name space, or a portion of it. * ******************************************************************************/voidAcpiNsDumpTables (    ACPI_HANDLE             SearchBase,    UINT32                  MaxDepth){    ACPI_HANDLE             SearchHandle = SearchBase;    ACPI_FUNCTION_TRACE (NsDumpTables);    if (!AcpiGbl_RootNode)    {        /*         * If the name space has not been initialized,         * there is nothing to dump.         */        ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "namespace not initialized!\n"));        return_VOID;    }    if (ACPI_NS_ALL == SearchBase)    {        /* Entire namespace */        SearchHandle = AcpiGbl_RootNode;        ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "\\\n"));    }    AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, MaxDepth,            ACPI_OWNER_ID_MAX, SearchHandle);    return_VOID;}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -