Lines Matching refs:B

106 pub struct Lock<T: ?Sized, B: Backend> {
109 state: Opaque<B::State>,
122 unsafe impl<T: ?Sized + Send, B: Backend> Send for Lock<T, B> {}
126 unsafe impl<T: ?Sized + Send, B: Backend> Sync for Lock<T, B> {}
128 impl<T, B: Backend> Lock<T, B> {
137 B::init(slot, name.as_char_ptr(), key.as_ptr()) in new()
143 impl<B: Backend> Lock<(), B> {
154 pub unsafe fn from_raw<'a>(ptr: *mut B::State) -> &'a Self { in from_raw()
165 impl<T: ?Sized, B: Backend> Lock<T, B> {
167 pub fn lock(&self) -> Guard<'_, T, B> { in lock() argument
170 let state = unsafe { B::lock(self.state.get()) }; in lock()
180 pub fn try_lock(&self) -> Option<Guard<'_, T, B>> { in try_lock() argument
183 unsafe { B::try_lock(self.state.get()).map(|state| Guard::new(self, state)) } in try_lock()
193 pub struct Guard<'a, T: ?Sized, B: Backend> {
194 pub(crate) lock: &'a Lock<T, B>,
195 pub(crate) state: B::GuardState,
200 unsafe impl<T: Sync + ?Sized, B: Backend> Sync for Guard<'_, T, B> {}
202 impl<'a, T: ?Sized, B: Backend> Guard<'a, T, B> {
229 pub fn lock_ref(&self) -> &'a Lock<T, B> { in lock_ref() argument
235 unsafe { B::unlock(self.lock.state.get(), &self.state) }; in do_unlocked()
239 unsafe { B::relock(self.lock.state.get(), &mut self.state) }); in do_unlocked()
245 impl<T: ?Sized, B: Backend> core::ops::Deref for Guard<'_, T, B> {
254 impl<T: ?Sized, B: Backend> core::ops::DerefMut for Guard<'_, T, B> {
261 impl<T: ?Sized, B: Backend> Drop for Guard<'_, T, B> {
264 unsafe { B::unlock(self.lock.state.get(), &self.state) }; in drop()
268 impl<'a, T: ?Sized, B: Backend> Guard<'a, T, B> {
274 pub unsafe fn new(lock: &'a Lock<T, B>, state: B::GuardState) -> Self { in new() argument
276 unsafe { B::assert_is_held(lock.state.get()) }; in new()