diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-05-17 19:31:12 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-05-17 19:31:12 +0000 |
commit | f40778b48660b589278898593c62cf2250d3fbab (patch) | |
tree | 09d84495b8a489f65e58819c8d77ec488da30571 /schedsim/shell/schedsim_smpsimple/scenarios | |
parent | 2011-05-17 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-schedsim-f40778b48660b589278898593c62cf2250d3fbab.tar.bz2 |
2011-05-17 Joel Sherrill <joel.sherrill@oarcorp.com>
* .cvsignore, ChangeLog, Makefile.am, README, TODO, add_commands.c,
config.c, main_current_cpu.c, main_dispatch.c, main_dump_all_cpus.c,
main_dump_ready_tasks.c, printheir_executing.c, schedsim.cc,
smp_stub.c, wrap_thread_dispatch.c, scenarios/.cvsignore,
scenarios/cpus1_mode.expected, scenarios/cpus1_mode.scen,
scenarios/cpus1_priority.expected, scenarios/cpus1_priority.scen,
scenarios/cpus1_resume_on_primary.expected,
scenarios/cpus1_resume_on_primary.scen,
scenarios/cpus1_suspend_on_primary.expected,
scenarios/cpus1_suspend_on_primary.scen,
scenarios/cpus4_mode_case1.expected, scenarios/cpus4_mode_case1.scen,
scenarios/cpus4_mode_case2.expected, scenarios/cpus4_mode_case2.scen,
scenarios/cpus4_nonpreempt_case1.expected,
scenarios/cpus4_nonpreempt_case1.scen,
scenarios/cpus4_pick_older.expected, scenarios/cpus4_pick_older.scen,
scenarios/cpus4_priority.expected, scenarios/cpus4_priority.scen,
scenarios/cpus4_simple_nopreempt.expected,
scenarios/cpus4_simple_nopreempt.scen,
scenarios/cpus4_simple_preemption.expected,
scenarios/cpus4_simple_preemption.scen,
scenarios/cpus4_suspend_on_all.expected,
scenarios/cpus4_suspend_on_all.scen,
scenarios/cpus4_suspend_on_primary.expected,
scenarios/cpus4_suspend_on_primary.scen,
scenarios/cpus4_suspend_on_secondary.expected,
scenarios/cpus4_suspend_on_secondary.scen: New files.
Diffstat (limited to 'schedsim/shell/schedsim_smpsimple/scenarios')
29 files changed, 1436 insertions, 0 deletions
diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/.cvsignore b/schedsim/shell/schedsim_smpsimple/scenarios/.cvsignore new file mode 100644 index 0000000..7de0b67 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/.cvsignore @@ -0,0 +1 @@ +*.output diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_mode.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_mode.expected new file mode 100644 index 0000000..34ad78c --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_mode.expected @@ -0,0 +1,42 @@ +Script File : scenarios/cpus1_mode.scen +verbose : 1 +==> 1: # +==> 2: # Check increasing and decrease priority self with no change +==> 3: # +==> 4: rtems_init 1 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: 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 +==> 6: # GOAL: 0x0a010001 is heir and executing on CPU 0 +==> 7: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 8: task_create smp2 4 +Creating task with: Preemption: yes Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=4 +Task (smp2) starting: id=0x0a010002, priority=4 + Thread Heir: 0x0a010002 priority=4 +==> 9: # GOAL: 0x0a010001 is executing and 0x0a010002 is heir on CPU 0 +==> 10: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010002 @ 4 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 11: +==> 12: task_mode -P + Thread Executing: 0x0a010002 priority=4 +Previous Mode: Preemption: no Timeslicing: no +Current Mode: Preemption: yes Timeslicing: no +==> 13: # GOAL: 0x0a010002 is heir and executing on CPU 0 +==> 14: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010002 @ 4 / 0x0a010002 @ 4 / 0x09010001 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_mode.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_mode.scen new file mode 100644 index 0000000..21de2c7 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_mode.scen @@ -0,0 +1,14 @@ +# +# Check increasing and decrease priority self with no change +# +rtems_init 1 +task_create -p smp1 5 +# GOAL: 0x0a010001 is heir and executing on CPU 0 +cpus +task_create smp2 4 +# GOAL: 0x0a010001 is executing and 0x0a010002 is heir on CPU 0 +cpus + +task_mode -P +# GOAL: 0x0a010002 is heir and executing on CPU 0 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_priority.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_priority.expected new file mode 100644 index 0000000..4047709 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_priority.expected @@ -0,0 +1,69 @@ +Script File : scenarios/cpus1_priority.scen +verbose : 1 +==> 1: # +==> 2: # Check increasing and decrease priority self with no change +==> 3: # +==> 4: rtems_init 1 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: task_create smp1 5 +Creating task with: Preemption: yes 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 +==> 6: task_create smp2 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=8 +Task (smp2) starting: id=0x0a010002, priority=8 +==> 7: dispatch +==> 8: # GOAL: 0x0a010001 is heir and executing on CPU 0 +==> 9: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 10: +==> 11: task_priority smp1 4 +Task (0x0a010001) Change Priority from 5 to 4 +==> 12: dispatch +==> 13: # GOAL: 0x0a010001 is still heir and executing on CPU 0 +==> 14: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 4 / 0x0a010001 @ 4 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 15: +==> 16: task_priority smp1 7 +Task (0x0a010001) Change Priority from 4 to 7 +==> 17: dispatch +==> 18: # GOAL: 0x0a010001 is still heir and executing on CPU 0 +==> 19: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 7 / 0x0a010001 @ 7 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 20: +==> 21: task_priority smp1 8 + Thread Heir: 0x0a010002 priority=8 + Thread Executing: 0x0a010002 priority=8 +Task (0x0a010001) Change Priority from 7 to 8 +==> 22: dispatch +==> 23: # GOAL: 0x0a010002 is now heir and executing on CPU 0 +==> 24: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010002 @ 8 / 0x0a010002 @ 8 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 25: +==> 26: task_priority smp1 5 + Thread Heir: 0x0a010001 priority=5 + Thread Executing: 0x0a010001 priority=5 +Task (0x0a010001) Change Priority from 8 to 5 +==> 27: dispatch +==> 28: # GOAL: 0x0a010001 is now heir and executing on CPU 0 +==> 29: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_priority.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_priority.scen new file mode 100644 index 0000000..924efc8 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_priority.scen @@ -0,0 +1,29 @@ +# +# Check increasing and decrease priority self with no change +# +rtems_init 1 +task_create smp1 5 +task_create smp2 8 +dispatch +# GOAL: 0x0a010001 is heir and executing on CPU 0 +cpus + +task_priority smp1 4 +dispatch +# GOAL: 0x0a010001 is still heir and executing on CPU 0 +cpus + +task_priority smp1 7 +dispatch +# GOAL: 0x0a010001 is still heir and executing on CPU 0 +cpus + +task_priority smp1 8 +dispatch +# GOAL: 0x0a010002 is now heir and executing on CPU 0 +cpus + +task_priority smp1 5 +dispatch +# GOAL: 0x0a010001 is now heir and executing on CPU 0 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_resume_on_primary.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_resume_on_primary.expected new file mode 100644 index 0000000..36328d2 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_resume_on_primary.expected @@ -0,0 +1,57 @@ +Script File : scenarios/cpus1_resume_on_primary.scen +verbose : 1 +==> 1: # +==> 2: # Check suspending self, then resuming on primary CPU +==> 3: # +==> 4: rtems_init 1 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: task_create smp1 5 +Creating task with: Preemption: yes 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 +==> 6: dispatch +==> 7: # GOAL: 0x0a010001 is heir and executing on CPU 0 +==> 8: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 9: # suspend running task +==> 10: task_suspend smp1 +Suspending task (0x0a010001) + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 11: # GOAL: 0x09010001 is heir and executing on CPU 0 +==> 12: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x09010001 @255 / 0x09010001 @255 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 13: dispatch +==> 14: # GOAL: 0x09010001 is heir and executing on CPU 0 +==> 15: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x09010001 @255 / 0x09010001 @255 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 16: # resume suspended task +==> 17: task_resume smp1 +Resuming task (0x0a010001) + Thread Heir: 0x0a010001 priority=5 + Thread Executing: 0x0a010001 priority=5 +==> 18: # GOAL: 0x0a010001 is heir and executing on CPU 0 +==> 19: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 20: dispatch +==> 21: # GOAL: 0x0a010001 is heir and executing on CPU 0 +==> 22: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_resume_on_primary.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_resume_on_primary.scen new file mode 100644 index 0000000..d2df3a8 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_resume_on_primary.scen @@ -0,0 +1,22 @@ +# +# Check suspending self, then resuming on primary CPU +# +rtems_init 1 +task_create smp1 5 +dispatch +# GOAL: 0x0a010001 is heir and executing on CPU 0 +cpus +# suspend running task +task_suspend smp1 +# GOAL: 0x09010001 is heir and executing on CPU 0 +cpus +dispatch +# GOAL: 0x09010001 is heir and executing on CPU 0 +cpus +# resume suspended task +task_resume smp1 +# GOAL: 0x0a010001 is heir and executing on CPU 0 +cpus +dispatch +# GOAL: 0x0a010001 is heir and executing on CPU 0 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_suspend_on_primary.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_suspend_on_primary.expected new file mode 100644 index 0000000..5844723 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_suspend_on_primary.expected @@ -0,0 +1,37 @@ +Script File : scenarios/cpus1_suspend_on_primary.scen +verbose : 1 +==> 1: # +==> 2: # Check blocking self on primary CPU +==> 3: # +==> 4: rtems_init 1 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: task_create smp1 5 +Creating task with: Preemption: yes 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 +==> 6: dispatch +==> 7: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 8: # GOAL: 0x0a010001 is heir and executing on CPU 0 +==> 9: task_suspend SELF +Suspending task (0x0a010001) + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 10: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x09010001 @255 / 0x09010001 @255 / 0x09010001 @255 false +=== End of Ready Set of Threads +==> 11: dispatch +==> 12: # GOAL: 0x09010001 is heir and executing on CPU 0 +==> 13: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x09010001 @255 / 0x09010001 @255 / 0x09010001 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_suspend_on_primary.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_suspend_on_primary.scen new file mode 100644 index 0000000..a4db578 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus1_suspend_on_primary.scen @@ -0,0 +1,13 @@ +# +# Check blocking self on primary CPU +# +rtems_init 1 +task_create smp1 5 +dispatch +cpus +# GOAL: 0x0a010001 is heir and executing on CPU 0 +task_suspend SELF +cpus +dispatch +# GOAL: 0x09010001 is heir and executing on CPU 0 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case1.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case1.expected new file mode 100644 index 0000000..d3d4404 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case1.expected @@ -0,0 +1,87 @@ +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 diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case1.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case1.scen new file mode 100644 index 0000000..a9f186c --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case1.scen @@ -0,0 +1,25 @@ +# +# Show how having a non-preemptive task can create a +# priority inversion and changing the mode to preemptive +# resolves it. +# +rtems_init 4 +task_create -p smp1 5 +task_create smp2 5 +task_create smp3 5 +task_create smp4 5 +dispatch +# GOAL: 0x0a010001 - 0x0a010004 are heir and executing +# GOAL: on CPUs 0 - 3 respectively +cpus + +task_create smp5 3 +dispatch +# GOAL: 0x0a010001, 0x0a010005, 0x0a010003, and 0x0a010004 are heir +# GOAL: and executing on CPUs 0 - 3 +cpus + +task_mode -P +# GOAL: 0x0a010001, 0x0a010005, 0x0a010003, and 0x0a010004 are heir +# GOAL: and executing on CPUs 0 - 3 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case2.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case2.expected new file mode 100644 index 0000000..6b0086f --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case2.expected @@ -0,0 +1,89 @@ +Script File : scenarios/cpus4_mode_case2.scen +verbose : 1 +==> 1: # +==> 2: # Show how having a non-preemptive task can create a +==> 3: # priority inversion +==> 4: # +==> 5: rtems_init 4 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 6: task_create -p smp1 4 +Creating task with: Preemption: no Timeslicing: no +Task (smp1) created: id=0x0a010001, priority=4 +Task (smp1) starting: id=0x0a010001, priority=4 + Thread Heir: 0x0a010001 priority=4 + Thread Executing: 0x0a010001 priority=4 +==> 7: task_create -p smp2 5 +Creating task with: Preemption: no Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=5 +Task (smp2) starting: id=0x0a010002, priority=5 +==> 8: task_create -p smp3 4 +Creating task with: Preemption: no Timeslicing: no +Task (smp3) created: id=0x0a010003, priority=4 +Task (smp3) starting: id=0x0a010003, priority=4 +==> 9: task_create -p smp4 4 +Creating task with: Preemption: no Timeslicing: no +Task (smp4) created: id=0x0a010004, priority=4 +Task (smp4) starting: id=0x0a010004, priority=4 +==> 10: 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=4 + Thread Executing: 0x09010003 priority=255 + Thread Executing: 0x0a010003 priority=4 +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010004 priority=4 + Thread Executing: 0x09010004 priority=255 + Thread Executing: 0x0a010004 priority=4 +==> 11: # GOAL: 0x0a010001 - 0x0a010004 are heir and executing +==> 12: # GOAL: on CPUs 0 - 3 respectively +==> 13: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 4 / 0x0a010001 @ 4 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 5 / 0x0a010002 @ 5 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 4 / 0x0a010003 @ 4 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 4 / 0x0a010004 @ 4 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 14: +==> 15: task_create smp5 3 +Creating task with: Preemption: yes Timeslicing: no + Thread Heir: 0x0a010001 priority=4 + Thread Executing: 0x0a010001 priority=4 +Task (smp5) created: id=0x0a010005, priority=3 +Task (smp5) starting: id=0x0a010005, priority=3 +==> 16: dispatch +==> 17: # GOAL: 0x0a010001 - 0x0a010004 are executing on CPUs 0 - 3. +==> 18: # GOAL: All are also heir EXCEPT 0x0a010005 is heir on CPU 1. +==> 19: # GOAL: **** SHOWS INVERSION - CPU 1 has NO PREEMPT TASK **** +==> 20: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 4 / 0x0a010001 @ 4 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 5 / 0x0a010005 @ 3 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 4 / 0x0a010003 @ 4 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 4 / 0x0a010004 @ 4 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 21: +==> 22: current_cpu 1 +Changing current CPU from 0 to 1 +==> 23: task_mode -P + Thread Heir: 0x0a010005 priority=3 + Thread Executing: 0x0a010002 priority=5 + Thread Executing: 0x0a010005 priority=3 +Previous Mode: Preemption: no Timeslicing: no +Current Mode: Preemption: yes Timeslicing: no +==> 24: dispatch +==> 25: # GOAL: 0x0a010001, 0x0a010005, 0x0a010003, and 0x0a010004 are +==> 26: # GOAL: heir and executing on CPUs 0 - 3 +==> 27: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 4 / 0x0a010001 @ 4 / 0x09010001 @255 false + CPU 1: 0x0a010005 @ 3 / 0x0a010005 @ 3 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 4 / 0x0a010003 @ 4 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 4 / 0x0a010004 @ 4 / 0x09010004 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case2.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case2.scen new file mode 100644 index 0000000..44263e4 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_mode_case2.scen @@ -0,0 +1,27 @@ +# +# Show how having a non-preemptive task can create a +# priority inversion +# +rtems_init 4 +task_create -p smp1 4 +task_create -p smp2 5 +task_create -p smp3 4 +task_create -p smp4 4 +dispatch +# GOAL: 0x0a010001 - 0x0a010004 are heir and executing +# GOAL: on CPUs 0 - 3 respectively +cpus + +task_create smp5 3 +dispatch +# GOAL: 0x0a010001 - 0x0a010004 are executing on CPUs 0 - 3. +# GOAL: All are also heir EXCEPT 0x0a010005 is heir on CPU 1. +# GOAL: **** SHOWS INVERSION - CPU 1 has NO PREEMPT TASK **** +cpus + +current_cpu 1 +task_mode -P +dispatch +# GOAL: 0x0a010001, 0x0a010005, 0x0a010003, and 0x0a010004 are +# GOAL: heir and executing on CPUs 0 - 3 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_nonpreempt_case1.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_nonpreempt_case1.expected new file mode 100644 index 0000000..f5069e1 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_nonpreempt_case1.expected @@ -0,0 +1,72 @@ +Script File : scenarios/cpus4_nonpreempt_case1.scen +verbose : 1 +==> 1: # +==> 2: # Show how having a non-preemptive task can create a +==> 3: # priority inversion +==> 4: # +==> 5: rtems_init 4 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 6: 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 +==> 7: 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 +==> 8: 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 +==> 9: 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 +==> 10: 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 +==> 11: # GOAL: 0x0a010001 - 0x0a010004 are heir and executing +==> 12: # GOAL: on CPUs 0 - 3 respectively +==> 13: 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 +==> 14: +==> 15: 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 +==> 16: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x0a010005 priority=3 + Thread Executing: 0x0a010002 priority=5 + Thread Executing: 0x0a010005 priority=3 +==> 17: # GOAL: 0x0a010001, 0x0a010005, 0x0a010003, and 0x0a010004 are heir +==> 18: # GOAL: and executing on CPUs 0 - 3 +==> 19: 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 diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_nonpreempt_case1.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_nonpreempt_case1.scen new file mode 100644 index 0000000..92b44bf --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_nonpreempt_case1.scen @@ -0,0 +1,19 @@ +# +# Show how having a non-preemptive task can create a +# priority inversion +# +rtems_init 4 +task_create -p smp1 5 +task_create smp2 5 +task_create smp3 5 +task_create smp4 5 +dispatch +# GOAL: 0x0a010001 - 0x0a010004 are heir and executing +# GOAL: on CPUs 0 - 3 respectively +cpus + +task_create smp5 3 +dispatch +# GOAL: 0x0a010001, 0x0a010005, 0x0a010003, and 0x0a010004 are heir +# GOAL: and executing on CPUs 0 - 3 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_pick_older.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_pick_older.expected new file mode 100644 index 0000000..749ae29 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_pick_older.expected @@ -0,0 +1,156 @@ +Script File : scenarios/cpus4_pick_older.scen +verbose : 1 +==> 1: # +==> 2: # Verify we select the oldest task at a priority +==> 3: # +==> 4: rtems_init 4 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: task_create smp1 3 +Creating task with: Preemption: yes Timeslicing: no +Task (smp1) created: id=0x0a010001, priority=3 +Task (smp1) starting: id=0x0a010001, priority=3 + Thread Heir: 0x0a010001 priority=3 + Thread Executing: 0x0a010001 priority=3 +==> 6: task_create smp2 6 +Creating task with: Preemption: yes Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=6 +Task (smp2) starting: id=0x0a010002, priority=6 +==> 7: task_create smp3 7 +Creating task with: Preemption: yes Timeslicing: no +Task (smp3) created: id=0x0a010003, priority=7 +Task (smp3) starting: id=0x0a010003, priority=7 +==> 8: task_create smp4 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp4) created: id=0x0a010004, priority=8 +Task (smp4) starting: id=0x0a010004, priority=8 +==> 9: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x0a010002 priority=6 + Thread Executing: 0x09010002 priority=255 + Thread Executing: 0x0a010002 priority=6 +=== Invoke Thread Dispatch on CPU 2 + Thread Heir: 0x0a010003 priority=7 + Thread Executing: 0x09010003 priority=255 + Thread Executing: 0x0a010003 priority=7 +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010004 priority=8 + Thread Executing: 0x09010004 priority=255 + Thread Executing: 0x0a010004 priority=8 +==> 10: # GOAL: Tasks 0x0a010001 - 0x0a010004 as heir and executing +==> 11: # GOAL: on CPUs 1 - 4 respectively +==> 12: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 3 / 0x0a010001 @ 3 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 13: +==> 14: task_create smp5 5 +Creating task with: Preemption: yes Timeslicing: no + Thread Heir: 0x0a010001 priority=3 + Thread Executing: 0x0a010001 priority=3 +Task (smp5) created: id=0x0a010005, priority=5 +Task (smp5) starting: id=0x0a010005, priority=5 +==> 15: clock_tick 1 +ClockTick (1) ... +==> 16: dispatch +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010005 priority=5 + Thread Executing: 0x0a010004 priority=8 + Thread Executing: 0x0a010005 priority=5 +==> 17: # GOAL: Tasks 0x0a010001, 0x0a010002, 0x0a010003, and 0x0a010005 are +==> 18: # GOAL: heir and executing on CPUs 1 - 4 respectively +==> 19: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 3 / 0x0a010001 @ 3 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010005 @ 5 / 0x0a010005 @ 5 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 20: +==> 21: task_create smp6 5 +Creating task with: Preemption: yes Timeslicing: no + Thread Heir: 0x0a010001 priority=3 + Thread Executing: 0x0a010001 priority=3 +Task (smp6) created: id=0x0a010006, priority=5 +Task (smp6) starting: id=0x0a010006, priority=5 +==> 22: clock_tick 1 +ClockTick (1) ... +==> 23: dispatch +=== Invoke Thread Dispatch on CPU 2 + Thread Heir: 0x0a010006 priority=5 + Thread Executing: 0x0a010003 priority=7 + Thread Executing: 0x0a010006 priority=5 +==> 24: # GOAL: Tasks 0x0a010001, 0x0a010002, 0x0a010006, and 0x0a010005 are +==> 25: # GOAL: heir and executing on CPUs 1 - 4 respectively +==> 26: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 3 / 0x0a010001 @ 3 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010006 @ 5 / 0x0a010006 @ 5 / 0x09010003 @255 false + CPU 3: 0x0a010005 @ 5 / 0x0a010005 @ 5 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 27: +==> 28: task_create smp7 5 +Creating task with: Preemption: yes Timeslicing: no + Thread Heir: 0x0a010001 priority=3 + Thread Executing: 0x0a010001 priority=3 +Task (smp7) created: id=0x0a010007, priority=5 +Task (smp7) starting: id=0x0a010007, priority=5 +==> 29: clock_tick 1 +ClockTick (1) ... +==> 30: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x0a010007 priority=5 + Thread Executing: 0x0a010002 priority=6 + Thread Executing: 0x0a010007 priority=5 +==> 31: # GOAL: Tasks 0x0a010001, 0x0a010007, 0x0a010006, and 0x0a010005 are +==> 32: # GOAL: heir and executing on CPUs 1 - 4 respectively +==> 33: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 3 / 0x0a010001 @ 3 / 0x09010001 @255 false + CPU 1: 0x0a010007 @ 5 / 0x0a010007 @ 5 / 0x09010002 @255 false + CPU 2: 0x0a010006 @ 5 / 0x0a010006 @ 5 / 0x09010003 @255 false + CPU 3: 0x0a010005 @ 5 / 0x0a010005 @ 5 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 34: +==> 35: # We should pick task smp4 on the 4th core +==> 36: task_create smp8 4 +Creating task with: Preemption: yes Timeslicing: no + Thread Heir: 0x0a010001 priority=3 + Thread Executing: 0x0a010001 priority=3 +Task (smp8) created: id=0x0a010008, priority=4 +Task (smp8) starting: id=0x0a010008, priority=4 +==> 37: # GOAL: Tasks 0x0a010001, 0x0a010007, and 0x0a010006 +==> 38: # GOAL: heir and executing on CPUs 1 - 3 respectively +==> 39: # GOAL: Task 0x0a010005 is executing on CPU 4 +==> 40: # GOAL: Task 0x0a010008 is heir on CPU 4 +==> 41: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 3 / 0x0a010001 @ 3 / 0x09010001 @255 false + CPU 1: 0x0a010007 @ 5 / 0x0a010007 @ 5 / 0x09010002 @255 false + CPU 2: 0x0a010006 @ 5 / 0x0a010006 @ 5 / 0x09010003 @255 false + CPU 3: 0x0a010005 @ 5 / 0x0a010008 @ 4 / 0x09010004 @255 true +=== End of Ready Set of Threads +==> 42: dispatch +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010008 priority=4 + Thread Executing: 0x0a010005 priority=5 + Thread Executing: 0x0a010008 priority=4 +==> 43: # GOAL: Tasks 0x0a010001, 0x0a010007, 0x0a010006, and 0x0a010008 are +==> 44: # GOAL: heir and executing on CPUs 1 - 4 respectively +==> 45: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 3 / 0x0a010001 @ 3 / 0x09010001 @255 false + CPU 1: 0x0a010007 @ 5 / 0x0a010007 @ 5 / 0x09010002 @255 false + CPU 2: 0x0a010006 @ 5 / 0x0a010006 @ 5 / 0x09010003 @255 false + CPU 3: 0x0a010008 @ 4 / 0x0a010008 @ 4 / 0x09010004 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_pick_older.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_pick_older.scen new file mode 100644 index 0000000..baf55f0 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_pick_older.scen @@ -0,0 +1,45 @@ +# +# Verify we select the oldest task at a priority +# +rtems_init 4 +task_create smp1 3 +task_create smp2 6 +task_create smp3 7 +task_create smp4 8 +dispatch +# GOAL: Tasks 0x0a010001 - 0x0a010004 as heir and executing +# GOAL: on CPUs 1 - 4 respectively +cpus + +task_create smp5 5 +clock_tick 1 +dispatch +# GOAL: Tasks 0x0a010001, 0x0a010002, 0x0a010003, and 0x0a010005 are +# GOAL: heir and executing on CPUs 1 - 4 respectively +cpus + +task_create smp6 5 +clock_tick 1 +dispatch +# GOAL: Tasks 0x0a010001, 0x0a010002, 0x0a010006, and 0x0a010005 are +# GOAL: heir and executing on CPUs 1 - 4 respectively +cpus + +task_create smp7 5 +clock_tick 1 +dispatch +# GOAL: Tasks 0x0a010001, 0x0a010007, 0x0a010006, and 0x0a010005 are +# GOAL: heir and executing on CPUs 1 - 4 respectively +cpus + +# We should pick task smp4 on the 4th core +task_create smp8 4 +# GOAL: Tasks 0x0a010001, 0x0a010007, and 0x0a010006 +# GOAL: heir and executing on CPUs 1 - 3 respectively +# GOAL: Task 0x0a010005 is executing on CPU 4 +# GOAL: Task 0x0a010008 is heir on CPU 4 +cpus +dispatch +# GOAL: Tasks 0x0a010001, 0x0a010007, 0x0a010006, and 0x0a010008 are +# GOAL: heir and executing on CPUs 1 - 4 respectively +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_priority.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_priority.expected new file mode 100644 index 0000000..942341b --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_priority.expected @@ -0,0 +1,115 @@ +Script File : scenarios/cpus4_priority.scen +verbose : 1 +==> 1: # +==> 2: # Check increasing and decrease priority +==> 3: # +==> 4: rtems_init 4 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: task_create smp1 5 +Creating task with: Preemption: yes 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 +==> 6: task_create smp2 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=8 +Task (smp2) starting: id=0x0a010002, priority=8 +==> 7: task_create smp3 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp3) created: id=0x0a010003, priority=8 +Task (smp3) starting: id=0x0a010003, priority=8 +==> 8: task_create smp4 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp4) created: id=0x0a010004, priority=8 +Task (smp4) starting: id=0x0a010004, priority=8 +==> 9: task_create smp5 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp5) created: id=0x0a010005, priority=8 +Task (smp5) starting: id=0x0a010005, priority=8 +==> 10: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x0a010002 priority=8 + Thread Executing: 0x09010002 priority=255 + Thread Executing: 0x0a010002 priority=8 +=== Invoke Thread Dispatch on CPU 2 + Thread Heir: 0x0a010003 priority=8 + Thread Executing: 0x09010003 priority=255 + Thread Executing: 0x0a010003 priority=8 +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010004 priority=8 + Thread Executing: 0x09010004 priority=255 + Thread Executing: 0x0a010004 priority=8 +==> 11: # GOAL: 0x0a010001 - 0x0a010004 are heir and executing +==> 12: # GOAL: on CPUs 0 - 3 respectively +==> 13: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 8 / 0x0a010002 @ 8 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 8 / 0x0a010003 @ 8 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 14: +==> 15: task_priority smp1 4 + Thread Heir: 0x0a010001 priority=4 + Thread Executing: 0x0a010001 priority=4 +Task (0x0a010001) Change Priority from 5 to 4 +==> 16: dispatch +==> 17: # GOAL: 0x0a010001 - 0x0a010004 are heir and executing +==> 18: # GOAL: on CPUs 0 - 3 respectively (no change) +==> 19: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 4 / 0x0a010001 @ 4 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 8 / 0x0a010002 @ 8 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 8 / 0x0a010003 @ 8 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 20: +==> 21: task_priority smp1 7 +Task (0x0a010001) Change Priority from 4 to 7 +==> 22: dispatch +==> 23: # GOAL: 0x0a010001 - 0x0a010004 are heir and executing +==> 24: # GOAL: on CPUs 0 - 3 respectively (no change) +==> 25: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 7 / 0x0a010001 @ 7 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 8 / 0x0a010002 @ 8 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 8 / 0x0a010003 @ 8 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 26: +==> 27: task_priority smp1 8 + Thread Heir: 0x0a010005 priority=8 + Thread Executing: 0x0a010005 priority=8 +Task (0x0a010001) Change Priority from 7 to 8 +==> 28: dispatch +==> 29: # GOAL: 0x0a010005, 0x0a010002 - 0x0a010004 are heir and executing +==> 30: # GOAL: on CPUs 0 - 3 respectively +==> 31: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010005 @ 8 / 0x0a010005 @ 8 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 8 / 0x0a010002 @ 8 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 8 / 0x0a010003 @ 8 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 32: +==> 33: task_priority smp1 5 + Thread Heir: 0x0a010001 priority=5 + Thread Executing: 0x0a010001 priority=5 +Task (0x0a010001) Change Priority from 8 to 5 +==> 34: dispatch +==> 35: # GOAL: 0x0a010001 - 0x0a010004 are heir and executing +==> 36: # GOAL: on CPUs 0 - 3 respectively +==> 37: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 8 / 0x0a010002 @ 8 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 8 / 0x0a010003 @ 8 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_priority.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_priority.scen new file mode 100644 index 0000000..311bae4 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_priority.scen @@ -0,0 +1,37 @@ +# +# Check increasing and decrease priority +# +rtems_init 4 +task_create smp1 5 +task_create smp2 8 +task_create smp3 8 +task_create smp4 8 +task_create smp5 8 +dispatch +# GOAL: 0x0a010001 - 0x0a010004 are heir and executing +# GOAL: on CPUs 0 - 3 respectively +cpus + +task_priority smp1 4 +dispatch +# GOAL: 0x0a010001 - 0x0a010004 are heir and executing +# GOAL: on CPUs 0 - 3 respectively (no change) +cpus + +task_priority smp1 7 +dispatch +# GOAL: 0x0a010001 - 0x0a010004 are heir and executing +# GOAL: on CPUs 0 - 3 respectively (no change) +cpus + +task_priority smp1 8 +dispatch +# GOAL: 0x0a010005, 0x0a010002 - 0x0a010004 are heir and executing +# GOAL: on CPUs 0 - 3 respectively +cpus + +task_priority smp1 5 +dispatch +# GOAL: 0x0a010001 - 0x0a010004 are heir and executing +# GOAL: on CPUs 0 - 3 respectively +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_nopreempt.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_nopreempt.expected new file mode 100644 index 0000000..fad7357 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_nopreempt.expected @@ -0,0 +1,75 @@ +Script File : scenarios/cpus4_simple_nopreempt.scen +verbose : 1 +==> 1: # +==> 2: # Verify no-preempt is honored +==> 3: # +==> 4: rtems_init 4 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: 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 +==> 6: task_create -p smp2 6 +Creating task with: Preemption: no Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=6 +Task (smp2) starting: id=0x0a010002, priority=6 +==> 7: task_create -p smp3 7 +Creating task with: Preemption: no Timeslicing: no +Task (smp3) created: id=0x0a010003, priority=7 +Task (smp3) starting: id=0x0a010003, priority=7 +==> 8: task_create -p smp4 8 +Creating task with: Preemption: no Timeslicing: no +Task (smp4) created: id=0x0a010004, priority=8 +Task (smp4) starting: id=0x0a010004, priority=8 +==> 9: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x0a010002 priority=6 + Thread Executing: 0x09010002 priority=255 + Thread Executing: 0x0a010002 priority=6 +=== Invoke Thread Dispatch on CPU 2 + Thread Heir: 0x0a010003 priority=7 + Thread Executing: 0x09010003 priority=255 + Thread Executing: 0x0a010003 priority=7 +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010004 priority=8 + Thread Executing: 0x09010004 priority=255 + Thread Executing: 0x0a010004 priority=8 +==> 10: # GOAL: Tasks 0x0a010001 to 0x0a010004 as heir and executing on +==> 11: # GOAL: CPUs 1 - 4, respectively. +==> 12: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 13: # Tasks are created and distributed across CPUs +==> 14: task_create smp5 1 +Creating task with: Preemption: yes Timeslicing: no + Thread Heir: 0x0a010001 priority=5 + Thread Executing: 0x0a010001 priority=5 +Task (smp5) created: id=0x0a010005, priority=1 +Task (smp5) starting: id=0x0a010005, priority=1 +==> 15: # GOAL: Task 0x0a010005 is heir but 0x0a010004 is executing on CPU 4 +==> 16: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010005 @ 1 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 17: dispatch +==> 18: # GOAL: Task 0x0a010005 is heir but 0x0a010004 is executing on CPU 4 +==> 19: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010005 @ 1 / 0x09010004 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_nopreempt.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_nopreempt.scen new file mode 100644 index 0000000..d7596d9 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_nopreempt.scen @@ -0,0 +1,19 @@ +# +# Verify no-preempt is honored +# +rtems_init 4 +task_create -p smp1 5 +task_create -p smp2 6 +task_create -p smp3 7 +task_create -p smp4 8 +dispatch +# GOAL: Tasks 0x0a010001 to 0x0a010004 as heir and executing on +# GOAL: CPUs 1 - 4, respectively. +cpus +# Tasks are created and distributed across CPUs +task_create smp5 1 +# GOAL: Task 0x0a010005 is heir but 0x0a010004 is executing on CPU 4 +cpus +dispatch +# GOAL: Task 0x0a010005 is heir but 0x0a010004 is executing on CPU 4 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_preemption.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_preemption.expected new file mode 100644 index 0000000..9a4942b --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_preemption.expected @@ -0,0 +1,79 @@ +Script File : scenarios/cpus4_simple_preemption.scen +verbose : 1 +==> 1: # +==> 2: # Ensure lowest priority is preempted +==> 3: # +==> 4: rtems_init 4 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: task_create smp1 5 +Creating task with: Preemption: yes 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 +==> 6: task_create smp2 6 +Creating task with: Preemption: yes Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=6 +Task (smp2) starting: id=0x0a010002, priority=6 +==> 7: task_create smp3 7 +Creating task with: Preemption: yes Timeslicing: no +Task (smp3) created: id=0x0a010003, priority=7 +Task (smp3) starting: id=0x0a010003, priority=7 +==> 8: task_create smp4 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp4) created: id=0x0a010004, priority=8 +Task (smp4) starting: id=0x0a010004, priority=8 +==> 9: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x0a010002 priority=6 + Thread Executing: 0x09010002 priority=255 + Thread Executing: 0x0a010002 priority=6 +=== Invoke Thread Dispatch on CPU 2 + Thread Heir: 0x0a010003 priority=7 + Thread Executing: 0x09010003 priority=255 + Thread Executing: 0x0a010003 priority=7 +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010004 priority=8 + Thread Executing: 0x09010004 priority=255 + Thread Executing: 0x0a010004 priority=8 +==> 10: # GOAL: want 0x0a010001 - 0x0a010004 as heir and executings +==> 11: # GOAL: on CPUs 1-4 respectively +==> 12: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 13: # Tasks are created and distributed across CPUs +==> 14: task_create smp5 1 +Creating task with: Preemption: yes Timeslicing: no + Thread Heir: 0x0a010001 priority=5 + Thread Executing: 0x0a010001 priority=5 +Task (smp5) created: id=0x0a010005, priority=1 +Task (smp5) starting: id=0x0a010005, priority=1 +==> 15: # GOAL: want 0x0a010005 to be heir on CPU 4 +==> 16: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010005 @ 1 / 0x09010004 @255 true +=== End of Ready Set of Threads +==> 17: dispatch +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010005 priority=1 + Thread Executing: 0x0a010004 priority=8 + Thread Executing: 0x0a010005 priority=1 +==> 18: # GOAL: want 0x0a010005 to be heir AND executing on CPU 4 +==> 19: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010005 @ 1 / 0x0a010005 @ 1 / 0x09010004 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_preemption.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_preemption.scen new file mode 100644 index 0000000..ccb6d0e --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_simple_preemption.scen @@ -0,0 +1,19 @@ +# +# Ensure lowest priority is preempted +# +rtems_init 4 +task_create smp1 5 +task_create smp2 6 +task_create smp3 7 +task_create smp4 8 +dispatch +# GOAL: want 0x0a010001 - 0x0a010004 as heir and executings +# GOAL: on CPUs 1-4 respectively +cpus +# Tasks are created and distributed across CPUs +task_create smp5 1 +# GOAL: want 0x0a010005 to be heir on CPU 4 +cpus +dispatch +# GOAL: want 0x0a010005 to be heir AND executing on CPU 4 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_all.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_all.expected new file mode 100644 index 0000000..ee26a63 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_all.expected @@ -0,0 +1,83 @@ +Script File : scenarios/cpus4_suspend_on_all.scen +verbose : 1 +==> 1: # +==> 2: # Check blocking self on secondary CPU +==> 3: # +==> 4: rtems_init 4 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: task_create smp1 5 +Creating task with: Preemption: yes 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 +==> 6: task_create smp2 6 +Creating task with: Preemption: yes Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=6 +Task (smp2) starting: id=0x0a010002, priority=6 +==> 7: task_create smp3 7 +Creating task with: Preemption: yes Timeslicing: no +Task (smp3) created: id=0x0a010003, priority=7 +Task (smp3) starting: id=0x0a010003, priority=7 +==> 8: task_create smp4 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp4) created: id=0x0a010004, priority=8 +Task (smp4) starting: id=0x0a010004, priority=8 +==> 9: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x0a010002 priority=6 + Thread Executing: 0x09010002 priority=255 + Thread Executing: 0x0a010002 priority=6 +=== Invoke Thread Dispatch on CPU 2 + Thread Heir: 0x0a010003 priority=7 + Thread Executing: 0x09010003 priority=255 + Thread Executing: 0x0a010003 priority=7 +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010004 priority=8 + Thread Executing: 0x09010004 priority=255 + Thread Executing: 0x0a010004 priority=8 +==> 10: # GOAL: want 0x0a010001 - 0x0a010004 as heir and executings +==> 11: # GOAL: on CPUs 0 - 3 respectively +==> 12: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 13: task_suspend smp1 +Suspending task (0x0a010001) + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x0a010001 priority=5 + Thread Executing: 0x09010001 priority=255 +==> 14: task_suspend smp2 +Suspending task (0x0a010002) +==> 15: task_suspend smp3 +Suspending task (0x0a010003) +==> 16: task_suspend smp4 +Suspending task (0x0a010004) +==> 17: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x09010002 priority=255 + Thread Executing: 0x0a010002 priority=6 + Thread Executing: 0x09010002 priority=255 +=== Invoke Thread Dispatch on CPU 2 + Thread Heir: 0x09010003 priority=255 + Thread Executing: 0x0a010003 priority=7 + Thread Executing: 0x09010003 priority=255 +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x09010004 priority=255 + Thread Executing: 0x0a010004 priority=8 + Thread Executing: 0x09010004 priority=255 +==> 18: # GOAL: want IDLE 0x09010001 - 0x09010004 as heir and executings +==> 19: # GOAL: on CPUs 0 - 3 respectively +==> 20: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x09010001 @255 / 0x09010001 @255 / 0x09010001 @255 false + CPU 1: 0x09010002 @255 / 0x09010002 @255 / 0x09010002 @255 false + CPU 2: 0x09010003 @255 / 0x09010003 @255 / 0x09010003 @255 false + CPU 3: 0x09010004 @255 / 0x09010004 @255 / 0x09010004 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_all.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_all.scen new file mode 100644 index 0000000..d0568ce --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_all.scen @@ -0,0 +1,20 @@ +# +# Check blocking self on secondary CPU +# +rtems_init 4 +task_create smp1 5 +task_create smp2 6 +task_create smp3 7 +task_create smp4 8 +dispatch +# GOAL: want 0x0a010001 - 0x0a010004 as heir and executings +# GOAL: on CPUs 0 - 3 respectively +cpus +task_suspend smp1 +task_suspend smp2 +task_suspend smp3 +task_suspend smp4 +dispatch +# GOAL: want IDLE 0x09010001 - 0x09010004 as heir and executings +# GOAL: on CPUs 0 - 3 respectively +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_primary.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_primary.expected new file mode 100644 index 0000000..0e63b40 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_primary.expected @@ -0,0 +1,73 @@ +Script File : scenarios/cpus4_suspend_on_primary.scen +verbose : 1 +==> 1: # +==> 2: # Check blocking self on primary CPU +==> 3: # +==> 4: rtems_init 4 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: task_create smp1 5 +Creating task with: Preemption: yes 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 +==> 6: task_create smp2 6 +Creating task with: Preemption: yes Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=6 +Task (smp2) starting: id=0x0a010002, priority=6 +==> 7: task_create smp3 7 +Creating task with: Preemption: yes Timeslicing: no +Task (smp3) created: id=0x0a010003, priority=7 +Task (smp3) starting: id=0x0a010003, priority=7 +==> 8: task_create smp4 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp4) created: id=0x0a010004, priority=8 +Task (smp4) starting: id=0x0a010004, priority=8 +==> 9: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x0a010002 priority=6 + Thread Executing: 0x09010002 priority=255 + Thread Executing: 0x0a010002 priority=6 +=== Invoke Thread Dispatch on CPU 2 + Thread Heir: 0x0a010003 priority=7 + Thread Executing: 0x09010003 priority=255 + Thread Executing: 0x0a010003 priority=7 +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010004 priority=8 + Thread Executing: 0x09010004 priority=255 + Thread Executing: 0x0a010004 priority=8 +==> 10: # GOAL: want 0x0a010001 - 0x0a010004 as heir and executings +==> 11: # GOAL: on CPUs 1-4 respectively +==> 12: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 13: task_suspend SELF +Suspending task (0x0a010001) + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x0a010001 priority=5 + Thread Executing: 0x09010001 priority=255 +==> 14: # GOAL: want 0x09010001 as heir and executing on CPU 1 +==> 15: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x09010001 @255 / 0x09010001 @255 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 16: dispatch +==> 17: # GOAL: want 0x09010001 as heir and executing on CPU 1 +==> 18: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x09010001 @255 / 0x09010001 @255 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_primary.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_primary.scen new file mode 100644 index 0000000..ab25fb7 --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_primary.scen @@ -0,0 +1,18 @@ +# +# Check blocking self on primary CPU +# +rtems_init 4 +task_create smp1 5 +task_create smp2 6 +task_create smp3 7 +task_create smp4 8 +dispatch +# GOAL: want 0x0a010001 - 0x0a010004 as heir and executings +# GOAL: on CPUs 1-4 respectively +cpus +task_suspend SELF +# GOAL: want 0x09010001 as heir and executing on CPU 1 +cpus +dispatch +# GOAL: want 0x09010001 as heir and executing on CPU 1 +cpus diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_secondary.expected b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_secondary.expected new file mode 100644 index 0000000..e7df9bb --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_secondary.expected @@ -0,0 +1,75 @@ +Script File : scenarios/cpus4_suspend_on_secondary.scen +verbose : 1 +==> 1: # +==> 2: # Check blocking self on secondary CPU +==> 3: # +==> 4: rtems_init 4 + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x09010001 priority=255 +==> 5: task_create smp1 5 +Creating task with: Preemption: yes 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 +==> 6: task_create smp2 6 +Creating task with: Preemption: yes Timeslicing: no +Task (smp2) created: id=0x0a010002, priority=6 +Task (smp2) starting: id=0x0a010002, priority=6 +==> 7: task_create smp3 7 +Creating task with: Preemption: yes Timeslicing: no +Task (smp3) created: id=0x0a010003, priority=7 +Task (smp3) starting: id=0x0a010003, priority=7 +==> 8: task_create smp4 8 +Creating task with: Preemption: yes Timeslicing: no +Task (smp4) created: id=0x0a010004, priority=8 +Task (smp4) starting: id=0x0a010004, priority=8 +==> 9: dispatch +=== Invoke Thread Dispatch on CPU 1 + Thread Heir: 0x0a010002 priority=6 + Thread Executing: 0x09010002 priority=255 + Thread Executing: 0x0a010002 priority=6 +=== Invoke Thread Dispatch on CPU 2 + Thread Heir: 0x0a010003 priority=7 + Thread Executing: 0x09010003 priority=255 + Thread Executing: 0x0a010003 priority=7 +=== Invoke Thread Dispatch on CPU 3 + Thread Heir: 0x0a010004 priority=8 + Thread Executing: 0x09010004 priority=255 + Thread Executing: 0x0a010004 priority=8 +==> 10: # GOAL: want 0x0a010001 - 0x0a010004 as heir and executings +==> 11: # GOAL: on CPUs 1-4 respectively +==> 12: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x0a010003 @ 7 / 0x0a010003 @ 7 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 13: current_cpu 2 +Changing current CPU from 0 to 2 +==> 14: task_suspend SELF +Suspending task (0x0a010003) + Thread Heir: 0x09010001 priority=255 + Thread Executing: 0x0a010003 priority=7 + Thread Executing: 0x09010001 priority=255 +==> 15: # GOAL: Want IDLE 0x09010001 as heir and executing on CPU 2 +==> 16: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x09010001 @255 / 0x09010001 @255 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads +==> 17: dispatch +==> 18: # GOAL: Want IDLE 0x09010001 as heir and executing on CPU 2 +==> 19: cpus +=== CPU Status + EXECUTING / HEIR / IDLE / SWITCH NEEDED + CPU 0: 0x0a010001 @ 5 / 0x0a010001 @ 5 / 0x09010001 @255 false + CPU 1: 0x0a010002 @ 6 / 0x0a010002 @ 6 / 0x09010002 @255 false + CPU 2: 0x09010001 @255 / 0x09010001 @255 / 0x09010003 @255 false + CPU 3: 0x0a010004 @ 8 / 0x0a010004 @ 8 / 0x09010004 @255 false +=== End of Ready Set of Threads diff --git a/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_secondary.scen b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_secondary.scen new file mode 100644 index 0000000..9660b7d --- /dev/null +++ b/schedsim/shell/schedsim_smpsimple/scenarios/cpus4_suspend_on_secondary.scen @@ -0,0 +1,19 @@ +# +# Check blocking self on secondary CPU +# +rtems_init 4 +task_create smp1 5 +task_create smp2 6 +task_create smp3 7 +task_create smp4 8 +dispatch +# GOAL: want 0x0a010001 - 0x0a010004 as heir and executings +# GOAL: on CPUs 1-4 respectively +cpus +current_cpu 2 +task_suspend SELF +# GOAL: Want IDLE 0x09010001 as heir and executing on CPU 2 +cpus +dispatch +# GOAL: Want IDLE 0x09010001 as heir and executing on CPU 2 +cpus |