Resolve strange IRQ issues which cause the scheduler to behave weirdly (IRQ mapping)
All checks were successful
Build documentation / build-and-deploy (push) Successful in 52s
All checks were successful
Build documentation / build-and-deploy (push) Successful in 52s
This commit is contained in:
@@ -51,26 +51,27 @@ bool proc_mutex_unlock (struct proc* proc, struct proc_mutex* mutex) {
|
||||
|
||||
spin_lock (&mutex->suspension_q.lock, &ctxsq);
|
||||
|
||||
struct proc* resumed_proc;
|
||||
struct proc* resumed_proc = NULL;
|
||||
struct rb_node_link* node;
|
||||
rbtree_first (&mutex->suspension_q.proc_tree, node);
|
||||
|
||||
if (node) {
|
||||
resumed_proc = rbtree_entry (node, struct proc, suspension_link);
|
||||
mutex->owner = resumed_proc;
|
||||
mutex->locked = true;
|
||||
|
||||
spin_unlock (&mutex->suspension_q.lock, &ctxsq);
|
||||
spin_unlock (&mutex->resource->lock, &ctxmt);
|
||||
|
||||
proc_resume (resumed_proc);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
spin_unlock (&mutex->suspension_q.lock, &ctxsq);
|
||||
|
||||
mutex->locked = false;
|
||||
mutex->owner = NULL;
|
||||
|
||||
spin_unlock (&mutex->suspension_q.lock, &ctxsq);
|
||||
spin_unlock (&mutex->resource->lock, &ctxmt);
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user