Files
os/kernel/src/util/spin.rs
Bryan McShea 4cf2f5b29e work
2024-02-06 17:11:39 -05:00

20 lines
405 B
Rust

use core::sync::atomic::{AtomicBool, Ordering};
pub struct SpinLock {
pub locked: AtomicBool,
}
impl SpinLock {
pub fn new() -> Self {
Self {
locked: AtomicBool::new(false),
}
}
pub fn lock(&mut self) {
while self.locked.swap(true, Ordering::Acquire) {}
}
pub fn unlock(&mut self) {
self.locked.store(false, Ordering::Release)
}
}