lkml.org 
[lkml]   [2023]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH v1 1/2] rust: sync: add `Arc::ptr_eq`
    Date

    Alice Ryhl <aliceryhl@google.com> writes:

    > Add a method for comparing whether two `Arc` pointers reference the same
    > underlying object.
    >
    > This comparison can already be done by getting a reference to the inner
    > values and comparing whether the references have the same address.
    > However, writing `Arc::ptr_eq(a, b)` is generally less error-prone than
    > doing the same check on the references, since you might otherwise
    > accidentally compare the two `&Arc<T>` references instead, which wont
    > work because those are pointers to pointers to the inner value, when you
    > just want to compare the pointers to the inner value.
    >
    > Also, this method might optimize better because getting a reference to
    > the inner value involves offsetting the pointer, which this method does
    > not need to do.
    >
    > Co-developed-by: Wedson Almeida Filho <walmeida@microsoft.com>
    > Signed-off-by: Wedson Almeida Filho <walmeida@microsoft.com>
    > Signed-off-by: Alice Ryhl <aliceryhl@google.com>

    Reviewed-by: Andreas Hindborg <a.hindborg@samsung.com>

    > ---
    > rust/kernel/sync/arc.rs | 5 +++++
    > 1 file changed, 5 insertions(+)
    >
    > diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs
    > index e6d206242465..274febe3bb06 100644
    > --- a/rust/kernel/sync/arc.rs
    > +++ b/rust/kernel/sync/arc.rs
    > @@ -221,6 +221,11 @@ impl<T: ?Sized> Arc<T> {
    > // reference can be created.
    > unsafe { ArcBorrow::new(self.ptr) }
    > }
    > +
    > + /// Compare whether two [`Arc`] pointers reference the same underlying object.
    > + pub fn ptr_eq(this: &Self, other: &Self) -> bool {
    > + core::ptr::eq(this.ptr.as_ptr(), other.ptr.as_ptr())
    > + }
    > }
    >
    > impl<T: 'static> ForeignOwnable for Arc<T> {
    >
    > base-commit: ac9a78681b921877518763ba0e89202254349d1b

    \
     
     \ /
      Last update: 2023-05-23 14:00    [W:3.236 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site