Fix test of "make sure to context-switch to idle thread when therad's status is PS_EXITED"
Change-Id: I62ea813656805b6250b0465853e8fa2918b0c86b Refs: #1029 Refs: #1227
This commit is contained in:
@ -16,14 +16,6 @@ diff --git kernel/process.c kernel/process.c
|
|||||||
index 3dda3ea..eb65aa9 100644
|
index 3dda3ea..eb65aa9 100644
|
||||||
--- kernel/process.c
|
--- kernel/process.c
|
||||||
+++ kernel/process.c
|
+++ kernel/process.c
|
||||||
@@ -126,6 +126,7 @@ init_process(struct process *proc, struct process *parent)
|
|
||||||
proc->mpol_threshold = parent->mpol_threshold;
|
|
||||||
memcpy(proc->rlimit, parent->rlimit,
|
|
||||||
sizeof(struct rlimit) * MCK_RLIM_MAX);
|
|
||||||
+#define POSTK_DEBUG_TEMP_FIX_69 1 // TestCode for #1029
|
|
||||||
#ifdef POSTK_DEBUG_TEMP_FIX_69 /* Fix problem not to inherit parent cpu_set. */
|
|
||||||
memcpy(&proc->cpu_set, &parent->cpu_set,
|
|
||||||
sizeof(proc->cpu_set));
|
|
||||||
@@ -3135,12 +3136,16 @@ out_schedule:
|
@@ -3135,12 +3136,16 @@ out_schedule:
|
||||||
schedule();
|
schedule();
|
||||||
}
|
}
|
||||||
@ -41,7 +33,7 @@ index 3dda3ea..eb65aa9 100644
|
|||||||
|
|
||||||
if (cpu_local_var(no_preempt)) {
|
if (cpu_local_var(no_preempt)) {
|
||||||
kprintf("%s: WARNING can't schedule() while no preemption, cnt: %d\n",
|
kprintf("%s: WARNING can't schedule() while no preemption, cnt: %d\n",
|
||||||
@@ -3173,6 +3178,62 @@ redo:
|
@@ -3173,6 +3178,70 @@ redo:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,6 +50,14 @@ index 3dda3ea..eb65aa9 100644
|
|||||||
+ if (thread->tid == prev->tid) {
|
+ if (thread->tid == prev->tid) {
|
||||||
+ continue;
|
+ continue;
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
|
+ /* Skip not-schedulable */
|
||||||
|
+ if (thread->status == PS_RUNNING ||
|
||||||
|
+ (thread->status == PS_INTERRUPTIBLE && hassigpending(thread))) {
|
||||||
|
+ } else {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ runq_cnt++;
|
+ runq_cnt++;
|
||||||
+ if (!thread->started) {
|
+ if (!thread->started) {
|
||||||
+ not_started = 1;
|
+ not_started = 1;
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
|
include $(HOME)/.mck_test_config.mk
|
||||||
|
|
||||||
CC=gcc
|
CC=gcc
|
||||||
MCK_DIR=/home/satoken/ppos
|
|
||||||
MCEXEC=$(MCK_DIR)/bin/mcexec
|
MCEXEC=$(MCK_DIR)/bin/mcexec
|
||||||
TARGET=sched_test go_test
|
TARGET=sched_test go_test
|
||||||
all:: $(TARGET)
|
all:: $(TARGET)
|
||||||
|
|||||||
@ -23,7 +23,7 @@ runqに積まれている実行待ちthreadの状態の組み合わせで、12
|
|||||||
(2) テストの実行方法
|
(2) テストの実行方法
|
||||||
以下の手順でテストを実行する
|
以下の手順でテストを実行する
|
||||||
1. 1029.patch をMcKernelのソースコードに適用し、ビルドとインストールを行う
|
1. 1029.patch をMcKernelのソースコードに適用し、ビルドとインストールを行う
|
||||||
2. MakefileのMCK_DIR変数の内容を、McKernelがインストールされているディレクトリに変更する
|
2. ${HOME}/.mck_test_config.mkのMCK_DIR変数の内容を、McKernelがインストールされているディレクトリに変更する
|
||||||
3. <mckernel-install>/bin/mcreboot.sh -c 2-7 -m 2G -O
|
3. <mckernel-install>/bin/mcreboot.sh -c 2-7 -m 2G -O
|
||||||
4. sh make test を実行する
|
4. sh make test を実行する
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user