BarryServer : Git

All the code for all my projects
// BarryServer : Git / Nucleus / commit / e8e484f3952a9a3b7df1c3f5763a794a51ea6966 / task / scheduler.c

// Related

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 */