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(),
80 pub fn lock(&'static self) -> GlobalGuard<B> {
87 pub fn try_lock(&'static self) -> Option<GlobalGuard<B>> {
97 pub struct GlobalGuard<B: GlobalLockBackend> {
98 inner: Guard<'static, B::Item, B::Backend>,
101 impl<B: GlobalLockBackend> core::ops::Deref for GlobalGuard<B> {
102 type Target = B::Item;
109 impl<B: GlobalLockBackend> core::ops::DerefMut for GlobalGuard<B> {
118 pub struct GlobalLockedBy<T: ?Sized, B: GlobalLockBackend> {
119 _backend: PhantomData<B>,
124 unsafe impl<T, B> Send for GlobalLockedBy<T, B>
127 B: GlobalLockBackend,
128 LockedBy<T, B::Item>: Send,
133 unsafe impl<T, B> Sync for GlobalLockedBy<T, B>
136 B: GlobalLockBackend,
137 LockedBy<T, B::Item>: Sync,
141 impl<T, B: GlobalLockBackend> GlobalLockedBy<T, B> {
144 /// The provided value will be protected by the global lock indicated by `B`.
153 impl<T: ?Sized, B: GlobalLockBackend> GlobalLockedBy<T, B> {
157 pub fn as_ref<'a>(&'a self, _guard: &'a GlobalGuard<B>) -> &'a T {
165 pub fn as_mut<'a>(&'a self, _guard: &'a mut GlobalGuard<B>) -> &'a mut T {