rCore/os/src/sync/unsafe_cell.rs
2024-07-17 18:12:33 +08:00

24 lines
498 B
Rust

use core::cell::{RefCell, RefMut};
/// 只能在单核场景下保持安全的屑RefCell
struct UnsafeCell<T> {
inner_cell: RefCell<T>
}
unsafe impl<T> Sync for UnsafeCell<T> {
}
impl<T> UnsafeCell<T> {
pub unsafe fn new(value: T) -> UnsafeCell<T> {
Self {
inner_cell: RefCell::new(value)
}
}
/// 独占访问
/// 当已被借用时访问会Panic
pub fn exclusive_access(&self) -> RefMut<'_, T> {
self.inner_cell.borrow_mut()
}
}