source: rtems/testsuites/smptests/smpmrsp01/smpmrsp01.scn @ 864d3475

4.115
Last change on this file since 864d3475 was 864d3475, checked in by Sebastian Huber <sebastian.huber@…>, on 12/17/14 at 14:11:00

smp: Fix timeout for MrsP semaphores

The previous timeout handling was flawed. In case a waiting thread
helped out the owner could use the scheduler node indefinitely long.
Update the resource tree in _MRSP_Timeout() to avoid this issue.

Bug reported by Luca Bonato.

  • Property mode set to 100644
File size: 7.5 KB
RevLine 
[8fcafdd5]1*** BEGIN OF TEST SMPMRSP 1 ***
2test MrsP flush error
3test MrsP initially locked error
4test MrsP nested obtain error
[9f228bea]5test MrsP unlock order error
6test MrsP deadlock error
7test MrsP multiple obtain
[5bd822a7]8test MrsP various block and unblock
9[1] IDLE -> WORK (prio   4, node WORK)
10[0] MAIN -> IDLE (prio   3, node MAIN)
11[0] IDLE -> MAIN (prio   3, node MAIN)
12[1] WORK -> IDLE (prio   3, node WORK)
13[1] IDLE -> HIG1 (prio   2, node HIG1)
14[1] HIG1 -> IDLE (prio   3, node WORK)
15[1] IDLE -> HIG1 (prio   2, node HIG1)
16[1] HIG1 -> WORK (prio   3, node WORK)
17[1] WORK -> MAIN (prio   3, node WORK)
18[0] MAIN -> HIG0 (prio   2, node HIG0)
19[1] MAIN -> HIG1 (prio   2, node HIG1)
20[1] HIG1 -> WORK (prio   3, node WORK)
21[0] HIG0 -> MAIN (prio   3, node MAIN)
22[1] WORK -> MAIN (prio   3, node WORK)
23[0] MAIN -> HIG0 (prio   2, node HIG0)
24[1] MAIN -> HIG1 (prio   2, node HIG1)
25[1] HIG1 -> MAIN (prio   3, node WORK)
26[0] HIG0 -> IDLE (prio   4, node MAIN)
27[1] MAIN -> WORK (prio   3, node WORK)
28[0] IDLE -> MAIN (prio   4, node MAIN)
[9f228bea]29test MrsP obtain and sleep and release
30[0] MAIN ->  RUN (prio   2, node  RUN)
31[0]  RUN -> MAIN (prio   1, node MAIN)
32[0] MAIN -> IDLE (prio   1, node MAIN)
33[0] IDLE -> MAIN (prio   1, node MAIN)
34test MrsP obtain and release with help
35[1] IDLE -> HELP (prio   3, node HELP)
36[0] MAIN -> IDLE (prio   2, node MAIN)
37[0] IDLE -> MAIN (prio   2, node MAIN)
38[1] HELP -> MAIN (prio   2, node HELP)
39[0] MAIN ->  RUN (prio   1, node  RUN)
40[1] MAIN -> HELP (prio   2, node HELP)
41[1] HELP -> MAIN (prio   2, node HELP)
42[0]  RUN -> IDLE (prio   2, node MAIN)
43[1] MAIN -> HELP (prio   2, node HELP)
44[1] HELP -> MAIN (prio   2, node HELP)
45[0] IDLE -> MAIN (prio   3, node MAIN)
[27783f6]46[1] MAIN -> HELP (prio   2, node HELP)
[8fcafdd5]47test MrsP obtain and release
[864d3475]48[1] IDLE -> WORK (prio   4, node WORK)
49[1] WORK -> MAIN (prio   3, node WORK)
50[0] MAIN -> HIG0 (prio   1, node HIG0)
51[1] MAIN -> WORK (prio   4, node WORK)
52[0] HIG0 -> MAIN (prio   2, node MAIN)
[8fcafdd5]53test MrsP load
[9f228bea]54worker[0]
[27783f6]55  sleep = 53
56  timeout = 3445
57  obtain[0] = 7240
58  obtain[1] = 5484
59  obtain[2] = 12983
60  obtain[3] = 9453
61  obtain[4] = 16142
62  obtain[5] = 12509
63  obtain[6] = 16471
64  obtain[7] = 14380
65  obtain[8] = 16566
66  obtain[9] = 16192
67  obtain[10] = 14868
68  obtain[11] = 18208
69  obtain[12] = 12505
70  obtain[13] = 19995
71  obtain[14] = 11155
72  obtain[15] = 20684
73  obtain[16] = 7288
74  obtain[17] = 22252
75  obtain[18] = 6476
76  obtain[19] = 18299
77  obtain[20] = 5711
78  obtain[21] = 17063
79  obtain[22] = 4791
80  obtain[23] = 14655
81  obtain[24] = 3452
82  obtain[25] = 10565
83  obtain[26] = 2912
84  obtain[27] = 8142
85  obtain[28] = 2090
86  obtain[29] = 5086
87  obtain[30] = 1145
88  obtain[31] = 1946
89  cpu[0] = 378475
90  cpu[1] = 64814
91  cpu[2] = 132133
92  cpu[3] = 138047
[9f228bea]93worker[1]
94  sleep = 1
[27783f6]95  timeout = 6
96  obtain[0] = 19
97  obtain[1] = 8
98  obtain[2] = 15
99  obtain[3] = 24
100  obtain[4] = 20
101  obtain[5] = 19
102  obtain[6] = 14
103  obtain[7] = 40
104  obtain[8] = 45
105  obtain[9] = 20
106  obtain[10] = 0
107  obtain[11] = 48
108  obtain[12] = 13
109  obtain[13] = 57
110  obtain[14] = 30
111  obtain[15] = 48
112  obtain[16] = 36
113  obtain[17] = 36
114  obtain[18] = 19
115  obtain[19] = 20
116  obtain[20] = 42
117  obtain[21] = 44
118  obtain[22] = 23
[9f228bea]119  obtain[23] = 0
120  obtain[24] = 0
[27783f6]121  obtain[25] = 26
[9f228bea]122  obtain[26] = 0
123  obtain[27] = 0
124  obtain[28] = 0
125  obtain[29] = 0
126  obtain[30] = 0
127  obtain[31] = 0
[27783f6]128  cpu[0] = 650
129  cpu[1] = 92
130  cpu[2] = 379
131  cpu[3] = 212
[9f228bea]132worker[2]
[27783f6]133  sleep = 51
134  timeout = 3731
135  obtain[0] = 7182
136  obtain[1] = 5663
137  obtain[2] = 12945
138  obtain[3] = 9229
139  obtain[4] = 15592
140  obtain[5] = 12125
141  obtain[6] = 16767
142  obtain[7] = 14480
143  obtain[8] = 16620
144  obtain[9] = 16098
145  obtain[10] = 16409
146  obtain[11] = 18109
147  obtain[12] = 12995
148  obtain[13] = 19452
149  obtain[14] = 10719
150  obtain[15] = 20024
151  obtain[16] = 7769
152  obtain[17] = 21913
153  obtain[18] = 6636
154  obtain[19] = 18524
155  obtain[20] = 5952
156  obtain[21] = 16411
157  obtain[22] = 5228
158  obtain[23] = 14456
159  obtain[24] = 4292
160  obtain[25] = 11143
161  obtain[26] = 3019
162  obtain[27] = 8023
163  obtain[28] = 2006
164  obtain[29] = 4664
165  obtain[30] = 1109
166  obtain[31] = 1976
167  cpu[0] = 65356
168  cpu[1] = 381723
169  cpu[2] = 133444
170  cpu[3] = 134588
[9f228bea]171worker[3]
172  sleep = 1
[27783f6]173  timeout = 11
174  obtain[0] = 11
175  obtain[1] = 6
176  obtain[2] = 33
177  obtain[3] = 20
178  obtain[4] = 10
179  obtain[5] = 10
180  obtain[6] = 28
181  obtain[7] = 18
182  obtain[8] = 27
183  obtain[9] = 40
184  obtain[10] = 33
185  obtain[11] = 36
186  obtain[12] = 26
[9f228bea]187  obtain[13] = 0
[27783f6]188  obtain[14] = 15
[9f228bea]189  obtain[15] = 16
190  obtain[16] = 0
191  obtain[17] = 18
192  obtain[18] = 0
[27783f6]193  obtain[19] = 42
[9f228bea]194  obtain[20] = 0
[27783f6]195  obtain[21] = 88
[9f228bea]196  obtain[22] = 0
197  obtain[23] = 24
198  obtain[24] = 0
199  obtain[25] = 0
200  obtain[26] = 0
[27783f6]201  obtain[27] = 28
[9f228bea]202  obtain[28] = 0
203  obtain[29] = 0
[27783f6]204  obtain[30] = 31
[9f228bea]205  obtain[31] = 0
[27783f6]206  cpu[0] = 136
207  cpu[1] = 573
208  cpu[2] = 291
209  cpu[3] = 121
[9f228bea]210worker[4]
[27783f6]211  sleep = 47
212  timeout = 3278
213  obtain[0] = 7397
214  obtain[1] = 5723
215  obtain[2] = 13399
216  obtain[3] = 9018
217  obtain[4] = 16575
218  obtain[5] = 12731
219  obtain[6] = 16571
220  obtain[7] = 14376
221  obtain[8] = 16786
222  obtain[9] = 17022
223  obtain[10] = 15889
224  obtain[11] = 19338
225  obtain[12] = 13240
226  obtain[13] = 19055
227  obtain[14] = 11533
228  obtain[15] = 22667
229  obtain[16] = 7521
230  obtain[17] = 21826
231  obtain[18] = 6320
232  obtain[19] = 18522
233  obtain[20] = 6874
234  obtain[21] = 16498
235  obtain[22] = 4983
236  obtain[23] = 14210
237  obtain[24] = 4019
238  obtain[25] = 11510
239  obtain[26] = 3425
240  obtain[27] = 8809
241  obtain[28] = 2002
242  obtain[29] = 5197
243  obtain[30] = 996
244  obtain[31] = 2276
245  cpu[0] = 20729
246  cpu[1] = 19760
247  cpu[2] = 343613
248  cpu[3] = 348561
[9f228bea]249worker[5]
[27783f6]250  sleep = 61
251  timeout = 3183
252  obtain[0] = 7291
253  obtain[1] = 5782
254  obtain[2] = 13633
255  obtain[3] = 9864
256  obtain[4] = 16465
257  obtain[5] = 12581
258  obtain[6] = 17135
259  obtain[7] = 14616
260  obtain[8] = 16524
261  obtain[9] = 16472
262  obtain[10] = 15194
263  obtain[11] = 18038
264  obtain[12] = 13801
265  obtain[13] = 19959
266  obtain[14] = 11693
267  obtain[15] = 20770
268  obtain[16] = 7328
269  obtain[17] = 23222
270  obtain[18] = 7186
271  obtain[19] = 19739
272  obtain[20] = 6584
273  obtain[21] = 17450
274  obtain[22] = 5241
275  obtain[23] = 14808
276  obtain[24] = 4287
277  obtain[25] = 11387
278  obtain[26] = 3367
279  obtain[27] = 8149
280  obtain[28] = 1887
281  obtain[29] = 4969
282  obtain[30] = 1123
283  obtain[31] = 1695
284  cpu[0] = 19504
285  cpu[1] = 20069
286  cpu[2] = 346015
287  cpu[3] = 350953
[9f228bea]288worker[6]
289  sleep = 1
[27783f6]290  timeout = 15
291  obtain[0] = 26
292  obtain[1] = 22
293  obtain[2] = 45
294  obtain[3] = 32
295  obtain[4] = 45
296  obtain[5] = 76
297  obtain[6] = 49
298  obtain[7] = 64
299  obtain[8] = 99
300  obtain[9] = 70
301  obtain[10] = 55
302  obtain[11] = 48
303  obtain[12] = 39
304  obtain[13] = 28
305  obtain[14] = 60
306  obtain[15] = 48
307  obtain[16] = 17
308  obtain[17] = 74
309  obtain[18] = 38
310  obtain[19] = 60
311  obtain[20] = 63
312  obtain[21] = 66
313  obtain[22] = 23
314  obtain[23] = 48
[9f228bea]315  obtain[24] = 0
[27783f6]316  obtain[25] = 78
[9f228bea]317  obtain[26] = 0
[27783f6]318  obtain[27] = 43
[9f228bea]319  obtain[28] = 0
320  obtain[29] = 0
321  obtain[30] = 0
[27783f6]322  obtain[31] = 32
323  cpu[0] = 71
324  cpu[1] = 39
325  cpu[2] = 1333
326  cpu[3] = 1254
[9f228bea]327worker[7]
328  sleep = 1
329  timeout = 0
330  obtain[0] = 0
331  obtain[1] = 0
332  obtain[2] = 0
333  obtain[3] = 0
334  obtain[4] = 0
335  obtain[5] = 0
336  obtain[6] = 0
337  obtain[7] = 0
338  obtain[8] = 0
339  obtain[9] = 0
340  obtain[10] = 0
341  obtain[11] = 0
342  obtain[12] = 0
343  obtain[13] = 0
344  obtain[14] = 0
345  obtain[15] = 0
346  obtain[16] = 0
347  obtain[17] = 0
348  obtain[18] = 0
349  obtain[19] = 0
350  obtain[20] = 0
351  obtain[21] = 0
352  obtain[22] = 0
353  obtain[23] = 0
354  obtain[24] = 0
355  obtain[25] = 0
356  obtain[26] = 0
357  obtain[27] = 0
358  obtain[28] = 0
359  obtain[29] = 0
360  obtain[30] = 0
361  obtain[31] = 0
362  cpu[0] = 0
363  cpu[1] = 0
364  cpu[2] = 1
365  cpu[3] = 0
[27783f6]366migrations[0] = 437361
367migrations[1] = 437363
368migrations[2] = 441234
369migrations[3] = 433487
[8fcafdd5]370*** END OF TEST SMPMRSP 1 ***
Note: See TracBrowser for help on using the repository browser.