blob: 01f1a80fa02a4224386e5ff5a335010f8564f767 [file] [log] [blame]
Thomas Gleixner61a87122006-06-27 02:54:56 -07001#
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
60W: opcodeeq: 0: 0
61C: schedother: 1: 0
62W: opcodeeq: 1: 0
63C: schedfifo: 2: 82
64W: opcodeeq: 2: 0
65C: schedfifo: 3: 83
66W: opcodeeq: 3: 0
67
68# T0 lock L0
69C: locknowait: 0: 0
70W: locked: 0: 0
71
72# T1 lock L1
73C: locknowait: 1: 1
74W: locked: 1: 1
75
76# T3 lock L0
77C: lockintnowait: 3: 0
78W: blocked: 3: 0
79T: prioeq: 0: 83
80
81# T0 lock L1
82C: lock: 0: 1
83W: blocked: 0: 1
84T: prioeq: 1: 83
85
86# T1 unlock L1
87C: unlock: 1: 1
88
89# Wait until T0 is in the wakeup code
90W: blockedwake: 0: 1
91
92# Verify that T1 is unboosted
93W: unlocked: 1: 1
94T: priolt: 1: 1
95
96# T2 lock L1 (T0 is boosted and pending owner !)
97C: locknowait: 2: 1
98W: blocked: 2: 1
99T: prioeq: 0: 83
100
101# Interrupt T3 and wait until T3 returned
102C: signal: 3: 0
103W: unlocked: 3: 0
104
105# Verify prio of T0 (still pending owner,
106# but T2 is enqueued due to the previous boost by T3
107T: prioeq: 0: 82
108
109# Let T0 continue
110C: lockcont: 0: 1
111W: locked: 0: 1
112
113# Unlock L1 and let T2 get L1
114C: unlock: 0: 1
115W: locked: 2: 1
116
117# Verify that T0 is unboosted
118W: unlocked: 0: 1
119T: priolt: 0: 1
120
121# Unlock everything and exit
122C: unlock: 2: 1
123W: unlocked: 2: 1
124
125C: unlock: 0: 0
126W: unlocked: 0: 0
127