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# Reset event counter
53C: resetevent:		0: 	0
54W: opcodeeq:		0: 	0
55
56# Set priorities
57C: schedother:		0: 	0
58C: schedfifo:		1: 	80
59C: schedfifo:		2: 	81
60
61# T0 lock L0
62C: lock:		0:	0
63W: locked:		0: 	0
64
65# T1 lock L0, no wait in the wakeup path
66C: locknowait:		1: 	0
67W: blocked:		1: 	0
68T: prioeq:		0:	80
69T: prioeq:		1:	80
70
71# T2 lock L0 interruptible, no wait in the wakeup path
72C: lockintnowait:	2:	0
73W: blocked:		2: 	0
74T: prioeq:		0:	81
75T: prioeq:		1:	80
76
77# Interrupt T2
78C: signal:		2:	2
79W: unlocked:		2:	0
80T: prioeq:		1:	80
81T: prioeq:		0:	80
82
83T: locked:		0:	0
84T: blocked:		1:	0
85
86# T0 unlock L0
87C: unlock:		0: 	0
88
89# Wait until T1 has locked L0 and exit
90W: locked:		1:	0
91W: unlocked:		0: 	0
92T: priolt:		0:	1
93
94C: unlock:		1: 	0
95W: unlocked:		1: 	0
96