Lines Matching defs:B
36 pub struct GlobalLock<B: GlobalLockBackend> {
37 inner: Lock<B::Item, B::Backend>,
40 impl<B: GlobalLockBackend> GlobalLock<B> {
46 /// * The type `B` must not be used with any other lock.
47 pub const unsafe fn new(data: B::Item) -> Self {
71 B::Backend::init(
73 B::NAME.as_char_ptr(),
74 B::get_lock_class().as_ptr(),
81 pub fn lock(&'static self) -> GlobalGuard<B> {
89 pub fn try_lock(&'static self) -> Option<GlobalGuard<B>> {
99 pub struct GlobalGuard<B: GlobalLockBackend> {
100 inner: Guard<'static, B::Item, B::Backend>,
103 impl<B: GlobalLockBackend> core::ops::Deref for GlobalGuard<B> {
104 type Target = B::Item;
111 impl<B: GlobalLockBackend> core::ops::DerefMut for GlobalGuard<B>
113 B::Item: Unpin,
123 pub struct GlobalLockedBy<T: ?Sized, B: GlobalLockBackend> {
124 _backend: PhantomData<B>,
129 unsafe impl<T, B> Send for GlobalLockedBy<T, B>
132 B: GlobalLockBackend,
133 LockedBy<T, B::Item>: Send,
138 unsafe impl<T, B> Sync for GlobalLockedBy<T, B>
141 B: GlobalLockBackend,
142 LockedBy<T, B::Item>: Sync,
146 impl<T, B: GlobalLockBackend> GlobalLockedBy<T, B> {
149 /// The provided value will be protected by the global lock indicated by `B`.
158 impl<T: ?Sized, B: GlobalLockBackend> GlobalLockedBy<T, B> {
162 pub fn as_ref<'a>(&'a self, _guard: &'a GlobalGuard<B>) -> &'a T {
170 pub fn as_mut<'a>(&'a self, _guard: &'a mut GlobalGuard<B>) -> &'a mut T {