# # rt-mutex test # # Op: C(ommand)/T(est)/W(ait) # | opcode # | | threadid: 0-7 # | | | opcode argument # | | | | # C: lock: 0: 0 # # Commands # # opcode opcode argument # schedother nice value # schedfifo priority # lock lock nr (0-7) # locknowait lock nr (0-7) # lockint lock nr (0-7) # lockintnowait lock nr (0-7) # lockcont lock nr (0-7) # unlock lock nr (0-7) # signal thread to signal (0-7) # reset 0 # resetevent 0 # # Tests / Wait # # opcode opcode argument # # prioeq priority # priolt priority # priogt priority # nprioeq normal priority # npriolt normal priority # npriogt normal priority # locked lock nr (0-7) # blocked lock nr (0-7) # blockedwake lock nr (0-7) # unlocked lock nr (0-7) # opcodeeq command opcode or number # opcodelt number # opcodegt number # eventeq number # eventgt number # eventlt number # # 4 threads 2 lock PI # C: resetevent: 0: 0 W: opcodeeq: 0: 0 # Set schedulers C: schedother: 0: 0 C: schedother: 1: 0 C: schedfifo: 2: 82 C: schedfifo: 3: 83 # T0 lock L0 C: locknowait: 0: 0 W: locked: 0: 0 # T1 lock L1 C: locknowait: 1: 1 W: locked: 1: 1 # T3 lock L0 C: lockintnowait: 3: 0 W: blocked: 3: 0 T: prioeq: 0: 83 # T0 lock L1 C: lock: 0: 1 W: blocked: 0: 1 T: prioeq: 1: 83 # T1 unlock L1 C: unlock: 1: 1 # Wait until T0 is in the wakeup code W: blockedwake: 0: 1 # Verify that T1 is unboosted W: unlocked: 1: 1 T: priolt: 1: 1 # T2 lock L1 (T0 is boosted and pending owner !) C: locknowait: 2: 1 W: blocked: 2: 1 T: prioeq: 0: 83 # Interrupt T3 and wait until T3 returned C: signal: 3: 0 W: unlocked: 3: 0 # Verify prio of T0 (still pending owner, # but T2 is enqueued due to the previous boost by T3 T: prioeq: 0: 82 # Let T0 continue C: lockcont: 0: 1 W: locked: 0: 1 # Unlock L1 and let T2 get L1 C: unlock: 0: 1 W: locked: 2: 1 # Verify that T0 is unboosted W: unlocked: 0: 1 T: priolt: 0: 1 # Unlock everything and exit C: unlock: 2: 1 W: unlocked: 2: 1 C: unlock: 0: 0 W: unlocked: 0: 0