summaryrefslogtreecommitdiff
path: root/kernel/scheduler.c
diff options
context:
space:
mode:
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);