mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-22 17:03:23 +00:00
Fix deadlock while acquiring lock on local runqueue
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
21a1041d27
commit
59b7a9397f
@ -3,7 +3,6 @@
|
||||
use ostd::{
|
||||
cpu::{num_cpus, CpuSet, PinCurrentCpu},
|
||||
task::{
|
||||
disable_preempt,
|
||||
scheduler::{inject_scheduler, EnqueueFlags, LocalRunQueue, Scheduler, UpdateFlags},
|
||||
AtomicCpuId, Priority, Task,
|
||||
},
|
||||
@ -46,8 +45,8 @@ impl<T: PreemptSchedInfo> PreemptScheduler<T> {
|
||||
return cpu_id;
|
||||
}
|
||||
|
||||
let preempt_guard = disable_preempt();
|
||||
let mut selected = preempt_guard.current_cpu();
|
||||
let irq_guard = disable_local();
|
||||
let mut selected = irq_guard.current_cpu();
|
||||
let mut minimum_load = usize::MAX;
|
||||
|
||||
for candidate in runnable.cpu_affinity().iter() {
|
||||
|
Reference in New Issue
Block a user