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