ACPI_STATUS AtInstallGpeBlockExceptionTest( ACPI_OSXF OsxfNum, AT_ACTD_FLAG ActFlag, UINT32 ActCode, UINT32 TFst, ACPI_STATUS Benchmark) { ACPI_STATUS Status; ACPI_OSXF OsxfNumAct; UINT32 Continue_Cond = 1; UINT32 TMax = 10000; UINT32 i; ACPI_STRING Pathname = "\\DGPE"; ACPI_HANDLE GpeDevice; for (i = TFst; (i < TMax) && Continue_Cond; i++) { printf ("AtWalkNamespaceExceptionTest: i = %d\n", i); Status = AtSubsystemInit( AAPITS_INI_DEF, AAPITS_EN_FLAGS, AAPITS_OI_FLAGS, AtAMLcodeFileName); if (ACPI_FAILURE(Status)) { return (Status); } Status = AcpiGetHandle (NULL, Pathname, &GpeDevice); if (ACPI_FAILURE(Status)) { AapiErrors++; printf ("Api Error: AcpiGetHandle(%s) returned %s\n", Pathname, AcpiFormatException(Status)); return (Status); } Status = OsxfCtrlSet(OsxfNum, i, ActFlag, ActCode); if (ACPI_FAILURE(Status)) { TestErrors++; printf ("Test error: OsxfCtrlSet returned %s\n", AcpiFormatException(Status)); return (Status); } Status = AcpiInstallGpeBlock (GpeDevice, &GpeBlockAddress, RegisterCount, InterruptNumber); if (!(OsxfNumAct = OsxfCtrlGetActOsxf(OsxfNum, 1))) { if (i == TFst) { TestSkipped++; printf ("Test note: test action hasn't occur\n"); } TestPass++; Continue_Cond = 0; } else { if (Status != Benchmark) { AapiErrors++; printf ("API Error: AcpiInstallGpeBlock returned %s,\n" " expected to return %s\n", AcpiFormatException(Status), AcpiFormatException(Benchmark)); return (AE_ERROR); } } Status = AtTerminateCtrlCheck(AE_OK, ALL_STAT); if (ACPI_FAILURE(Status)) { return (Status); } } if (i >= TMax) { TestErrors++; printf ("Test error: there are test cases remained\n"); return (AE_ERROR); } return (AE_OK); }
ACPI_STATUS AtRemoveFixedEventHandlerCommon( UINT32 CheckAction, ACPI_STATUS ExpectedStatus) { ACPI_STATUS Status; UINT32 Event = ACPI_NUM_FIXED_EVENTS; ACPI_EVENT_HANDLER EventHandler; ACPI_OSXF OsxfNumAct; UINT32 i; Status = AtSubsystemInit( AAPITS_INI_DEF & ~AAPITS_INSTALL_HS, AAPITS_EN_FLAGS | ACPI_NO_HANDLER_INIT, AAPITS_OI_FLAGS, NULL); if (ACPI_FAILURE(Status)) { return (Status); } FixedEventHandlerCounter = 0; for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { if (CheckAction == 5) { continue; } 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); } EventHandler = FixedEventHandlers[i]; FixedEventHandlerContext[i] = 0; Status = AcpiInstallFixedEventHandler(Event, EventHandler, &FixedEventHandlerContext[i]); if (ACPI_FAILURE(Status)) { AapiErrors++; printf ("Api Error: AcpiInstallFixedEventHandler(%d) returned %s\n", Event, AcpiFormatException(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; } EventHandler = FixedEventHandlers[i]; if (CheckAction == 1) { Event += ACPI_NUM_FIXED_EVENTS; } else if (CheckAction == 2) { EventHandler = NULL; } else if (CheckAction == 3) { /* * initiate the situation when fixed event * enable register can not be written */ Status = OsxfCtrlSet(OSXF_NUM(AcpiOsWritePort), 1, AtActD_OneTime, AtActRet_ERROR); if (ACPI_FAILURE(Status)) { TestErrors++; printf ("Test error: OsxfCtrlSet returned %s\n", AcpiFormatException(Status)); return (Status); } } else if (CheckAction == 4) { EventHandler = FixedEventHandlers[(i + 2) % ACPI_NUM_FIXED_EVENTS]; } Status = AcpiRemoveFixedEventHandler(Event, EventHandler); if (CheckAction == 3 && !(OsxfNumAct = OsxfCtrlGetActOsxf(OSXF_NUM(AcpiOsWritePort), 1))) { TestSkipped++; printf ("Test note: test action hasn't occur\n"); return (AE_ERROR); } TestPass++; if (Status != ExpectedStatus) { AapiErrors++; printf ("Api Error: AcpiRemoveFixedEventHandler(%d, 0x%p)" " returned %s, expected %s\n", Event, EventHandler, AcpiFormatException(Status), AcpiFormatException(ExpectedStatus)); if (Status != AE_OK) { return (Status); } else { return (AE_ERROR); } } } if (FixedEventHandlerCounter != 0) { AapiErrors++; printf ("Api Error: FixedEvent Handler invoked %d times\n", FixedEventHandlerCounter); return (AE_ERROR); } return (AtTerminateCtrlCheck(AE_OK, ALL_STAT)); }