summaryrefslogtreecommitdiff
path: root/kernel/scheduler.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-10-15 16:29:50 +0200
committerMiguel <m.i@gmx.at>2018-10-15 16:29:50 +0200
commite3a8099343aac9d94f411638ad84632d4b620132 (patch)
treef0a1f73ab106c17b25fd8a5264a66b6b48e55e48 /kernel/scheduler.c
parentf35d2124c36f8d39a953b76620e081b79c2faffd (diff)
cleanup sys/ etc
Diffstat (limited to 'kernel/scheduler.c')
-rw-r--r--kernel/scheduler.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/scheduler.c b/kernel/scheduler.c
index 2112659..59d26d1 100644
--- a/kernel/scheduler.c
+++ b/kernel/scheduler.c
@@ -363,11 +363,13 @@ void task_syscall_worker()
task_list[cpu][0].vmem=task_list[cpu][i].vmem; // switch syscall worker to pagedir of calling userprog
x86_set_page_directory(task_list[cpu][0].vmem);
+ x86_cli(); // we do not want to be scheduled to other page ... sorry TODO: suuuuckS!
uint32_t ok = syscall_generic_test(task_list[cpu][i].eax,
task_list[cpu][i].edx,
task_list[cpu][i].ecx,
task_list[cpu][i].ebx,
task_list[cpu][i].pid);
+ x86_sti();
if(!ok)
{
@@ -375,11 +377,13 @@ void task_syscall_worker()
continue;
}
+ x86_cli(); // we do not want to be scheduled to other page ... sorry TODO: suuuuckS!
uint32_t ret = syscall_generic(task_list[cpu][i].eax,
task_list[cpu][i].edx,
task_list[cpu][i].ecx,
task_list[cpu][i].ebx,
task_list[cpu][i].pid);
+ x86_sti();
// klog("... returned : %d",ret);