proc_wait_for () lock wait_proc to avoid races
This commit is contained in:
@@ -378,7 +378,11 @@ void proc_kill (struct proc* proc, struct reschedule_ctx* rctx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void proc_wait_for (struct proc* proc, struct reschedule_ctx* rctx, struct proc* wait_proc) {
|
void proc_wait_for (struct proc* proc, struct reschedule_ctx* rctx, struct proc* wait_proc) {
|
||||||
|
uint64_t fwp;
|
||||||
|
|
||||||
|
spin_lock (&wait_proc->lock, &fwp);
|
||||||
proc_sq_suspend (proc, &wait_proc->done_sq, NULL, 0, rctx, NULL, NULL);
|
proc_sq_suspend (proc, &wait_proc->done_sq, NULL, 0, rctx, NULL, NULL);
|
||||||
|
spin_unlock (&wait_proc->lock, fwp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void proc_irq_sched (void* arg, void* regs, bool user, struct reschedule_ctx* rctx) {
|
void proc_irq_sched (void* arg, void* regs, bool user, struct reschedule_ctx* rctx) {
|
||||||
|
|||||||
Reference in New Issue
Block a user