rust/kernel/sync/aref.rs

Source file repositories/reference/linux-study-clean/rust/kernel/sync/aref.rs

File Facts

System
Linux kernel
Corpus path
rust/kernel/sync/aref.rs
Extension
.rs
Size
7367 bytes
Lines
200
Domain
Rust Kernel Layer
Bucket
Rust API Membrane
Inferred role
Rust Kernel Layer: implementation source
Status
source implementation candidate

Why This File Exists

Rust-side wrappers and abstractions around kernel C APIs, ownership contracts, allocation, synchronization, and module integration.

Dependency Surface

Detected Declarations

Annotated Snippet

fn drop(&mut self) {
        // SAFETY: The type invariants guarantee that the `ARef` owns the reference we're about to
        // decrement.
        unsafe { T::dec_ref(self.ptr) };
    }
}

impl<T, U> PartialEq<ARef<U>> for ARef<T>
where
    T: AlwaysRefCounted + PartialEq<U>,
    U: AlwaysRefCounted,
{
    #[inline]
    fn eq(&self, other: &ARef<U>) -> bool {
        T::eq(&**self, &**other)
    }
}
impl<T: AlwaysRefCounted + Eq> Eq for ARef<T> {}

impl<T, U> PartialEq<&'_ U> for ARef<T>
where
    T: AlwaysRefCounted + PartialEq<U>,
{
    #[inline]
    fn eq(&self, other: &&U) -> bool {
        T::eq(&**self, other)
    }
}

Annotation

Implementation Notes