Nucleus
Barry Object locking e8e484f (3 years, 3 months ago)
diff --git a/task/scheduler.c b/task/scheduler.c
index 115722e..cad926d 100644
--- a/task/scheduler.c
+++ b/task/scheduler.c
@@ -17,9 +17,11 @@ TaskQueue *readyQueue[PRIORITY_COUNT];
static void
switch_to_task(Task *task)
{
+ lock(current);
asm volatile("mov %%esp, %0" : "=r" (current->esp));
asm volatile("mov %%ebp, %0" : "=r" (current->ebp));
current->eip = (uintptr_t) &&end;
+ unlock(current);
put(current);
current = task; /* Use the passed reference */