mirror of
https://github.com/acpica/acpica/
synced 2025-02-12 03:24:13 +03:00
778 lines
22 KiB
Plaintext
Executable File
778 lines
22 KiB
Plaintext
Executable File
/*
|
|
* The following assertions are based on description of
|
|
* ACPI Subsystem Initializing interfaces provided by ACPICA
|
|
* (section 6.1 "Subsystem Initialization, Shutdown, and Status"
|
|
* of ACPICA ProgRef, routines AcpiInitializeSubsystem,
|
|
* AcpiInstallInitializationHandler, AcpiEnableSubsystem,
|
|
* AcpiInitializeObjects, AcpiGetSystemInfo, AcpiSubsystemStatus,
|
|
* AcpiFormatException, AcpiPurgeCachedObjects, AcpiTerminate
|
|
*
|
|
*/
|
|
|
|
/*
|
|
SEE: see all these "There are no any calls to the AcpiOs*
|
|
interfaces while the routine is thus invoked"
|
|
*/
|
|
|
|
|
|
/*
|
|
* ASSERTION 0000:
|
|
*
|
|
* The call to AcpiInitializeSubsystem routine
|
|
* initiates call to AcpiOsInitialize routine
|
|
* of OS Service Layer.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0001:
|
|
*
|
|
* If AcpiOsInitialize routine returns AE_ERROR then
|
|
* AcpiInitializeSubsystem routine returns AE_ERROR too.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0002:
|
|
*
|
|
* If some call to AcpiOsAllocate routine during invocation
|
|
* of AcpiInitializeSubsystem routine returns NULL then
|
|
* AcpiInitializeSubsystem returns AE_NO_MEMORY.
|
|
*
|
|
* IMPLEMENTATION:
|
|
*
|
|
* The test initiates repeatedly the sequence of calls
|
|
* to AcpiInitializeSubsystem and AcpiTerminate and forces
|
|
* the sebsequently increased call to AcpiOsAllocate
|
|
* to return NULL and expects AE_NO_MEMORY for that call
|
|
* until the index of failed call increases the actual
|
|
* number of memory allocations actually required during
|
|
* initialization.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0003:
|
|
*
|
|
* If some call to AcpiOsCreateLock routine during invocation
|
|
* of AcpiInitializeSubsystem routine returns AE_NO_MEMORY then
|
|
* AcpiInitializeSubsystem returns AE_NO_MEMORY too.
|
|
*
|
|
* IMPLEMENTATION:
|
|
*
|
|
* something like that in ASSERTION 0002 !!!!!!!!!!!!!!!:
|
|
* ===================
|
|
*
|
|
* The test initiates repeatedly the sequence of calls
|
|
* to AcpiInitializeSubsystem and AcpiTerminate and forces
|
|
* the sebsequently increased call to AcpiOsCreateLock to
|
|
* return AE_NO_MEMORY and expects AE_NO_MEMORY for that call
|
|
* until the index of failed calls increases the actual number
|
|
* of Locks (really only one) required during initialization.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0004:
|
|
*
|
|
* If some call to AcpiOsCreateSemaphore routine during invocation
|
|
* of AcpiInitializeSubsystem routine returns AE_NO_MEMORY then the
|
|
* routine returns AE_NO_MEMORY too.
|
|
*
|
|
* IMPLEMENTATION:
|
|
* something like that in ASSERTION 0002 !!!!!!!!!!!!!!!:
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0005:
|
|
*
|
|
* Call to AcpiTerminate routine frees all the resources
|
|
* allocated by AcpiInitializeSubsystem returned AE_OK.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0006:
|
|
*
|
|
* AcpiTerminate can be invoked before any call to AcpiInitializeSubsystem.
|
|
*
|
|
* ROUTINES: AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0007:
|
|
*
|
|
* The repeated call to AcpiTerminate is available.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0008:
|
|
*
|
|
* Call to AcpiTerminate routine frees all the resources
|
|
* allocated by AcpiInitializeSubsystem one returned AE_ERROR.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0009:
|
|
*
|
|
* Call to AcpiTerminate routine frees all the resources
|
|
* allocated by AcpiInitializeSubsystem one returned AE_NO_MEMORY.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0010:
|
|
*
|
|
* All the resources allocated by AcpiInitializeSubsystem routine
|
|
* returned a FAILURE due to some AcpiOs interface returning AE_ERROR
|
|
* are freed.
|
|
*
|
|
* IMPLEMENTATION:
|
|
*
|
|
* The test forces the sebsequently increased call to any AcpiOs
|
|
* to return AE_ERROR (if any) and expects a FAILURE for that call
|
|
* to AcpiInitializeSubsystem until the count of overall AcpiOs calls
|
|
* increased and checks differences between successful allocations and
|
|
* realeasings of the relevant system resources. Then AcpiInitializeSubsystem
|
|
* must return a FAILURE and the differences should be equal to zeroes.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0011:
|
|
*
|
|
* All the resources allocated by AcpiInitializeSubsystem routine
|
|
* returned AE_NO_MEMORY due to some AcpiOs interface returning NULL
|
|
* (AE_NO_MEMORY) are freed.
|
|
*
|
|
* IMPL:
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0012:
|
|
*
|
|
* Check that the complementary pair of routines, AcpiInitializeSubsystem
|
|
* and AcpiTerminate, can be invoked repeatedly multiple times, each time
|
|
* the call to AcpiTerminate follows the call to AcpiInitializeSubsystem,
|
|
* and all the resources are freed after AE_OK return of AcpiTerminate.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0013:
|
|
*
|
|
* The repeated call to AcpiInitializeSubsystem routine without the
|
|
* intermediate call to AcpiTerminate one results in AE_ERROR.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0014:
|
|
*
|
|
* After the successful call to AcpiLoadTables routine
|
|
* AcpiEnableSubsystem one can be successfully used to Complete
|
|
* the ACPI Subsystem initialization and enable ACPI operations.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0015:
|
|
*
|
|
* After the successful call to AcpiEnableSubsystem routine
|
|
* the next call to AcpiTerminate one frees all the resources
|
|
* allocated by Core Subsystem.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0016:
|
|
*
|
|
* If the initial call to AcpiInitializeSubsystem routine was not
|
|
* performed at all then AcpiEnableSubsystem routine returns AE_ERROR.
|
|
* There are no any calls to the AcpiOs* interfaces while the routine is
|
|
* thus invoked.
|
|
*
|
|
* ROUTINES: AcpiEnableSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0017:
|
|
*
|
|
* If the initial call to AcpiInitializeSubsystem routine resulted in
|
|
* failure then next use of AcpiEnableSubsystem routine results in failure
|
|
* too. There are no any calls to the AcpiOs* interfaces while the routine
|
|
* is thus invoked.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiEnableSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0018:
|
|
*
|
|
* If the initial call to AcpiLoadTables routine was not performed at
|
|
* all then AcpiEnableSubsystem routine fails.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiEnableSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0019:
|
|
*
|
|
* If the initial call to AcpiLoadTables routine resulted in failure
|
|
* then next use of AcpiEnableSubsystem routine results in failure too.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0020:
|
|
*
|
|
* If AcpiEnableSubsystem routine initially failed then the next
|
|
* call to AcpiTerminate one frees all the resources allocated
|
|
* by Core Subsystem.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0021:
|
|
*
|
|
* If AcpiEnableSubsystem routine initially returned AE_OK then any
|
|
* repeated call to it results in failure. The next call to AcpiTerminate
|
|
* routine frees all the resources allocated by Core Subsystem.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
|
|
/*
|
|
* ASSERTION 0022:
|
|
*
|
|
* After the successful call to AcpiEnableSubsystem routine
|
|
* AcpiInitializeObjects one can be successfully used to initialize
|
|
* objects within the ACPI namespace.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0023:
|
|
*
|
|
* After the successful call to AcpiInitializeObjects routine
|
|
* the next call to AcpiTerminate one frees all the resources
|
|
* allocated by Core Subsystem.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects
|
|
* AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0024:
|
|
*
|
|
* If the initial call to AcpiInitializeSubsystem routine was not
|
|
* performed at all then AcpiInitializeObjects routine returns AE_ERROR.
|
|
* There are no any calls to the AcpiOs* interfaces while the routine is
|
|
* thus invoked.
|
|
*
|
|
* ROUTINES: AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0025:
|
|
*
|
|
* If the initial call to AcpiInitializeSubsystem routine resulted in
|
|
* failure then next use of AcpiInitializeObjects routine results in failure
|
|
* too. There are no any calls to the AcpiOs* interfaces while the routine
|
|
* is thus invoked.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0026:
|
|
*
|
|
* If the initial call to AcpiLoadTables routine was not performed at
|
|
* all then AcpiInitializeObjects routine fails.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0027:
|
|
*
|
|
* If the initial call to AcpiLoadTables routine resulted in failure
|
|
* then next use of AcpiInitializeObjects routine results in failure too.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0028:
|
|
*
|
|
* If the initial call to AcpiEnableSubsystem routine was not performed at
|
|
* all then AcpiInitializeObjects routine fails.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0029:
|
|
*
|
|
* If the initial call to AcpiEnableSubsystem routine resulted in failure
|
|
* then next use of AcpiInitializeObjects routine results in failure too.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0030:
|
|
*
|
|
* If AcpiInitializeObjects routine failed then the next
|
|
* call to AcpiTerminate one frees all the resources allocated
|
|
* by Core Subsystem.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0031:
|
|
*
|
|
* If AcpiInitializeObjects routine initially returned AE_OK then any
|
|
* repeated call to it results in failure. The next call to AcpiTerminate
|
|
* routine frees all the resources allocated by Core Subsystem.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0032:
|
|
*
|
|
* On the call to AcpiInitializeObjects routine if the ACPI_NO_DEVICE_INIT
|
|
* flag is not set up then the _STA and _INI methods on the device objects
|
|
* will be run during the call, at that _INI will be run only either _STA
|
|
* is not present or after the _STA invocation indicating that the device
|
|
* is present and enabled.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0033:
|
|
*
|
|
* On the call to AcpiInitializeObjects routine if the ACPI_NO_DEVICE_INIT
|
|
* flag is set up then the _INI and _STA methods on the device objects will
|
|
* not be run during the call.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiInstallInitializationHandler
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0034:
|
|
*
|
|
* On the call to AcpiInitializeObjects routine if the ACPI_NO_OBJECT_INIT
|
|
* flag is not set up then the final initialization pass to complete
|
|
* initialization of OperationRegions, BufferFields, Buffers, and Packages
|
|
* will be run during the call.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0035:
|
|
*
|
|
* On the call to AcpiInitializeObjects routine if the ACPI_NO_OBJECT_INIT
|
|
* flag is set up then the final initialization pass to complete initialization
|
|
* of OperationRegions, BufferFields, Buffers, and Packages will not be run
|
|
* during the call.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0036:
|
|
*
|
|
* After the exit out of the AcpiInitializeObjects routine
|
|
* the object cache appears to be purged so that next call
|
|
* to AcpiPurgeCachedObjects routine does not initiate any
|
|
* call to to the AcpiOs* interfaces.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiPurgeCachedObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0037:
|
|
*
|
|
* If the system was successfully initialized, that means
|
|
* the following sequence of successful calls:
|
|
*
|
|
* AcpiInitializeSubsystem
|
|
* AcpiLoadTables
|
|
* AcpiEnableSubsystem
|
|
* AcpiInitializeObjects
|
|
*
|
|
* then AcpiSubsystemStatus returns AE_OK.
|
|
*
|
|
* ROUTINES: AcpiSubsystemStatus, AcpiInitializeSubsystem,
|
|
* AcpiLoadTables, AcpiEnableSubsystem,
|
|
* AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0038:
|
|
*
|
|
* If the system was shuted down after successful initialization,
|
|
* that means the following sequence of successful calls:
|
|
*
|
|
* AcpiInitializeSubsystem
|
|
* AcpiLoadTables
|
|
* AcpiEnableSubsystem
|
|
* AcpiInitializeObjects
|
|
* AcpiTerminate
|
|
*
|
|
* then AcpiSubsystemStatus returns AE_ERROR.
|
|
*
|
|
* ROUTINES: AcpiSubsystemStatus, AcpiInitializeSubsystem,
|
|
* AcpiLoadTables, AcpiEnableSubsystem,
|
|
* AcpiInitializeObjects, AcpiTerminate
|
|
*/
|
|
|
|
|
|
/*
|
|
* ASSERTION 0039:
|
|
*
|
|
* If the system initialization was not complete,
|
|
* means that only a part of the following sequence
|
|
* of successful calls was performed:
|
|
*
|
|
* AcpiInitializeSubsystem
|
|
* AcpiLoadTables
|
|
* AcpiEnableSubsystem
|
|
*
|
|
* then AcpiSubsystemStatus returns AE_ERROR.
|
|
*
|
|
* ROUTINES: AcpiSubsystemStatus, AcpiInitializeSubsystem,
|
|
* AcpiLoadTables, AcpiEnableSubsystem,
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0040:
|
|
*
|
|
* If the system initialization doesn't succeed,
|
|
* means that some of the routines in the following
|
|
* sequence failed:
|
|
*
|
|
* AcpiInitializeSubsystem
|
|
* AcpiLoadTables
|
|
* AcpiEnableSubsystem
|
|
* AcpiInitializeObjects
|
|
*
|
|
* then AcpiSubsystemStatus returns AE_ERROR.
|
|
*
|
|
* ROUTINES: AcpiSubsystemStatus, AcpiInitializeSubsystem,
|
|
* AcpiLoadTables, AcpiEnableSubsystem,
|
|
* AcpiInitializeObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0041:
|
|
*
|
|
* AcpiGetSystemInfo routine returns AE_BUFFER_OVERFLOW when the Length
|
|
* field of the OutBuffer parameter indicates that the specified buffer
|
|
* is too small to hold the system information. Upon return, the Length
|
|
* field contains the minimum required buffer length. The routine returns
|
|
* AE_OK being repeatedly called passed with the properly updated OutBuffer
|
|
* parameter. The buffer will be properly filled with the ACPI_SYSTEM_INFO
|
|
* structure.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiGetSystemInfo
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0042:
|
|
*
|
|
* AcpiGetSystemInfo routine returns AE_BAD_PARAMETER when:
|
|
* - the OutBuffer pointer is NULL,
|
|
* - the Length field of the OutBuffer is not ACPI_ALLOCATE_BUFFER,
|
|
* but the Pointer field of the OutBuffer is NULL.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiGetSystemInfo
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0043:
|
|
*
|
|
* AcpiGetSystemInfo routine returns AE_OK passed with the equal to
|
|
* ACPI_ALLOCATE_BUFFER Length field of the OutBuffer parameter after
|
|
* AcpiInitializeSubsystem routine was successfully executed and there
|
|
* was enough memory to allocate. Upon return, the Pointer field of the
|
|
* OutBuffer parameter will point to a buffer properly filled with the
|
|
* ACPI_SYSTEM_INFO structure. The buffer can successfully be released
|
|
* by AcpiOsFree routine.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiGetSystemInfo, AcpiOsFree
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0044:
|
|
*
|
|
* AcpiGetSystemInfo routine returns AE_NO_MEMORY passed with the equal
|
|
* to ACPI_ALLOCATE_BUFFER Length field of the OutBuffer parameter after
|
|
* AcpiInitializeSubsystem routine was successfully executed if there
|
|
* was no enough memory to allocate (AcpiOsFree returns NULL).
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiGetSystemInfo, AcpiOsFree
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0045:
|
|
*
|
|
* AcpiGetSystemInfo routine fails passed with the equal to
|
|
* ACPI_ALLOCATE_BUFFER Length field of the OutBuffer parameter
|
|
* before AcpiInitializeSubsystem routine was successfully executed
|
|
* disregard of AcpiOsFree successful execution.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiGetSystemInfo, AcpiOsFree
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0046:
|
|
*
|
|
* AcpiInstallInitializationHandler routine result in AE_BAD_PARAMETER
|
|
* if NULL is specified as its Handler parameter.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiInstallInitializationHandler
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0047:
|
|
*
|
|
* AcpiInstallInitializationHandler routine sets up the global handler
|
|
* for initialization handling which is invoked by Core Subsystem during
|
|
* call to AcpiInitializeObjects routine for each Device object within
|
|
* the namespace after the Device has been initialized (the _INI and _STA
|
|
* methods have been run on the device).
|
|
*
|
|
* An Acpi namespace Object which pointer to the handler will being
|
|
* passed to the specified global handler routine should be Device
|
|
* objects, the Function parameter should be equal to the manifest
|
|
* constant ACPI_INIT_DEVICE_INI.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiInstallInitializationHandler
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0048:
|
|
*
|
|
* After a global initialization handler was successfully set up
|
|
* additional calls to AcpiInstallInitializationHandler routine result
|
|
* in AE_ALREADY_EXISTS until the Core Subsystem shutdown by AcpiTerminate().
|
|
* The initial handler is not overwritten.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiInstallInitializationHandler
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0049:
|
|
*
|
|
* If the initial call to AcpiInitializeSubsystem routine was not
|
|
* performed at all then AcpiInstallInitializationHandler routine
|
|
* returns AE_ERROR. There are no any calls to the AcpiOs* interfaces
|
|
* while the routine is thus invoked.
|
|
*
|
|
* ROUTINES: AcpiInstallInitializationHandler
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0050:
|
|
*
|
|
* If the initial call to AcpiInitializeSubsystem routine resulted in
|
|
* failure then next use of AcpiInstallInitializationHandler routine
|
|
* results in failure too. There are no any calls to the AcpiOs* interfaces
|
|
* while the routine is thus invoked.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiInstallInitializationHandler
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0051:
|
|
*
|
|
* When the global handler for initialization handling invoked
|
|
* by the Core Subsystem during call to AcpiInitializeObjects
|
|
* routine results in AE_CTRL_TERMINATE the Subsystem stops the walk
|
|
* through the Acpi namespace tree immediately so that the _INI
|
|
* and _STA methods will not have been run on the remained devices.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiInstallInitializationHandler
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0052:
|
|
*
|
|
* When the global handler for initialization handling invoked
|
|
* by the Core Subsystem during call to AcpiInitializeObjects
|
|
* routine results in AE_CTRL_DEPTH the Subsystem stops the walk
|
|
* deeply into the Acpi namespace tree so that the _INI and _STA
|
|
* methods will not have been run on the devices located deeply
|
|
* on the tree.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiInstallInitializationHandler
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0053:
|
|
*
|
|
* Any combinations of the manifest constants:
|
|
*
|
|
* ACPI_NO_ADDRESS_SPACE_INIT
|
|
* ACPI_NO_HARDWARE_INIT
|
|
* ACPI_NO_EVENT_INIT
|
|
* ACPI_NO_ACPI_ENABLE
|
|
* ACPI_NO_HANDLER_INIT
|
|
*
|
|
* can be passed to AcpiEnableSubsystem routine used in the common
|
|
* sequence of the calls during the ACPI Subsystem successful initialization.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiSubsystemStatus, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0054:
|
|
*
|
|
* If some call to AcpiOsAllocate routine during invocation
|
|
* of AcpiEnableSubsystem routine returns NULL then
|
|
* AcpiEnableSubsystem returns AE_NO_MEMORY.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0055:
|
|
*
|
|
* If some call to AcpiOsAllocate routine during invocation
|
|
* of AcpiInitializeObjects routine returns NULL then
|
|
* AcpiInitializeObjects returns AE_NO_MEMORY.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiTerminate
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0056:
|
|
*
|
|
* AcpiFormatException routine returns a human-readable string
|
|
* determined by the any specified ACPI exception code.
|
|
*
|
|
* ROUTINES: AcpiFormatException
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0057:
|
|
*
|
|
* When a wrong ACPI exception code is passed to AcpiFormatException
|
|
* routine the routine returns a string that is not equal to any string
|
|
* which is relevant to correct ACPI exception code.
|
|
*
|
|
* ROUTINES: AcpiFormatException
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0058:
|
|
*
|
|
* AcpiPurgeCachedObjects routine frees all memory blocks
|
|
* not released after Method execution so that the object
|
|
* cache appears to be purged.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiPurgeCachedObjects
|
|
*/
|
|
|
|
/*
|
|
* ASSERTION 0059:
|
|
*
|
|
* When during Device objects initialization subsequent Device's
|
|
* _STA Method indicate that the Device is not present (and not
|
|
* "functioning") no any _STA or _INI method of this Device's
|
|
* childrens will be invoked.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem, AcpiInitializeObjects,
|
|
* AcpiInstallInitializationHandler
|
|
*/
|
|
|
|
|
|
/*
|
|
* ASSERTION 0060:
|
|
*
|
|
* Variation of ASSERTION 0019 when FADT is not present
|
|
* among the registered Tables. AcpiEnableSubsystem routine
|
|
* results in failure.
|
|
*
|
|
* ROUTINES: AcpiInitializeSubsystem, AcpiLoadTables,
|
|
* AcpiEnableSubsystem
|
|
*/
|