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

📄 aeexec.c

📁 acpi tools for linux include acpiexec and acpixtract
💻 C
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************** * * FUNCTION:    AeTableHandler * * PARAMETERS:  Table handler * * RETURN:      Status * * DESCRIPTION: System table handler for AcpiExec utility. * *****************************************************************************/char                *TableEvents[] ={    "LOAD",    "UNLOAD",    "UNKNOWN"};ACPI_STATUSAeTableHandler (    UINT32                  Event,    void                    *Table,    void                    *Context){    if (Event > ACPI_NUM_TABLE_EVENTS)    {        Event = ACPI_NUM_TABLE_EVENTS;    }    /* TBD: could dump entire table header, need a header dump routine */    printf ("**** AcpiExec: Table Event %s, [%4.4s] %p\n",        TableEvents[Event], ((ACPI_TABLE_HEADER *) Table)->Signature, Table);    return (AE_OK);}/****************************************************************************** * * FUNCTION:    AeInstallHandlers * * PARAMETERS:  None * * RETURN:      Status * * DESCRIPTION: Install handlers for the AcpiExec utility. *              NOTE: Currently only a system notify handler is installed. * *****************************************************************************/ACPI_ADR_SPACE_TYPE         SpaceId[] = {0, 1, 2, 3, 4, 5, 6, 0x80};#define AEXEC_NUM_REGIONS   8ACPI_STATUSAeInstallHandlers (void){    ACPI_STATUS             Status;    UINT32                  i;    ACPI_HANDLE             Handle;    ACPI_FUNCTION_ENTRY ();    Status = AcpiInstallTableHandler (AeTableHandler, NULL);    if (ACPI_FAILURE (Status))    {        printf ("Could not install table handler, %s\n",            AcpiFormatException (Status));    }    Status = AcpiInstallExceptionHandler (AeExceptionHandler);    if (ACPI_FAILURE (Status))    {        printf ("Could not install exception handler, %s\n",            AcpiFormatException (Status));    }    Status = AcpiInstallNotifyHandler (ACPI_ROOT_OBJECT, ACPI_SYSTEM_NOTIFY,                                        AeNotifyHandler, NULL);    if (ACPI_FAILURE (Status))    {        printf ("Could not install a global notify handler, %s\n",            AcpiFormatException (Status));    }    Status = AcpiGetHandle (NULL, "\\_SB", &Handle);    if (ACPI_SUCCESS (Status))    {        Status = AcpiInstallNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY,                                            AeNotifyHandler, NULL);        if (ACPI_FAILURE (Status))        {            printf ("Could not install a notify handler, %s\n",                AcpiFormatException (Status));        }        Status = AcpiRemoveNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY,                                            AeNotifyHandler);        if (ACPI_FAILURE (Status))        {            printf ("Could not remove a notify handler, %s\n",                AcpiFormatException (Status));        }        Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY,                                            AeNotifyHandler, NULL);        Status = AcpiRemoveNotifyHandler (Handle, ACPI_ALL_NOTIFY,                                            AeNotifyHandler);        Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY,                                            AeNotifyHandler, NULL);        if (ACPI_FAILURE (Status))        {            printf ("Could not install a notify handler, %s\n",                AcpiFormatException (Status));        }    }    else    {        printf ("No _SB_ found, %s\n", AcpiFormatException (Status));    }    /* Set a handler for all supported operation regions */    for (i = 0; i < AEXEC_NUM_REGIONS; i++)    {        Status = AcpiRemoveAddressSpaceHandler (AcpiGbl_RootNode,                        SpaceId[i], AeRegionHandler);        /* Install handler at the root object.         * TBD: all default handlers should be installed here!         */        Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode,                        SpaceId[i], AeRegionHandler, AeRegionInit, NULL);        if (ACPI_FAILURE (Status))        {            ACPI_EXCEPTION ((AE_INFO, Status,                "Could not install an OpRegion handler for %s space(%d)",                AcpiUtGetRegionName((UINT8) SpaceId[i]), SpaceId[i]));            return (Status);        }    }    /*     * Initialize the global Region Handler space     * MCW 3/23/00     */    AeRegions.NumberOfRegions = 0;    AeRegions.RegionList = NULL;    return Status;}/****************************************************************************** * * FUNCTION:    AeGpeHandler * * DESCRIPTION: GPE handler for acpiexec * *****************************************************************************/UINT32AeGpeHandler (    void                        *Context){    AcpiOsPrintf ("Received a GPE at handler\n");    return (0);}/****************************************************************************** * * FUNCTION:    AfInstallGpeBlock * * PARAMETERS:  None * * RETURN:      None * * DESCRIPTION: Various GPE initialization * *****************************************************************************/voidAfInstallGpeBlock (    void){    ACPI_STATUS                 Status;    ACPI_HANDLE                 Handle;    ACPI_HANDLE                 Handle2 = NULL;    ACPI_HANDLE                 Handle3 = NULL;    ACPI_GENERIC_ADDRESS        BlockAddress;    Status = AcpiGetHandle (NULL, "\\_GPE", &Handle);    if (ACPI_FAILURE (Status))    {        return;    }    BlockAddress.SpaceId = 0;    BlockAddress.Address = 0x76540000;//    Status = AcpiInstallGpeBlock (Handle, &BlockAddress, 4, 8);    /* Above should fail, ignore */    Status = AcpiGetHandle (NULL, "\\GPE2", &Handle2);    if (ACPI_SUCCESS (Status))    {        Status = AcpiInstallGpeBlock (Handle2, &BlockAddress, 8, 8);        AcpiInstallGpeHandler (Handle2, 8, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL);        AcpiSetGpeType (Handle2, 8, ACPI_GPE_TYPE_WAKE);        AcpiEnableGpe (Handle2, 8, 0);    }    Status = AcpiGetHandle (NULL, "\\GPE3", &Handle3);    if (ACPI_SUCCESS (Status))    {        Status = AcpiInstallGpeBlock (Handle3, &BlockAddress, 8, 11);    }//    Status = AcpiRemoveGpeBlock (Handle);//    Status = AcpiRemoveGpeBlock (Handle2);//    Status = AcpiRemoveGpeBlock (Handle3);}/* Test using a Buffer object as a method argument */voidAeTestBufferArgument (void){    ACPI_STATUS             Status;    ACPI_OBJECT_LIST        Params;    ACPI_OBJECT             BufArg;    UINT8                   Buffer[] = {        0,0,0,0,        4,0,0,0,        1,2,3,4};    BufArg.Type = ACPI_TYPE_BUFFER;    BufArg.Buffer.Length = 12;    BufArg.Buffer.Pointer = Buffer;    Params.Count = 1;    Params.Pointer = &BufArg;    Status = AcpiEvaluateObject (NULL, "\\BUF", &Params, NULL);}ACPI_OBJECT                 PkgArg;ACPI_OBJECT                 PkgElements[5];ACPI_OBJECT                 Pkg2Elements[5];ACPI_OBJECT_LIST            Params;/* * Test using a Package object as an method argument */voidAeTestPackageArgument (    void){    ACPI_STATUS             Status;    /* Main package */    PkgArg.Type = ACPI_TYPE_PACKAGE;    PkgArg.Package.Count = 4;    PkgArg.Package.Elements = PkgElements;    /* Main package elements */    PkgElements[0].Type = ACPI_TYPE_INTEGER;    PkgElements[0].Integer.Value = 0x22228888;    PkgElements[1].Type = ACPI_TYPE_STRING;    PkgElements[1].String.Length = sizeof ("Top-level package");    PkgElements[1].String.Pointer = "Top-level package";    PkgElements[2].Type = ACPI_TYPE_BUFFER;    PkgElements[2].Buffer.Length = sizeof ("XXXX");    PkgElements[2].Buffer.Pointer = (UINT8 *) "XXXX";    PkgElements[3].Type = ACPI_TYPE_PACKAGE;    PkgElements[3].Package.Count = 2;    PkgElements[3].Package.Elements = Pkg2Elements;    /* Sub-package elements */    Pkg2Elements[0].Type = ACPI_TYPE_INTEGER;    Pkg2Elements[0].Integer.Value = (ACPI_INTEGER) 0x5555AAAABBBBCCCC;    Pkg2Elements[1].Type = ACPI_TYPE_STRING;    Pkg2Elements[1].String.Length = sizeof ("Nested Package");    Pkg2Elements[1].String.Pointer = "Nested Package";    /* Parameter object */    Params.Count = 1;    Params.Pointer = &PkgArg;    Status = AcpiEvaluateObject (NULL, "\\_PKG", &Params, NULL);}ACPI_STATUSAeGetDevices (    ACPI_HANDLE                     ObjHandle,    UINT32                          NestingLevel,    void                            *Context,    void                            **ReturnValue){    return (AE_OK);}voidAeMiscellaneousTests (    void){    ACPI_HANDLE             Handle;    ACPI_BUFFER             ReturnBuf;    char                    Buffer[32];    ACPI_VENDOR_UUID        Uuid = {0, {ACPI_INIT_UUID (0,0,0,0,0,0,0,0,0,0,0)}};    ACPI_STATUS             Status;    UINT32                  LockHandle1;    UINT32                  LockHandle2;    ACPI_STATISTICS         Stats;    AeTestBufferArgument();    AeTestPackageArgument ();    ReturnBuf.Length = 32;    ReturnBuf.Pointer = Buffer;    AcpiGetName (AcpiGbl_RootNode, ACPI_FULL_PATHNAME, &ReturnBuf);    AcpiEnableEvent (ACPI_EVENT_GLOBAL, 0);    AcpiInstallGpeHandler (NULL, 0, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL);    AcpiSetGpeType (NULL, 0, ACPI_GPE_TYPE_WAKE_RUN);    AcpiEnableGpe (NULL, 0, ACPI_NOT_ISR);    AcpiRemoveGpeHandler (NULL, 0, AeGpeHandler);    AcpiInstallGpeHandler (NULL, 0, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL);    AcpiSetGpeType (NULL, 0, ACPI_GPE_TYPE_WAKE_RUN);    AcpiEnableGpe (NULL, 0, ACPI_NOT_ISR);    AcpiInstallGpeHandler (NULL, 1, ACPI_GPE_EDGE_TRIGGERED, AeGpeHandler, NULL);    AcpiSetGpeType (NULL, 1, ACPI_GPE_TYPE_RUNTIME);    AcpiEnableGpe (NULL, 1, ACPI_NOT_ISR);    AcpiInstallGpeHandler (NULL, 2, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL);    AcpiSetGpeType (NULL, 2, ACPI_GPE_TYPE_WAKE);    AcpiEnableGpe (NULL, 2, ACPI_NOT_ISR);    AcpiInstallGpeHandler (NULL, 3, ACPI_GPE_EDGE_TRIGGERED, AeGpeHandler, NULL);    AcpiSetGpeType (NULL, 3, ACPI_GPE_TYPE_WAKE_RUN);    AcpiInstallGpeHandler (NULL, 4, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL);    AcpiSetGpeType (NULL, 4, ACPI_GPE_TYPE_RUNTIME);    AcpiInstallGpeHandler (NULL, 5, ACPI_GPE_EDGE_TRIGGERED, AeGpeHandler, NULL);    AcpiSetGpeType (NULL, 5, ACPI_GPE_TYPE_WAKE);    AcpiInstallGpeHandler (NULL, 0x19, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL);    AcpiSetGpeType (NULL, 0x19, ACPI_GPE_TYPE_WAKE_RUN);    AcpiEnableGpe (NULL, 0x19, ACPI_NOT_ISR);    AfInstallGpeBlock ();    Status = AcpiGetHandle (NULL, "RSRC", &Handle);    if (ACPI_SUCCESS (Status))    {        ReturnBuf.Length = ACPI_ALLOCATE_BUFFER;        Status = AcpiGetVendorResource (Handle, "_CRS", &Uuid, &ReturnBuf);        if (ACPI_SUCCESS (Status))        {            AcpiOsFree (ReturnBuf.Pointer);        }    }    /* Test global lock */    Status = AcpiAcquireGlobalLock (0xFFFF, &LockHandle1);    if (ACPI_FAILURE (Status))    {        AcpiOsPrintf ("Could not get GlobalLock, %X\n", Status);    }    Status = AcpiAcquireGlobalLock (0x5, &LockHandle2);    if (ACPI_FAILURE (Status))    {        AcpiOsPrintf ("Could not get GlobalLock, %X\n", Status);    }    Status = AcpiReleaseGlobalLock (LockHandle1);    if (ACPI_FAILURE (Status))    {        AcpiOsPrintf ("Could not release GlobalLock, %X\n", Status);    }    Status = AcpiReleaseGlobalLock (LockHandle2);    if (ACPI_FAILURE (Status))    {        AcpiOsPrintf ("Could not release GlobalLock, %X\n", Status);    }    /* Get Devices */    Status = AcpiGetDevices (NULL, AeGetDevices, NULL, NULL);    if (ACPI_FAILURE (Status))    {        AcpiOsPrintf ("Could not AcpiGetDevices, %X\n", Status);    }    Status = AcpiGetStatistics (&Stats);    if (ACPI_FAILURE (Status))    {        AcpiOsPrintf ("Could not AcpiGetStatistics, %X\n", Status);    }}

⌨️ 快捷键说明

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