Lines Matching refs:B
78 pub struct Lock<T: ?Sized, B: Backend> {
81 state: Opaque<B::State>,
94 unsafe impl<T: ?Sized + Send, B: Backend> Send for Lock<T, B> {}
98 unsafe impl<T: ?Sized + Send, B: Backend> Sync for Lock<T, B> {}
100 impl<T, B: Backend> Lock<T, B> {
110 B::init(slot, name.as_char_ptr(), key.as_ptr()) in new()
116 impl<T: ?Sized, B: Backend> Lock<T, B> {
118 pub fn lock(&self) -> Guard<'_, T, B> { in lock() argument
121 let state = unsafe { B::lock(self.state.get()) }; in lock()
133 pub struct Guard<'a, T: ?Sized, B: Backend> {
134 pub(crate) lock: &'a Lock<T, B>,
135 pub(crate) state: B::GuardState,
140 unsafe impl<T: Sync + ?Sized, B: Backend> Sync for Guard<'_, T, B> {}
142 impl<T: ?Sized, B: Backend> Guard<'_, T, B> {
145 unsafe { B::unlock(self.lock.state.get(), &self.state) }; in do_unlocked()
149 ScopeGuard::new(|| unsafe { B::relock(self.lock.state.get(), &mut self.state) }); in do_unlocked()
155 impl<T: ?Sized, B: Backend> core::ops::Deref for Guard<'_, T, B> {
164 impl<T: ?Sized, B: Backend> core::ops::DerefMut for Guard<'_, T, B> {
171 impl<T: ?Sized, B: Backend> Drop for Guard<'_, T, B> {
174 unsafe { B::unlock(self.lock.state.get(), &self.state) }; in drop()
178 impl<'a, T: ?Sized, B: Backend> Guard<'a, T, B> {
184 pub(crate) unsafe fn new(lock: &'a Lock<T, B>, state: B::GuardState) -> Self { in new() argument