mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-23 01:13: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::{
|
use ostd::{
|
||||||
cpu::{num_cpus, CpuSet, PinCurrentCpu},
|
cpu::{num_cpus, CpuSet, PinCurrentCpu},
|
||||||
task::{
|
task::{
|
||||||
disable_preempt,
|
|
||||||
scheduler::{inject_scheduler, EnqueueFlags, LocalRunQueue, Scheduler, UpdateFlags},
|
scheduler::{inject_scheduler, EnqueueFlags, LocalRunQueue, Scheduler, UpdateFlags},
|
||||||
AtomicCpuId, Priority, Task,
|
AtomicCpuId, Priority, Task,
|
||||||
},
|
},
|
||||||
@ -46,8 +45,8 @@ impl<T: PreemptSchedInfo> PreemptScheduler<T> {
|
|||||||
return cpu_id;
|
return cpu_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
let preempt_guard = disable_preempt();
|
let irq_guard = disable_local();
|
||||||
let mut selected = preempt_guard.current_cpu();
|
let mut selected = irq_guard.current_cpu();
|
||||||
let mut minimum_load = usize::MAX;
|
let mut minimum_load = usize::MAX;
|
||||||
|
|
||||||
for candidate in runnable.cpu_affinity().iter() {
|
for candidate in runnable.cpu_affinity().iter() {
|
||||||
|
Reference in New Issue
Block a user