1Single thread tests
2===================
3
4m301:
5Valid sequence of requests, no exceptions expected.
6Acquire mutexes of monotone increasing level (Global lock
7on level 0 too) for all available levels from 0 up to 15,
8then Release them all in the inverse order.
9
10m369:
11Valid sequence of requests, no exceptions expected.
12Acquire mutexes of monotone increasing level (Global lock on level 0 too)
13for all available levels from 0 up to 15, Acquire 2 mutexes of each level,
14then Release them all in the inverse order (keep the exactly inverse order
15for Releasing mutexes of the same level too).
16
17m36a:
18Exactly m301 but additionally:
19all Release operations are located into separate method.
20
21m36b:
22Exactly m301 but additionally:
23all Acquire and Release operations are located into separate methods.
24
25m36c:
26Invalid sequence of Acquire operations:
271) Acquire N-th level mutex (N>=1):
282) Acquire:
29   - mutexes from 0 up to (N-1)-levels
30   - Global lock
313) exception AE_AML_MUTEX_ORDER is expected for each Acquire of (2)
32
33m389:
34Exception on Release.
35Release the mutex twice.
36Attempt to Release free mutex: Acquire, Release, Release.
37Exception is expected on the second Release.
38Do it for all level mutexes and Global lock too.
39
40m07b:
41Exception on Release.
42Attempt to Release clean mutex which was never Acquired.
43
44m38a:
45Exception on Release.
46Break the sequence of Acquiring mutexes while Releasing them,
47jump over the level. Invalid sequence of Releases:
48  1) Take level from range (N>=1 & N<=15)
49  2) Acquire mutexes of all levels from 0 up to N
50  3) Try to Release any mutex:
51     - in the level range from (N-1) down to 0
52     - Global lock
53  4) Do 1-3 for all levels in range (N>=1 & N<=15)
54
55m38d:
56Check up that the Releasing of the same level mutexes
57can be performed in an arbitrary order, independently
58on the order they were Acquired.
59For each level separately, one by one -
60Acquire all for one level then Release them all and
61then only go to the next level.
62Involve the Global lock too.
63
64m07d:
65Check up that the Releasing of the same level mutexes
66can be performed in an arbitrary order, independently
67on the order they were Acquired.
68Cross through all the levels -
69at first Acquire all for all levels then Release them all.
70
71m07a:
72Multiply owning the same ACPI mutex.
73Acquire the same mutex arg2 times, then Release it (arg2+1) times,
74expect exception on the last Release.
75The repeated Acquire are made with TimeoutValue equal to zero.
76
77m07e:
78Acquire/Release combination #1
79
80m08b:
81Check the life after AE_AML_MUTEX_ORDER exception on Acquire.
82  1)     Acquire     N-th level mutex MUX-N
83  2) run Acquire (N-2)-th level mutex MUX-(N-2) and get AE_AML_MUTEX_ORDER exception
84  3) run Acquire (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception
85  4)     Acquire                mutex MUX-N and check that no exception on this operation
86  5)     Release                mutex MUX-N and check that no exception on this operation
87  6)     Release                mutex MUX-N and check that no exception on this operation
88  7)     do 1-6 for all N in range 2-15 levels
89  8)     check additionally that all the mutexes are free (run Release and
90         get AE_AML_MUTEX_NOT_ACQUIRED exception for all the mutexes of all levels)
91  9)     Acquire all mutexes of all levels and check that no exceptions
92 10)     Release all mutexes of all levels and check that no exceptions
93 11)     check additionally that all the mutexes are free (see 8)
94 12)     do it for GL mode too
95 13)     do additional Acquire of MUX-(N-2) and MUX-(N-1) before Acquire of MUX-N (Release them later)
96
97m08d:
98Check the life after AE_AML_MUTEX_ORDER exception on Release.
99  1)     Acquire     (N-1)-th level mutex MUX-(N-1)
100  2)     Acquire       (N)-th level mutex MUX-N
101  3) run Release     (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception
102  4)     Release       (N)-th level mutex MUX-N     and check that no exception on this operation
103  5)     Release     (N-1)-th level mutex MUX-(N-1) and check that no exception on this operation
104  6)     do 1-5 for all N in range 1-15 levels
105  7)     check additionally that all the mutexes are free (run Release and
106         get AE_AML_MUTEX_NOT_ACQUIRED exception for all the mutexes of all levels)
107  8)     Acquire all mutexes of all levels and check that no exceptions
108  9)     Release all mutexes of all levels and check that no exceptions
109 10)     check additionally that all the mutexes are free (see 7)
110 11)     do it for GL mode too
111
112m07f:
113Check the life after AE_AML_MUTEX_ORDER exception on Release.
114Similar to the m08d but trying to heal situation by
115Acquiring/Release operations applied to the greater
116level so changing the current level upper than all the
117currently Acquired levels so don't expect exceptions on
118the following Release operations applied in the correct
119inverse order to all the Acquired mutexes.
120(for the current 20060828 ACPICA this doesn't help).
121
122m0b9:
123Different ways to Acquire/Release mutexes.
124 1) Acquire and Release operations are in a global level AML code
125
126m07c:
127Different ways to Acquire/Release mutexes.
128 2) Acquire and Release operations are in the same method
129 3) Acquire and Release operations are in different methods
130
131xxxx:
132To check that the current level is not anyhow affected by the
133invalid operations (which caused exception or returned FAIL).
134Such checkings are present in m08b and m08d tests.
135From m08b:
136  1)     Acquire     N-th level mutex MUX-N
137  2) run Acquire (N-2)-th level mutex MUX-(N-2) and get AE_AML_MUTEX_ORDER exception
138  3) run Acquire (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception
139The step 3 checks that the invalid operation Acquire
140performed on step 2 doesn't affect the current level.
141From m08d:
142  1)     Acquire     (N-1)-th level mutex MUX-(N-1)
143  2)     Acquire       (N)-th level mutex MUX-N
144  3) run Release     (N-1)-th level mutex MUX-(N-1) and get AE_AML_MUTEX_ORDER exception
145  4)     Release       (N)-th level mutex MUX-N     and check that no exception on this operation
146The step 4 checks that the invalid operation Release
147performed on step 3 doesn't affect the current level.
148
149m0ba:
150Acquire/Release operations enclosed in other operations.
151
152badasl-m103:
153Exception on Acquire.
154Access to inappropriate type data.
155
156
157// #################################################################
158
159
160
161