blob: d3d4404414ed0e831901532e2c1fcfe6ed1e7a2a (
plain) (
tree)
|
|
Script File : scenarios/cpus4_mode_case1.scen
verbose : 1
==> 1: #
==> 2: # Show how having a non-preemptive task can create a
==> 3: # priority inversion and changing the mode to preemptive
==> 4: # resolves it.
==> 5: #
==> 6: rtems_init 4
Thread Heir: 0x09010001 priority=255
Thread Executing: 0x09010001 priority=255
==> 7: task_create -p smp1 5
Creating task with: Preemption: no Timeslicing: no
Task (smp1) created: id=0x0a010001, priority=5
Task (smp1) starting: id=0x0a010001, priority=5
Thread Heir: 0x0a010001 priority=5
Thread Executing: 0x0a010001 priority=5
==> 8: task_create smp2 5
Creating task with: Preemption: yes Timeslicing: no
Task (smp2) created: id=0x0a010002, priority=5
Task (smp2) starting: id=0x0a010002, priority=5
==> 9: task_create smp3 5
Creating task with: Preemption: yes Timeslicing: no
Task (smp3) created: id=0x0a010003, priority=5
Task (smp3) starting: id=0x0a010003, priority=5
==> 10: task_create smp4 5
Creating task with: Preemption: yes Timeslicing: no
Task (smp4) created: id=0x0a010004, priority=5
Task (smp4) starting: id=0x0a010004, priority=5
==> 11: dispatch
=== Invoke Thread Dispatch on CPU 1
Thread Heir: 0x0a010002 priority=5
Thread Executing: 0x09010002 priority=255
Thread Executing: 0x0a010002 priority=5
=== Invoke Thread Dispatch on CPU 2
Thread Heir: 0x0a010003 priority=5
Thread Executing: 0x09010003 priority=255
Thread Executing: 0x0a010003 priority=5
=== Invoke Thread Dispatch on CPU 3
Thread Heir: 0x0a010004 priority=5
Thread Executing: 0x09010004 priority=255
Thread Executing: 0x0a010004 priority=5
==> 12: # GOAL: 0x0a010001 - 0x0a010004 are heir and executing
==> 13: # GOAL: on CPUs 0 - 3 respectively
==> 14: cpus
=== CPU Status
EXECUTING / HEIR / IDLE / SWITCH NEEDED
CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false
CPU 1: 0x0a010002 @ 5 / 0x0a010002 @ 5 / 0x09010002 @255 false
CPU 2: 0x0a010003 @ 5 / 0x0a010003 @ 5 / 0x09010003 @255 false
CPU 3: 0x0a010004 @ 5 / 0x0a010004 @ 5 / 0x09010004 @255 false
=== End of Ready Set of Threads
==> 15:
==> 16: task_create smp5 3
Creating task with: Preemption: yes Timeslicing: no
Thread Heir: 0x0a010001 priority=5
Thread Executing: 0x0a010001 priority=5
Task (smp5) created: id=0x0a010005, priority=3
Task (smp5) starting: id=0x0a010005, priority=3
==> 17: dispatch
=== Invoke Thread Dispatch on CPU 1
Thread Heir: 0x0a010005 priority=3
Thread Executing: 0x0a010002 priority=5
Thread Executing: 0x0a010005 priority=3
==> 18: # GOAL: 0x0a010001, 0x0a010005, 0x0a010003, and 0x0a010004 are heir
==> 19: # GOAL: and executing on CPUs 0 - 3
==> 20: cpus
=== CPU Status
EXECUTING / HEIR / IDLE / SWITCH NEEDED
CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false
CPU 1: 0x0a010005 @ 3 / 0x0a010005 @ 3 / 0x09010002 @255 false
CPU 2: 0x0a010003 @ 5 / 0x0a010003 @ 5 / 0x09010003 @255 false
CPU 3: 0x0a010004 @ 5 / 0x0a010004 @ 5 / 0x09010004 @255 false
=== End of Ready Set of Threads
==> 21:
==> 22: task_mode -P
Previous Mode: Preemption: no Timeslicing: no
Current Mode: Preemption: yes Timeslicing: no
==> 23: # GOAL: 0x0a010001, 0x0a010005, 0x0a010003, and 0x0a010004 are heir
==> 24: # GOAL: and executing on CPUs 0 - 3
==> 25: cpus
=== CPU Status
EXECUTING / HEIR / IDLE / SWITCH NEEDED
CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false
CPU 1: 0x0a010005 @ 3 / 0x0a010005 @ 3 / 0x09010002 @255 false
CPU 2: 0x0a010003 @ 5 / 0x0a010003 @ 5 / 0x09010003 @255 false
CPU 3: 0x0a010004 @ 5 / 0x0a010004 @ 5 / 0x09010004 @255 false
=== End of Ready Set of Threads
|