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

📄 tbxface.c

📁 acpi tools for linux include acpiexec and acpixtract
💻 C
📖 第 1 页 / 共 2 页
字号:
    }    return (AE_NOT_FOUND);}ACPI_EXPORT_SYMBOL (AcpiGetTableHeader)/****************************************************************************** * * FUNCTION:    AcpiGetTable * * PARAMETERS:  Signature           - ACPI signature of needed table *              Instance            - Which instance (for SSDTs) *              OutTable            - Where the pointer to the table is returned * * RETURN:      Status and pointer to table * * DESCRIPTION: Finds and verifies an ACPI table. * *****************************************************************************/ACPI_STATUSAcpiGetTable (    char                    *Signature,    ACPI_NATIVE_UINT        Instance,    ACPI_TABLE_HEADER       **OutTable){    ACPI_NATIVE_UINT        i;    ACPI_NATIVE_UINT        j;    ACPI_STATUS             Status;    /* Parameter validation */    if (!Signature || !OutTable)    {        return (AE_BAD_PARAMETER);    }    /*     * Walk the root table list     */    for (i = 0, j = 0; i < AcpiGbl_RootTableList.Count; i++)    {        if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature),                Signature))        {            continue;        }        if (++j < Instance)        {            continue;        }        Status = AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[i]);        if (ACPI_SUCCESS (Status))        {            *OutTable = AcpiGbl_RootTableList.Tables[i].Pointer;        }        return (Status);    }    return (AE_NOT_FOUND);}ACPI_EXPORT_SYMBOL (AcpiGetTable)/******************************************************************************* * * FUNCTION:    AcpiGetTableByIndex * * PARAMETERS:  TableIndex          - Table index *              Table               - Where the pointer to the table is returned * * RETURN:      Status and pointer to the table * * DESCRIPTION: Obtain a table by an index into the global table list. * ******************************************************************************/ACPI_STATUSAcpiGetTableByIndex (    ACPI_NATIVE_UINT        TableIndex,    ACPI_TABLE_HEADER       **Table){    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE (AcpiGetTableByIndex);    /* Parameter validation */    if (!Table)    {        return_ACPI_STATUS (AE_BAD_PARAMETER);    }    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    /* Validate index */    if (TableIndex >= AcpiGbl_RootTableList.Count)    {        (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);        return_ACPI_STATUS (AE_BAD_PARAMETER);    }    if (!AcpiGbl_RootTableList.Tables[TableIndex].Pointer)    {        /* Table is not mapped, map it */        Status = AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[TableIndex]);        if (ACPI_FAILURE (Status))        {            (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);            return_ACPI_STATUS (Status);        }    }    *Table = AcpiGbl_RootTableList.Tables[TableIndex].Pointer;    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);    return_ACPI_STATUS (AE_OK);}ACPI_EXPORT_SYMBOL (AcpiGetTableByIndex)/******************************************************************************* * * FUNCTION:    AcpiTbLoadNamespace * * PARAMETERS:  None * * RETURN:      Status * * DESCRIPTION: Load the namespace from the DSDT and all SSDTs/PSDTs found in *              the RSDT/XSDT. * ******************************************************************************/static ACPI_STATUSAcpiTbLoadNamespace (    void){    ACPI_STATUS             Status;    ACPI_TABLE_HEADER       *Table;    ACPI_NATIVE_UINT        i;    ACPI_FUNCTION_TRACE (TbLoadNamespace);    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    /*     * Load the namespace. The DSDT is required, but any SSDT and PSDT tables     * are optional.     */    if (!AcpiGbl_RootTableList.Count ||        !ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Signature),                ACPI_SIG_DSDT) ||        ACPI_FAILURE (AcpiTbVerifyTable(&AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT])))    {        Status = AE_NO_ACPI_TABLES;        goto UnlockAndExit;    }    /*     * Find DSDT table     */    Status = AcpiOsTableOverride (                AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer, &Table);    if (ACPI_SUCCESS (Status) && Table)    {        /*         * DSDT table has been found         */        AcpiTbDeleteTable (&AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT]);        AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer = Table;        AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Length = Table->Length;        AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Flags = ACPI_TABLE_ORIGIN_UNKNOWN;        ACPI_INFO ((AE_INFO, "Table DSDT replaced by host OS"));        AcpiTbPrintTableHeader (0, Table);    }    Status = AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT]);    if (ACPI_FAILURE (Status))    {        /* A valid DSDT is required */        Status = AE_NO_ACPI_TABLES;        goto UnlockAndExit;    }    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);    /*     * Load and parse tables.     */    Status = AcpiNsLoadTable (ACPI_TABLE_INDEX_DSDT, AcpiGbl_RootNode);    if (ACPI_FAILURE (Status))    {        return_ACPI_STATUS (Status);    }    /*     * Load any SSDT or PSDT tables. Note: Loop leaves tables locked     */    (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    for (i = 0; i < AcpiGbl_RootTableList.Count; ++i)    {        if ((!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature),                    ACPI_SIG_SSDT) &&             !ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature),                    ACPI_SIG_PSDT)) ||             ACPI_FAILURE (AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[i])))        {            continue;        }        /* Ignore errors while loading tables, get as many as possible */        (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);        (void) AcpiNsLoadTable (i, AcpiGbl_RootNode);        (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);    }    ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "ACPI Tables successfully acquired\n"));UnlockAndExit:    (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);    return_ACPI_STATUS (Status);}/******************************************************************************* * * FUNCTION:    AcpiLoadTables * * PARAMETERS:  None * * RETURN:      Status * * DESCRIPTION: Load the ACPI tables from the RSDT/XSDT * ******************************************************************************/ACPI_STATUSAcpiLoadTables (    void){    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE (AcpiLoadTables);    /*     * Load the namespace from the tables     */    Status = AcpiTbLoadNamespace ();    if (ACPI_FAILURE (Status))    {        ACPI_EXCEPTION ((AE_INFO, Status, "While loading namespace from ACPI tables"));    }    return_ACPI_STATUS (Status);}ACPI_EXPORT_SYMBOL (AcpiLoadTables)/******************************************************************************* * * FUNCTION:    AcpiInstallTableHandler * * PARAMETERS:  Handler         - Table event handler *              Context         - Value passed to the handler on each event * * RETURN:      Status * * DESCRIPTION: Install table event handler * ******************************************************************************/ACPI_STATUSAcpiInstallTableHandler (    ACPI_TABLE_HANDLER      Handler,    void                    *Context){    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE (AcpiInstallTableHandler);    if (!Handler)    {        return_ACPI_STATUS (AE_BAD_PARAMETER);    }    Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);    if (ACPI_FAILURE (Status))    {        return_ACPI_STATUS (Status);    }    /* Don't allow more than one handler */    if (AcpiGbl_TableHandler)    {        Status = AE_ALREADY_EXISTS;        goto Cleanup;    }    /* Install the handler */    AcpiGbl_TableHandler = Handler;    AcpiGbl_TableHandlerContext = Context;Cleanup:    (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);    return_ACPI_STATUS (Status);}ACPI_EXPORT_SYMBOL (AcpiInstallTableHandler)/******************************************************************************* * * FUNCTION:    AcpiRemoveTableHandler * * PARAMETERS:  Handler         - Table event handler that was installed *                                previously. * * RETURN:      Status * * DESCRIPTION: Remove table event handler * ******************************************************************************/ACPI_STATUSAcpiRemoveTableHandler (    ACPI_TABLE_HANDLER      Handler){    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE (AcpiRemoveTableHandler);    Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);    if (ACPI_FAILURE (Status))    {        return_ACPI_STATUS (Status);    }    /* Make sure that the installed handler is the same */    if (!Handler ||        Handler != AcpiGbl_TableHandler)    {        Status = AE_BAD_PARAMETER;        goto Cleanup;    }    /* Remove the handler */    AcpiGbl_TableHandler = NULL;Cleanup:    (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);    return_ACPI_STATUS (Status);}ACPI_EXPORT_SYMBOL (AcpiRemoveTableHandler)

⌨️ 快捷键说明

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