Fix a race in get_round_robin_index.

This commit is contained in:
MJ Pooladkhay
2026-07-11 01:13:36 +01:00
committed by Jeremy Soller
parent bb06db93ce
commit 985bc2623f
+3 -6
View File
@@ -93,12 +93,9 @@ pub fn allocate_frame() -> Option<Frame> {
}
fn get_round_robin_index() -> usize {
static CURRENT_INDEX: AtomicU8 = AtomicU8::new(0);
if CURRENT_INDEX.load(Ordering::Acquire) as usize == FREE_LISTS.get().unwrap().len() {
CURRENT_INDEX.store(1, Ordering::Release);
return 0;
}
CURRENT_INDEX.fetch_add(1, Ordering::AcqRel) as usize
static CURRENT_INDEX: AtomicUsize = AtomicUsize::new(0);
let len = FREE_LISTS.get().unwrap().len();
CURRENT_INDEX.fetch_add(1, Ordering::Relaxed) % len
}
// TODO: Flags, strategy