multi-cpu scheduling WIP
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
#include <proc/proc.h>
|
||||
#include <sync/spin_lock.h>
|
||||
#include <sys/debug.h>
|
||||
#include <sys/smp.h>
|
||||
#include <sys/spin_lock.h>
|
||||
|
||||
bool proc_create_resource_mutex (struct proc_mutex* mutex) {
|
||||
memset (mutex, 0, sizeof (*mutex));
|
||||
@@ -34,6 +36,8 @@ static void proc_mutex_suspend (struct proc* proc, struct proc_suspension_q* sq,
|
||||
proc->suspension_q = sq;
|
||||
|
||||
list_remove (cpu->proc_run_q, &proc->cpu_run_q_link);
|
||||
atomic_fetch_sub (&cpu->proc_run_q_count, 1);
|
||||
|
||||
if (cpu->proc_current == proc)
|
||||
cpu->proc_current = NULL;
|
||||
|
||||
@@ -64,6 +68,7 @@ static void proc_mutex_resume (struct proc* proc) {
|
||||
atomic_store (&proc->state, PROC_READY);
|
||||
|
||||
list_append (cpu->proc_run_q, &proc->cpu_run_q_link);
|
||||
atomic_fetch_add (&cpu->proc_run_q_count, 1);
|
||||
|
||||
spin_unlock (&sq->lock, &ctxsq);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user