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

📄 tbinstal.c

📁 acpi tools for linux include acpiexec and acpixtract
💻 C
📖 第 1 页 / 共 2 页
字号:
 * FUNCTION:    AcpiTbStoreTable * * PARAMETERS:  Address             - Table address *              Table               - Table header *              Length              - Table length *              Flags               - flags * * RETURN:      Status and table index. * * DESCRIPTION: Add an ACPI table to the global table list * ******************************************************************************/ACPI_STATUSAcpiTbStoreTable (    ACPI_PHYSICAL_ADDRESS   Address,    ACPI_TABLE_HEADER       *Table,    UINT32                  Length,    UINT8                   Flags,    ACPI_NATIVE_UINT        *TableIndex){    ACPI_STATUS             Status = AE_OK;    /* Ensure that there is room for the table in the Root Table List */    if (AcpiGbl_RootTableList.Count >= AcpiGbl_RootTableList.Size)    {        Status = AcpiTbResizeRootTableList();        if (ACPI_FAILURE (Status))        {            return (Status);        }    }    /* Initialize added table */    AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Address = Address;    AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Pointer = Table;    AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Length = Length;    AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].OwnerId = 0;    AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Flags = Flags;    ACPI_MOVE_32_TO_32 (        &(AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Signature),        Table->Signature);    *TableIndex = AcpiGbl_RootTableList.Count;    AcpiGbl_RootTableList.Count++;    return (Status);}/******************************************************************************* * * FUNCTION:    AcpiTbDeleteTable * * PARAMETERS:  TableIndex          - Table index * * RETURN:      None * * DESCRIPTION: Delete one internal ACPI table * ******************************************************************************/voidAcpiTbDeleteTable (    ACPI_TABLE_DESC         *TableDesc){    /* Table must be mapped or allocated */    if (!TableDesc->Pointer)    {        return;    }    switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK)    {    case ACPI_TABLE_ORIGIN_MAPPED:        AcpiOsUnmapMemory (TableDesc->Pointer, TableDesc->Length);        break;    case ACPI_TABLE_ORIGIN_ALLOCATED:        ACPI_FREE (TableDesc->Pointer);        break;    default:        break;    }    TableDesc->Pointer = NULL;}/******************************************************************************* * * FUNCTION:    AcpiTbTerminate * * PARAMETERS:  None * * RETURN:      None * * DESCRIPTION: Delete all internal ACPI tables * ******************************************************************************/voidAcpiTbTerminate (    void){    ACPI_NATIVE_UINT        i;    ACPI_FUNCTION_TRACE (TbTerminate);    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    /* Delete the individual tables */    for (i = 0; i < AcpiGbl_RootTableList.Count; i++)    {        AcpiTbDeleteTable (&AcpiGbl_RootTableList.Tables[i]);    }    /*     * Delete the root table array if allocated locally. Array cannot be     * mapped, so we don't need to check for that flag.     */    if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED)    {        ACPI_FREE (AcpiGbl_RootTableList.Tables);    }    AcpiGbl_RootTableList.Tables = NULL;    AcpiGbl_RootTableList.Flags = 0;    AcpiGbl_RootTableList.Count = 0;    ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ACPI Tables freed\n"));    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);}/******************************************************************************* * * FUNCTION:    AcpiTbDeleteNamespaceByOwner * * PARAMETERS:  TableIndex          - Table index * * RETURN:      None * * DESCRIPTION: Delete all namespace objects created when this table was loaded. * ******************************************************************************/voidAcpiTbDeleteNamespaceByOwner (    ACPI_NATIVE_UINT        TableIndex){    ACPI_OWNER_ID           OwnerId;    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    if (TableIndex < AcpiGbl_RootTableList.Count)    {        OwnerId = AcpiGbl_RootTableList.Tables[TableIndex].OwnerId;    }    else    {        (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);        return;    }    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);    AcpiNsDeleteNamespaceByOwner (OwnerId);}/******************************************************************************* * * FUNCTION:    AcpiTbAllocateOwnerId * * PARAMETERS:  TableIndex          - Table index * * RETURN:      Status * * DESCRIPTION: Allocates OwnerId in TableDesc * ******************************************************************************/ACPI_STATUSAcpiTbAllocateOwnerId (    ACPI_NATIVE_UINT        TableIndex){    ACPI_STATUS             Status = AE_BAD_PARAMETER;    ACPI_FUNCTION_TRACE (TbAllocateOwnerId);    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    if (TableIndex < AcpiGbl_RootTableList.Count)    {        Status = AcpiUtAllocateOwnerId                    (&(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId));    }    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);    return_ACPI_STATUS (Status);}/******************************************************************************* * * FUNCTION:    AcpiTbReleaseOwnerId * * PARAMETERS:  TableIndex          - Table index * * RETURN:      Status * * DESCRIPTION: Releases OwnerId in TableDesc * ******************************************************************************/ACPI_STATUSAcpiTbReleaseOwnerId (    ACPI_NATIVE_UINT        TableIndex){    ACPI_STATUS             Status = AE_BAD_PARAMETER;    ACPI_FUNCTION_TRACE (TbReleaseOwnerId);    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    if (TableIndex < AcpiGbl_RootTableList.Count)    {        AcpiUtReleaseOwnerId (&(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId));        Status = AE_OK;    }    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);    return_ACPI_STATUS (Status);}/******************************************************************************* * * FUNCTION:    AcpiTbGetOwnerId * * PARAMETERS:  TableIndex          - Table index *              OwnerId             - Where the table OwnerId is returned * * RETURN:      Status * * DESCRIPTION: returns OwnerId for the ACPI table * ******************************************************************************/ACPI_STATUSAcpiTbGetOwnerId (    ACPI_NATIVE_UINT        TableIndex,    ACPI_OWNER_ID           *OwnerId){    ACPI_STATUS             Status = AE_BAD_PARAMETER;    ACPI_FUNCTION_TRACE (TbGetOwnerId);    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    if (TableIndex < AcpiGbl_RootTableList.Count)    {        *OwnerId = AcpiGbl_RootTableList.Tables[TableIndex].OwnerId;        Status = AE_OK;    }    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);    return_ACPI_STATUS (Status);}/******************************************************************************* * * FUNCTION:    AcpiTbIsTableLoaded * * PARAMETERS:  TableIndex          - Table index * * RETURN:      Table Loaded Flag * ******************************************************************************/BOOLEANAcpiTbIsTableLoaded (    ACPI_NATIVE_UINT        TableIndex){    BOOLEAN                 IsLoaded = FALSE;    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    if (TableIndex < AcpiGbl_RootTableList.Count)    {        IsLoaded = (BOOLEAN)            (AcpiGbl_RootTableList.Tables[TableIndex].Flags & ACPI_TABLE_IS_LOADED);    }    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);    return (IsLoaded);}/******************************************************************************* * * FUNCTION:    AcpiTbSetTableLoadedFlag * * PARAMETERS:  TableIndex          - Table index *              IsLoaded            - TRUE if table is loaded, FALSE otherwise * * RETURN:      None * * DESCRIPTION: Sets the table loaded flag to either TRUE or FALSE. * ******************************************************************************/voidAcpiTbSetTableLoadedFlag (    ACPI_NATIVE_UINT        TableIndex,    BOOLEAN                 IsLoaded){    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    if (TableIndex < AcpiGbl_RootTableList.Count)    {        if (IsLoaded)        {            AcpiGbl_RootTableList.Tables[TableIndex].Flags |= ACPI_TABLE_IS_LOADED;        }        else        {            AcpiGbl_RootTableList.Tables[TableIndex].Flags &= ~ACPI_TABLE_IS_LOADED;        }    }    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);}

⌨️ 快捷键说明

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