1 个不稳定版本
0.1.0 | 2024年7月17日 |
---|
#173 in 操作系统
1,484 每月下载量
17KB
302 行
kspin
用于内核空间的自旋锁,可以在临界区禁用抢占或中断请求(IRQ)。
Cargo功能
smp
: 用于 多核 环境。对于 单核 环境(无此功能),锁状态是不必要的,并且已优化。如果我们遵循使用的正确保护措施,CPU总能获得锁。默认情况下,此功能是禁用的。
示例
use kspin::{SpinNoIrq, SpinNoPreempt, SpinRaw};
let data = SpinRaw::new(());
let mut guard = data.lock();
/* critical section, does nothing while trying to lock. */
drop(guard);
let data = SpinNoPreempt::new(());
let mut guard = data.lock();
/* critical section, preemption are disabled. */
drop(guard);
let data = SpinNoIrq::new(());
let mut guard = data.lock();
/* critical section, both preemption and IRQs are disabled. */
drop(guard);
依赖项
~230–670KB
~16K SLoC