diff --git a/ostd/src/sync/rcu/non_null/mod.rs b/ostd/src/sync/rcu/non_null/mod.rs index e600d2361..5ae148c9e 100644 --- a/ostd/src/sync/rcu/non_null/mod.rs +++ b/ostd/src/sync/rcu/non_null/mod.rs @@ -7,7 +7,6 @@ use alloc::{sync::Arc, boxed::Box}; //mod either; -use alloc::sync::Weak; use core::simd::ptr; use core::{marker::PhantomData, mem::ManuallyDrop, ops::Deref, ptr::NonNull}; @@ -401,64 +400,6 @@ pub unsafe fn arc_raw_as_ref<'a, T: 'static>(raw: NonNull, perm: Tracked`. -#[derive(Debug)] -pub struct WeakRef<'a, T> { - inner: ManuallyDrop>, - _marker: PhantomData<&'a Weak>, -} - -impl Deref for WeakRef<'_, T> { - type Target = Weak; - - fn deref(&self) -> &Self::Target { - &self.inner - } -} - -unsafe impl NonNullPtr for Weak { - type Target = T; - - type Ref<'a> - = WeakRef<'a, T> - where - Self: 'a; - - // The alignment of `Weak` is 1 instead of `align_of::()`. - // This is because `Weak::new()` uses a dangling pointer that is _not_ aligned. - const ALIGN_BITS: u32 = 0; - - fn into_raw(self) -> NonNull { - let ptr = Weak::into_raw(self).cast_mut(); - - // SAFETY: The pointer representing an `Weak` can never be NULL. - unsafe { NonNull::new_unchecked(ptr) } - } - - unsafe fn from_raw(ptr: NonNull) -> Self { - let ptr = ptr.as_ptr().cast_const(); - - // SAFETY: The safety is upheld by the caller. - unsafe { Weak::from_raw(ptr) } - } - - unsafe fn raw_as_ref<'a>(raw: NonNull) -> Self::Ref<'a> { - // SAFETY: The safety is upheld by the caller. - unsafe { - WeakRef { - inner: ManuallyDrop::new(Weak::from_raw(raw.as_ptr())), - _marker: PhantomData, - } - } - } - - fn ref_as_raw(ptr_ref: Self::Ref<'_>) -> NonNull { - NonNullPtr::into_raw(ManuallyDrop::into_inner(ptr_ref.inner)) - } -} -*/ } verus!{