1#
2# rt-mutex test
3#
4# Op: C(ommand)/T(est)/W(ait)
5# |  opcode
6# |  |     threadid: 0-7
7# |  |     |  opcode argument
8# |  |     |  |
9# C: lock: 0: 0
10#
11# Commands
12#
13# opcode	opcode argument
14# schedother	nice value
15# schedfifo	priority
16# lock		lock nr (0-7)
17# locknowait	lock nr (0-7)
18# lockint	lock nr (0-7)
19# lockintnowait	lock nr (0-7)
20# lockcont	lock nr (0-7)
21# unlock	lock nr (0-7)
22# signal	thread to signal (0-7)
23# reset		0
24# resetevent	0
25#
26# Tests / Wait
27#
28# opcode	opcode argument
29#
30# prioeq	priority
31# priolt	priority
32# priogt	priority
33# nprioeq	normal priority
34# npriolt	normal priority
35# npriogt	normal priority
36# locked	lock nr (0-7)
37# blocked	lock nr (0-7)
38# blockedwake	lock nr (0-7)
39# unlocked	lock nr (0-7)
40# opcodeeq	command opcode or number
41# opcodelt	number
42# opcodegt	number
43# eventeq	number
44# eventgt	number
45# eventlt	number
46
47#
48# 4 threads 2 lock PI
49#
50C: resetevent:		0: 	0
51W: opcodeeq:		0: 	0
52
53# Set schedulers
54C: schedother:		0: 	0
55C: schedother:		1: 	0
56C: schedfifo:		2: 	82
57C: schedfifo:		3: 	83
58
59# T0 lock L0
60C: locknowait:		0: 	0
61W: locked:		0: 	0
62
63# T1 lock L1
64C: locknowait:		1: 	1
65W: locked:		1: 	1
66
67# T3 lock L0
68C: lockintnowait:	3: 	0
69W: blocked:		3: 	0
70T: prioeq:		0: 	83
71
72# T0 lock L1
73C: lock:		0: 	1
74W: blocked:		0: 	1
75T: prioeq:		1: 	83
76
77# T1 unlock L1
78C: unlock:		1:	1
79
80# Wait until T0 is in the wakeup code
81W: blockedwake:		0:	1
82
83# Verify that T1 is unboosted
84W: unlocked:		1: 	1
85T: priolt:		1: 	1
86
87# T2 lock L1 (T0 is boosted and pending owner !)
88C: locknowait:		2:	1
89W: blocked:		2: 	1
90T: prioeq:		0: 	83
91
92# Interrupt T3 and wait until T3 returned
93C: signal:		3:	0
94W: unlocked:		3:	0
95
96# Verify prio of T0 (still pending owner,
97# but T2 is enqueued due to the previous boost by T3
98T: prioeq:		0:	82
99
100# Let T0 continue
101C: lockcont:		0:	1
102W: locked:		0:	1
103
104# Unlock L1 and let T2 get L1
105C: unlock:		0:	1
106W: locked:		2:	1
107
108# Verify that T0 is unboosted
109W: unlocked:		0:	1
110T: priolt:		0:	1
111
112# Unlock everything and exit
113C: unlock:		2:	1
114W: unlocked:		2:	1
115
116C: unlock:		0:	0
117W: unlocked:		0:	0
118
119