summaryrefslogtreecommitdiff
path: root/kernel/scheduler.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-10-18 12:26:18 +0200
committerMiguel <m.i@gmx.at>2018-10-18 12:26:18 +0200
commita282cb8c921299b54a719452ec2bdaff63d8d3e9 (patch)
treea8e88f37f855436d515f995135ded66e564c33f1 /kernel/scheduler.c
parentad94570c78a8d9e426fd0d48e9709dba27803b71 (diff)
New Scheduling / Syscalls!
Diffstat (limited to 'kernel/scheduler.c')
-rw-r--r--kernel/scheduler.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/kernel/scheduler.c b/kernel/scheduler.c
index 8cadcb8..694d81c 100644
--- a/kernel/scheduler.c
+++ b/kernel/scheduler.c
@@ -133,7 +133,9 @@ static uint32_t scheduler_schedule(uint32_t idx)
current_task[cpu]=idx;
-// klog("cpu %d rescheduled to %d",cpu,idx);
+#ifdef LOG_SCHEDULER
+ klog("cpu %d rescheduled to %d",cpu,idx);
+#endif
//klog("name: %s",task_list[cpu][idx].name);
//klog("cpu %d / idx %d / pid %d / name: %5s",cpu,idx,task_list[cpu][idx].pid,task_list[cpu][idx].name);
@@ -508,6 +510,13 @@ volatile int task_add_win(uint32_t pid,ringbuffer *r)
return 0;
}
+int task_set_esp(uint32_t pid, uint32_t esp)
+{
+ uint32_t cpu=smp_get(SMP_APIC_ID);
+ uint32_t idx=task_idx(pid);
+ task_list[cpu][idx].esp=esp;
+ return 0;
+}
volatile int task_reset(uint32_t pid, uint32_t entry, uint32_t stack,uint32_t brk)
{
uint32_t cpu=smp_get(SMP_APIC_ID);
@@ -517,7 +526,8 @@ volatile int task_reset(uint32_t pid, uint32_t entry, uint32_t stack,uint32_t br
stk[14]=entry;
stk[17]=stack;
- __asm__("int $0x81"); // now we also reschedule (at least for execve sake...)
+
+// __asm__("int $0x81"); // now we also reschedule (for execve sake...)
return 1;
}