1#![no_std]
6
7#[cfg(test)]
8extern crate self as ksync;
9
10pub use kstring::declare_interned_string;
11pub use ksync_macro::guarded;
12pub use pin_init;
13
14#[macro_export]
28macro_rules! lock {
29 (let mut $guard:ident = $lock_init:expr) => {
30 $crate::pin_init::stack_pin_init!(let $guard = $lock_init);
31 let mut $guard = $guard;
32 };
33 (let $guard:ident = $lock_init:expr) => {
34 $crate::pin_init::stack_pin_init!(let $guard = $lock_init);
35 };
36 ($lock_init:expr) => {
37 $crate::pin_init::stack_pin_init!(let _guard = $lock_init);
38 };
39}
40
41mod kcell;
42mod kmutex;
43mod lock_token;
44mod raw_lock;
45
46#[cfg(not(feature = "kernel"))]
47mod raw_userspace_mutex;
48
49#[cfg(feature = "kernel")]
50mod raw_kernel_mutex;
51
52pub use kcell::{KCell, KCellInit, kcell_init};
53pub use kmutex::{KMutex, KMutexGuard};
54pub use lock_token::LockToken;
55pub use lockdep::{LockClass, LockClassRegistration};
56pub use raw_lock::RawLock;
57
58#[cfg(not(feature = "kernel"))]
59pub use raw_userspace_mutex::RawMutex;
60
61#[cfg(feature = "kernel")]
62pub use raw_kernel_mutex::{RawCriticalMutex, RawMutex};