#![cfg_attr(not(test), no_std)]
#![doc = include_str!("../README.md")]
#[cfg(any(test, doctest))]
extern crate std;
mod base;
use ax_kernel_guard::{NoOp, NoPreempt, NoPreemptIrqSave};
#[cfg(feature = "lockdep")]
pub mod lockdep;
pub use self::base::{BaseSpinLock, BaseSpinLockGuard};
pub fn set_lockdep_trace_enabled(enabled: bool) {
#[cfg(feature = "lockdep")]
{
ax_lockdep::set_trace_enabled(enabled);
}
#[cfg(not(feature = "lockdep"))]
{
let _ = enabled;
}
}
pub fn dump_lockdep_trace() {
#[cfg(feature = "lockdep")]
{
ax_lockdep::dump_trace_buffer();
}
}
pub type SpinNoPreempt<T> = BaseSpinLock<NoPreempt, T>;
pub type SpinNoPreemptGuard<'a, T> = BaseSpinLockGuard<'a, NoPreempt, T>;
pub type SpinNoIrq<T> = BaseSpinLock<NoPreemptIrqSave, T>;
pub type SpinNoIrqGuard<'a, T> = BaseSpinLockGuard<'a, NoPreemptIrqSave, T>;
pub type SpinRaw<T> = BaseSpinLock<NoOp, T>;
pub type SpinRawGuard<'a, T> = BaseSpinLockGuard<'a, NoOp, T>;