update Test for Issue#1029

This commit is contained in:
Ken Sato
2018-01-14 14:58:19 +09:00
parent 1b25379c02
commit 1e9f9d9809
3 changed files with 16 additions and 24 deletions

View File

@ -132,7 +132,7 @@ index cdd4ab3..a3e6c8a 100644
+ // switch to idle
+ if (!cases[case_num]) {
+ 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);
+ } else {
+ kprintf("[NG] CT_%03d %d => %d\n", case_num, prev->tid, next->tid);
@ -163,11 +163,3 @@ index cdd4ab3..a3e6c8a 100644
if (switch_ctx) {
dkprintf("schedule: %d => %d \n",
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;
}
}

View File

@ -35,33 +35,33 @@ schedule()が想定どおりの動作をすることを確認する。
◆prevがidleのケース
CT_001: runqが空
⇒ コンテキストスイッチを行わない
CT_002: runqに実行開始前のthreadが存在する
CT_002: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
⇒ 非idleのthreadにスイッチする
CT_003: runqに実行開始前のthreadが存在しない
CT_003: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
⇒ 非idleのthreadにスイッチする
◆schedule時点で当該CPUのCPU_FLAGS_NEED_MIGRATEが活性化しているケース
CT_004: runqが空
⇒ idleにスイッチする
CT_005: runqに実行開始前のthreadが存在する
CT_005: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
⇒ idleにスイッチする
CT_006: runqに実行開始前のthreadが存在しない
CT_006: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
⇒ idleにスイッチする
◆prevがidle以外で、statusがPS_EXITED以外
CT_007: runqが空
⇒ idleにスイッチする
CT_008: runqに実行開始前のthreadが存在する
CT_008: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
⇒ 非idleのthreadにスイッチする
CT_009: runqに実行開始前のthreadが存在しない
CT_009: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
⇒ 非idleのthreadにスイッチする
◆prevがidle以外で、statusがPS_EXITED
CT_010: runqが空
⇒ idleにスイッチする
CT_011: runqに実行開始前のthreadが存在する
CT_011: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
⇒ idleにスイッチする
CT_012: runqに実行開始前のthreadが存在しない
CT_012: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
⇒ idleにスイッチする
4. 結果

View File

@ -1,12 +1,12 @@
[OK] CT_001 not_switch
[OK] CT_002 0 => 16997
[OK] CT_003 1 => 17007
[OK] CT_004 switch to idle 17017 => 2
[OK] CT_005 switch to idle 17047 => 1
[OK] CT_006 switch to idle 17018 => 1
[OK] CT_007 switch to idle 16997 => 0
[OK] CT_004 17017 => 2
[OK] CT_005 17047 => 1
[OK] CT_006 17018 => 1
[OK] CT_007 16997 => 0
[OK] CT_008 17007 => 17018
[OK] CT_009 17017 => 17018
[OK] CT_010 switch to idle 17017 => 1
[OK] CT_011 switch to idle 17047 => 1
[OK] CT_012 switch to idle 17018 => 1
[OK] CT_010 17017 => 1
[OK] CT_011 17047 => 1
[OK] CT_012 17018 => 1