update Test for Issue#1029
This commit is contained in:
@ -132,7 +132,7 @@ index cdd4ab3..a3e6c8a 100644
|
|||||||
+ // switch to idle
|
+ // switch to idle
|
||||||
+ if (!cases[case_num]) {
|
+ if (!cases[case_num]) {
|
||||||
+ if (next == &cpu_local_var(idle)) {
|
+ if (next == &cpu_local_var(idle)) {
|
||||||
+ kprintf("[OK] CT_%03d switch to idle %d => %d\n", case_num,
|
+ kprintf("[OK] CT_%03d %d => %d\n", case_num,
|
||||||
+ prev ? prev->tid : 0, next ? next->tid : 0);
|
+ prev ? prev->tid : 0, next ? next->tid : 0);
|
||||||
+ } else {
|
+ } else {
|
||||||
+ kprintf("[NG] CT_%03d %d => %d\n", case_num, prev->tid, next->tid);
|
+ kprintf("[NG] CT_%03d %d => %d\n", case_num, prev->tid, next->tid);
|
||||||
@ -163,11 +163,3 @@ index cdd4ab3..a3e6c8a 100644
|
|||||||
if (switch_ctx) {
|
if (switch_ctx) {
|
||||||
dkprintf("schedule: %d => %d \n",
|
dkprintf("schedule: %d => %d \n",
|
||||||
prev ? prev->tid : 0, next ? next->tid : 0);
|
prev ? prev->tid : 0, next ? next->tid : 0);
|
||||||
@@ -3260,6 +3373,7 @@ redo:
|
|
||||||
|
|
||||||
/* Have we migrated to another core meanwhile? */
|
|
||||||
if (v != get_this_cpu_local_var()) {
|
|
||||||
+ switch_ctx = 0;
|
|
||||||
goto redo;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@ -35,33 +35,33 @@ schedule()が想定どおりの動作をすることを確認する。
|
|||||||
◆prevがidleのケース
|
◆prevがidleのケース
|
||||||
CT_001: runqが空
|
CT_001: runqが空
|
||||||
⇒ コンテキストスイッチを行わない
|
⇒ コンテキストスイッチを行わない
|
||||||
CT_002: runqに実行開始前のthreadが存在する
|
CT_002: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
|
||||||
⇒ 非idleのthreadにスイッチする
|
⇒ 非idleのthreadにスイッチする
|
||||||
CT_003: runqに実行開始前のthreadが存在しない
|
CT_003: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
|
||||||
⇒ 非idleのthreadにスイッチする
|
⇒ 非idleのthreadにスイッチする
|
||||||
|
|
||||||
◆schedule時点で当該CPUのCPU_FLAGS_NEED_MIGRATEが活性化しているケース
|
◆schedule時点で当該CPUのCPU_FLAGS_NEED_MIGRATEが活性化しているケース
|
||||||
CT_004: runqが空
|
CT_004: runqが空
|
||||||
⇒ idleにスイッチする
|
⇒ idleにスイッチする
|
||||||
CT_005: runqに実行開始前のthreadが存在する
|
CT_005: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
|
||||||
⇒ idleにスイッチする
|
⇒ idleにスイッチする
|
||||||
CT_006: runqに実行開始前のthreadが存在しない
|
CT_006: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
|
||||||
⇒ idleにスイッチする
|
⇒ idleにスイッチする
|
||||||
|
|
||||||
◆prevがidle以外で、statusがPS_EXITED以外:
|
◆prevがidle以外で、statusがPS_EXITED以外:
|
||||||
CT_007: runqが空
|
CT_007: runqが空
|
||||||
⇒ idleにスイッチする
|
⇒ idleにスイッチする
|
||||||
CT_008: runqに実行開始前のthreadが存在する
|
CT_008: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
|
||||||
⇒ 非idleのthreadにスイッチする
|
⇒ 非idleのthreadにスイッチする
|
||||||
CT_009: runqに実行開始前のthreadが存在しない
|
CT_009: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
|
||||||
⇒ 非idleのthreadにスイッチする
|
⇒ 非idleのthreadにスイッチする
|
||||||
|
|
||||||
◆prevがidle以外で、statusがPS_EXITED:
|
◆prevがidle以外で、statusがPS_EXITED:
|
||||||
CT_010: runqが空
|
CT_010: runqが空
|
||||||
⇒ idleにスイッチする
|
⇒ idleにスイッチする
|
||||||
CT_011: runqに実行開始前のthreadが存在する
|
CT_011: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
|
||||||
⇒ idleにスイッチする
|
⇒ idleにスイッチする
|
||||||
CT_012: runqに実行開始前のthreadが存在しない
|
CT_012: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
|
||||||
⇒ idleにスイッチする
|
⇒ idleにスイッチする
|
||||||
|
|
||||||
4. 結果
|
4. 結果
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
[OK] CT_001 not_switch
|
[OK] CT_001 not_switch
|
||||||
[OK] CT_002 0 => 16997
|
[OK] CT_002 0 => 16997
|
||||||
[OK] CT_003 1 => 17007
|
[OK] CT_003 1 => 17007
|
||||||
[OK] CT_004 switch to idle 17017 => 2
|
[OK] CT_004 17017 => 2
|
||||||
[OK] CT_005 switch to idle 17047 => 1
|
[OK] CT_005 17047 => 1
|
||||||
[OK] CT_006 switch to idle 17018 => 1
|
[OK] CT_006 17018 => 1
|
||||||
[OK] CT_007 switch to idle 16997 => 0
|
[OK] CT_007 16997 => 0
|
||||||
[OK] CT_008 17007 => 17018
|
[OK] CT_008 17007 => 17018
|
||||||
[OK] CT_009 17017 => 17018
|
[OK] CT_009 17017 => 17018
|
||||||
[OK] CT_010 switch to idle 17017 => 1
|
[OK] CT_010 17017 => 1
|
||||||
[OK] CT_011 switch to idle 17047 => 1
|
[OK] CT_011 17047 => 1
|
||||||
[OK] CT_012 switch to idle 17018 => 1
|
[OK] CT_012 17018 => 1
|
||||||
|
|||||||
Reference in New Issue
Block a user