All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Hindborg <a.hindborg@kernel.org>
To: "Tamir Duberstein" <tamird@gmail.com>
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>,
	"Benno Lossin" <benno.lossin@proton.me>,
	"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>,
	rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 05/14] rust: hrtimer: allow timer restart from timer handler
Date: Wed, 15 Jan 2025 12:21:33 +0100	[thread overview]
Message-ID: <87y0zccog2.fsf@kernel.org> (raw)
In-Reply-To: <CAJ-ks9=0HRjwqqrLZ2QjyjYw6frK=zu5_ZG5Jmb=fCRXefBmLQ@mail.gmail.com> (Tamir Duberstein's message of "Tue, 14 Jan 2025 12:32:45 -0500")

"Tamir Duberstein" <tamird@gmail.com> writes:

> On Fri, Jan 10, 2025 at 3:17 PM Andreas Hindborg <a.hindborg@kernel.org> wrote:
>>
>> This patch allows timer handlers to report that they want a timer to be
>> restarted after the timer handler has finished executing.
>>
>> Also update the `hrtimer` documentation to showcase the new feature.
>>
>> Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
>> ---
>>  rust/kernel/time/hrtimer.rs     | 37 ++++++++++++++++++++++++++++++++++++-
>>  rust/kernel/time/hrtimer/arc.rs |  4 +---
>>  2 files changed, 37 insertions(+), 4 deletions(-)
>>
>> diff --git a/rust/kernel/time/hrtimer.rs b/rust/kernel/time/hrtimer.rs
>> index d0842c7c4c6ddffeef9a79cbf9727819060e4333..50e8c23578b5cf7196893ac88d9547fc027f1f04 100644
>> --- a/rust/kernel/time/hrtimer.rs
>> +++ b/rust/kernel/time/hrtimer.rs
>> @@ -167,7 +167,7 @@ pub trait HrTimerCallback {
>>      type CallbackTargetParameter<'a>;
>>
>>      /// Called by the timer logic when the timer fires.
>> -    fn run(this: Self::CallbackTargetParameter<'_>)
>> +    fn run(this: Self::CallbackTargetParameter<'_>) -> HrTimerRestart
>>      where
>>          Self: Sized;
>>  }
>> @@ -262,6 +262,41 @@ unsafe fn start(self_ptr: *const Self, expires: Ktime) {
>>      }
>>  }
>>
>> +/// Restart policy for timers.
>> +pub enum HrTimerRestart {
>> +    /// Timer should not be restarted.
>> +    NoRestart,
>> +    /// Timer should be restarted.
>> +    Restart,
>> +}
>> +
>> +impl From<u32> for HrTimerRestart {
>> +    fn from(value: u32) -> Self {
>> +        match value {
>> +            0 => Self::NoRestart,
>> +            _ => Self::Restart,
>> +        }
>> +    }
>> +}
>> +
>> +impl From<i32> for HrTimerRestart {
>> +    fn from(value: i32) -> Self {
>> +        match value {
>> +            0 => Self::NoRestart,
>> +            _ => Self::Restart,
>> +        }
>> +    }
>> +}
>
> These are for converting from bindings to our enum, right? Why do we
> need both signed and unsigned,

Depending on kernel (target arch) configuration, the enum type will be
either signed or unsigned on C side.

I guess I could try to figure out what kernel configs effect the change
and then do conditional compilation on Rust side, but it seems overkill.

> and why do we hardcode 0 rather than
> using the generated constants?

We should use the constants - thanks.


Best regards,
Andreas Hindborg




  reply	other threads:[~2025-01-15 11:21 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-10 20:15 [PATCH v6 00/14] hrtimer Rust API Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 01/14] rust: time: Add Ktime::from_ns() Andreas Hindborg
2025-01-14 17:04   ` Tamir Duberstein
2025-01-16 14:11     ` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 02/14] rust: hrtimer: introduce hrtimer support Andreas Hindborg
2025-01-14 17:23   ` Tamir Duberstein
2025-01-16 19:06     ` Andreas Hindborg
2025-01-16 19:13       ` Miguel Ojeda
2025-01-21 13:33   ` Alice Ryhl
2025-02-03 11:41     ` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 03/14] rust: sync: add `Arc::as_ptr` Andreas Hindborg
2025-01-14 17:24   ` Tamir Duberstein
2025-01-16 19:20     ` Andreas Hindborg
2025-02-03 22:46       ` Tamir Duberstein
2025-02-03 23:44         ` Boqun Feng
2025-02-04  9:56         ` Andreas Hindborg
2025-01-17  9:10   ` Alice Ryhl
2025-01-10 20:15 ` [PATCH v6 04/14] rust: hrtimer: implement `HrTimerPointer` for `Arc` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 05/14] rust: hrtimer: allow timer restart from timer handler Andreas Hindborg
2025-01-14 17:32   ` Tamir Duberstein
2025-01-15 11:21     ` Andreas Hindborg [this message]
2025-01-16  0:21       ` Tamir Duberstein
2025-01-16 13:26         ` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 06/14] rust: hrtimer: add `UnsafeHrTimerPointer` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 07/14] rust: hrtimer: add `hrtimer::ScopedHrTimerPointer` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 08/14] rust: hrtimer: implement `UnsafeHrTimerPointer` for `Pin<&T>` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 09/14] rust: hrtimer: implement `UnsafeHrTimerPointer` for `Pin<&mut T>` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 10/14] rust: alloc: add `Box::into_pin` Andreas Hindborg
2025-01-13 16:12   ` Danilo Krummrich
2025-01-10 20:15 ` [PATCH v6 11/14] rust: hrtimer: implement `HrTimerPointer` for `Pin<Box<T>>` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 12/14] rust: hrtimer: add `HrTimerMode` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 13/14] rust: hrtimer: add clocksource selection through `ClockSource` Andreas Hindborg
2025-01-10 20:15 ` [PATCH v6 14/14] 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=87y0zccog2.fsf@kernel.org \
    --to=a.hindborg@kernel.org \
    --cc=2407018371@qq.com \
    --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.