All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Hindborg <a.hindborg@kernel.org>
To: "Benno Lossin" <benno.lossin@proton.me>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
	"Anna-Maria Behnsen" <anna-maria@linutronix.de>,
	"Frederic Weisbecker" <frederic@kernel.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Alex Gaynor" <alex.gaynor@gmail.com>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Lyude Paul" <lyude@redhat.com>,
	"Guangbo Cui" <2407018371@qq.com>,
	"Dirk Behme" <dirk.behme@gmail.com>,
	"Daniel Almeida" <daniel.almeida@collabora.com>,
	"Tamir Duberstein" <tamird@gmail.com>,
	"Markus Elfring" <Markus.Elfring@web.de>,
	rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v11 08/13] rust: hrtimer: implement `UnsafeHrTimerPointer` for `Pin<&mut T>`
Date: Sun, 09 Mar 2025 11:08:59 +0100	[thread overview]
Message-ID: <87frjmldms.fsf@kernel.org> (raw)
In-Reply-To: <D8BNFIK9U108.273II0I7NZUG1@proton.me> (Benno Lossin's message of "Sun, 09 Mar 2025 10:04:42 +0000")

"Benno Lossin" <benno.lossin@proton.me> writes:

> On Fri Mar 7, 2025 at 10:38 PM CET, Andreas Hindborg wrote:
>> +impl<'a, T> RawHrTimerCallback for Pin<&'a mut T>
>> +where
>> +    T: HasHrTimer<T>,
>> +    T: HrTimerCallback<Pointer<'a> = Self>,
>> +{
>> +    type CallbackTarget<'b> = Self;
>> +
>> +    unsafe extern "C" fn run(ptr: *mut bindings::hrtimer) -> bindings::hrtimer_restart {
>> +        // `HrTimer` is `repr(C)`
>> +        let timer_ptr = ptr as *mut HrTimer<T>;
>> +
>> +        // SAFETY: By the safety requirement of this function, `timer_ptr`
>> +        // points to a `HrTimer<T>` contained in an `T`.
>> +        let receiver_ptr = unsafe { T::timer_container_of(timer_ptr) };
>> +
>> +        // SAFETY:
>> +        //  - By the safety requirement of this function, `timer_ptr`
>> +        //    points to a `HrTimer<T>` contained in an `T`.
>> +        //  - As per he safety requirements of the trait `HrTimerHandle`, the
>> +        //    `PinMutHrTimerHandle` associated with this timer is guaranteed to
>> +        //    be alive until this method returns. As the handle borrows from
>> +        //    `T`, `T` is also guaranteed to be alive for the duration of this
>> +        //    function.
>
> Ah one more thing, I don't think that the second part is needed (i.e.
> that `T` is alive). How about:
>
>         //  - As per the safety requirements of the trait `HrTimerHandle`, the `PinMutHrTimerHandle`
>         //  associated with this timer is guaranteed to be alive until this method returns. That
>         //  handle borrows the `T` behind `receiver_ptr` mutably thus guaranteeing the validity of
>         //  the reference created below.

OK.

>
> Can you also adjust the other instances of this in the other patches?
> Thanks!

Yes!


Best regards,
Andreas Hindborg



  reply	other threads:[~2025-03-09 10:09 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-07 21:38 [PATCH v11 00/13] hrtimer Rust API Andreas Hindborg
2025-03-07 21:38 ` [PATCH v11 01/13] rust: hrtimer: introduce hrtimer support Andreas Hindborg
2025-03-07 22:07   ` Tamir Duberstein
2025-03-07 21:38 ` [PATCH v11 02/13] rust: sync: add `Arc::as_ptr` Andreas Hindborg
2025-03-07 21:38 ` [PATCH v11 03/13] rust: hrtimer: implement `HrTimerPointer` for `Arc` Andreas Hindborg
2025-03-09 10:48   ` Benno Lossin
2025-03-07 21:38 ` [PATCH v11 04/13] rust: hrtimer: allow timer restart from timer handler Andreas Hindborg
2025-03-11 17:07   ` Lyude Paul
2025-03-07 21:38 ` [PATCH v11 05/13] rust: hrtimer: add `UnsafeHrTimerPointer` Andreas Hindborg
2025-03-07 21:38 ` [PATCH v11 06/13] rust: hrtimer: add `hrtimer::ScopedHrTimerPointer` Andreas Hindborg
2025-03-07 21:38 ` [PATCH v11 07/13] rust: hrtimer: implement `UnsafeHrTimerPointer` for `Pin<&T>` Andreas Hindborg
2025-03-09 10:07   ` Benno Lossin
2025-03-07 21:38 ` [PATCH v11 08/13] rust: hrtimer: implement `UnsafeHrTimerPointer` for `Pin<&mut T>` Andreas Hindborg
2025-03-09  9:35   ` Benno Lossin
2025-03-09  9:49     ` Andreas Hindborg
2025-03-09 10:04   ` Benno Lossin
2025-03-09 10:08     ` Andreas Hindborg [this message]
2025-03-07 21:38 ` [PATCH v11 09/13] rust: alloc: add `Box::into_pin` Andreas Hindborg
2025-03-07 21:38 ` [PATCH v11 10/13] rust: hrtimer: implement `HrTimerPointer` for `Pin<Box<T>>` Andreas Hindborg
2025-03-09 10:46   ` Benno Lossin
2025-03-07 21:38 ` [PATCH v11 11/13] rust: hrtimer: add `HrTimerMode` Andreas Hindborg
2025-03-07 21:38 ` [PATCH v11 12/13] rust: hrtimer: add clocksource selection through `ClockId` Andreas Hindborg
2025-03-07 21:38 ` [PATCH v11 13/13] rust: hrtimer: add maintainer entry Andreas Hindborg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87frjmldms.fsf@kernel.org \
    --to=a.hindborg@kernel.org \
    --cc=2407018371@qq.com \
    --cc=Markus.Elfring@web.de \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=anna-maria@linutronix.de \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=dirk.behme@gmail.com \
    --cc=frederic@kernel.org \
    --cc=gary@garyguo.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lyude@redhat.com \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tamird@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=tmgross@umich.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.