diff options
Diffstat (limited to 'kernel/scheduler.c')
| -rw-r--r-- | kernel/scheduler.c | 4 |
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); |
