uint32 fixed_event_status(uint32 event) { ACPI_EVENT_STATUS status = 0; AcpiGetEventStatus(event, &status); return status/* & ACPI_EVENT_FLAG_SET*/; }
ACPI_STATUS AtFixedEventsCommon( UINT32 ApiCall, UINT32 CheckAction, ACPI_STATUS ExpectedStatus) { ACPI_STATUS Status; UINT32 Event, Flags = 0; UINT32 i; char *ApiCallName; ACPI_EVENT_STATUS EventStatus, *EventStatusPointer = &EventStatus; Status = AtSubsystemInit( AAPITS_INI_DEF, AAPITS_EN_FLAGS, AAPITS_OI_FLAGS, NULL); if (ACPI_FAILURE(Status)) { return (Status); } for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { switch (i) { case 0: Event = ACPI_EVENT_PMTIMER; break; case 1: Event = ACPI_EVENT_GLOBAL; break; case 2: Event = ACPI_EVENT_POWER_BUTTON; break; case 3: Event = ACPI_EVENT_SLEEP_BUTTON; break; case 4: Event = ACPI_EVENT_RTC; break; default: TestErrors++; printf ("Test Error: the number of Fixed Events (%d) too big (should be 5)\n", ACPI_NUM_FIXED_EVENTS); return (AE_ERROR); } if (CheckAction == 1) { Event += ACPI_NUM_FIXED_EVENTS; } else if (CheckAction == 2) { EventStatusPointer = NULL; } switch (ApiCall) { case 0: ApiCallName = "AcpiEnableEvent"; Status = AcpiEnableEvent(Event, Flags); break; case 1: ApiCallName = "AcpiDisableEvent"; Status = AcpiDisableEvent(Event, Flags); break; case 2: ApiCallName = "AcpiClearEvent"; Status = AcpiClearEvent(Event); break; case 3: ApiCallName = "AcpiGetEventStatus"; Status = AcpiGetEventStatus(Event, EventStatusPointer); break; default: TestErrors++; printf ("Test Error: the ApiCall number (%d) should be in range 0-3\n", ApiCall); return (AE_ERROR); } if (Status != ExpectedStatus) { AapiErrors++; printf ("Api Error: %s(%d) returned %s, expected %s\n", ApiCallName, Event, AcpiFormatException(Status), AcpiFormatException(ExpectedStatus)); if (Status != AE_OK) { return (Status); } else { return (AE_ERROR); } } } return (AtTerminateCtrlCheck(AE_OK, ALL_STAT)); }