diff options
Diffstat (limited to 'tests/aslts/src/runtime/collections/functional/synchronization/SPEC')
-rw-r--r-- | tests/aslts/src/runtime/collections/functional/synchronization/SPEC | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/tests/aslts/src/runtime/collections/functional/synchronization/SPEC b/tests/aslts/src/runtime/collections/functional/synchronization/SPEC new file mode 100644 index 000000000..f3556cee5 --- /dev/null +++ b/tests/aslts/src/runtime/collections/functional/synchronization/SPEC @@ -0,0 +1,160 @@ +Single thread tests +=================== + +m301: +Valid sequence of requests, no exceptions expected. +Acquire mutexes of monotone increasing level (Global lock +on level 0 too) for all available levels from 0 up to 15, +then Release them all in the inverse order. + +m369: +Valid sequence of requests, no exceptions expected. +Acquire mutexes of monotone increasing level (Global lock on level 0 too) +for all available levels from 0 up to 15, Acquire 2 mutexes of each level, +then Release them all in the inverse order (keep the exactly inverse order +for Releasing mutexes of the same level too). + +m36a: +Exactly m301 but additioanlly: +all Release opreations are located into separate method. + +m36b: +Exactly m301 but additioanlly: +all Acquire and Release opreations are located into separate methods. + +m36c: +Invalid sequence of Acquire operations: +1) Acquire N-th level mutex (N>=1): +2) Acquire: + - mutexes from 0 up to (N-1)-levels + - Global lock +3) exception AE_AML_MUTEX_ORDER is expected for each Acquire of (2) + +m389: +Exception on Release. +Release the mutex twice. +Attempt to Release free mutex: Acquire, Release, Release. +Exception is expected on the second Release. +Do it for all level mutexes and Global lock too. + +m07b: +Exception on Release. +Attempt ot Release clean mutex which was never Acquired. + +m38a: +Exception on Release. +Break the sequence of Acquiring mutexes while Releasing them, +jump over the level. Invalid sequence of Releases: + 1) Take level from range (N>=1 & N<=15) + 2) Acquire mutexes of all levels from 0 up to N + 3) Try to Release any mutex: + - in the level range from (N-1) down to 0 + - Global lock + 4) Do 1-3 for all levels in range (N>=1 & N<=15) + +m38d: +Check up that the Releasing of the same level mutexes +can be performed in an arbitrary order, independently +on the order they were Acquired. +For each level separately, one by one - +Acquire all for one level then Release them all and +then only go to the next level. +Involve the Global lock too. + +m07d: +Check up that the Releasing of the same level mutexes +can be performed in an arbitrary order, independently +on the order they were Acquired. +Cross through all the levels - +at first Acquire all for all levels then Release them all. + +m07a: +Multiply owning the same ACPI mutex. +Acquire the same mutex arg2 times, then Release it (arg2+1) times, +expect exception on the last Release. +The repeated Acquire are made with TimeoutValue equal to zero. + +m07e: +Acquire/Release combination #1 + +m08b: +Check the life after AE_AML_MUTEX_ORDER exception on Acquire. + 1) Acquire N-th level mutex MUX-N + 2) run Acquire (N-2)-th level mutex MUX-(N-2) and get AE_AML_MUTEX_ORDER exception + 3) run Acquire (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception + 4) Acquire mutex MUX-N and check that no exception on this operation + 5) Release mutex MUX-N and check that no exception on this operation + 6) Release mutex MUX-N and check that no exception on this operation + 7) do 1-6 for all N in range 2-15 levels + 8) check additionally that all the mutexes are free (run Release and + get AE_AML_MUTEX_NOT_ACQUIRED exception for all the mutexes of all levels) + 9) Acquire all mutexes of all levels and check that no exceptions + 10) Release all mutexes of all levels and check that no exceptions + 11) check additionally that all the mutexes are free (see 8) + 12) do it for GL mode too + 13) do additional Acquire of MUX-(N-2) and MUX-(N-1) before Acquire of MUX-N (Release them later) + +m08d: +Check the life after AE_AML_MUTEX_ORDER exception on Release. + 1) Acquire (N-1)-th level mutex MUX-(N-1) + 2) Acquire (N)-th level mutex MUX-N + 3) run Release (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception + 4) Release (N)-th level mutex MUX-N and check that no exception on this operation + 5) Release (N-1)-th level mutex MUX-(N-1) and check that no exception on this operation + 6) do 1-5 for all N in range 1-15 levels + 7) check additionally that all the mutexes are free (run Release and + get AE_AML_MUTEX_NOT_ACQUIRED exception for all the mutexes of all levels) + 8) Acquire all mutexes of all levels and check that no exceptions + 9) Release all mutexes of all levels and check that no exceptions + 10) check additionally that all the mutexes are free (see 7) + 11) do it for GL mode too + +m07f: +Check the life after AE_AML_MUTEX_ORDER exception on Release. +Similar to the m08d but trying to heal situation by +Acquiring/Release operations applied to the greater +level so changing the current level upper than all the +currently Acquired levels so don't expect exceptions on +the following Release operations applied in the correct +inverse order to all the Acquired mutexes. +(for the current 20060828 ACPICA this doesn't help). + +m0b9: +Different ways to Acquire/Release mutexes. + 1) Acquire and Release operations are in a global level AML code + +m07c: +Different ways to Acquire/Release mutexes. + 2) Acquire and Release operations are in the same method + 3) Acquire and Release operations are in different methods + +xxxx: +To check that the current level is not anyhow affected by the +invalid operations (which caused exception or returned FAIL). +Such checkings are present in m08b and m08d tests. +From m08b: + 1) Acquire N-th level mutex MUX-N + 2) run Acquire (N-2)-th level mutex MUX-(N-2) and get AE_AML_MUTEX_ORDER exception + 3) run Acquire (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception +The step 3 checks that the invalid operation Acquire +performed on step 2 doesn't affect the current level. +From m08d: + 1) Acquire (N-1)-th level mutex MUX-(N-1) + 2) Acquire (N)-th level mutex MUX-N + 3) run Release (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception + 4) Release (N)-th level mutex MUX-N and check that no exception on this operation +The step 4 checks that the invalid operation Release +performed on step 3 doesn't affect the current level. + +m0ba: +Acquire/Release operations enclosed in other operations. + +badasl-m103: +Exception on Acquire. +Access to inappropriate type data. + + +// ################################################################# + + + |