Rust for Linux List
 help / color / mirror / Atom feed
From: Andreas Hindborg <a.hindborg@kernel.org>
To: Alexandre Courbot <acourbot@nvidia.com>,
	FUJITA Tomonori <tomo@flapping.org>
Cc: aliceryhl@google.com, arve@android.com, boqun@kernel.org,
	brauner@kernel.org, cmllamas@google.com, gary@garyguo.net,
	gregkh@linuxfoundation.org, ojeda@kernel.org, tkjos@android.com,
	anna-maria@linutronix.de, bjorn3_gh@protonmail.com,
	dakr@kernel.org, daniel.almeida@collabora.com,
	frederic@kernel.org, jstultz@google.com, lossin@kernel.org,
	lyude@redhat.com, sboyd@kernel.org, tamird@kernel.org,
	tglx@kernel.org, tmgross@umich.edu, work@onurozkan.dev,
	rust-for-linux@vger.kernel.org, fujita.tomonori@gmail.com
Subject: Re: [PATCH v5 1/7] rust: time: make Delta generic over its time unit
Date: Mon, 10 Aug 2026 13:24:56 +0200	[thread overview]
Message-ID: <878q6e2p6f.fsf@kernel.org> (raw)
In-Reply-To: <DKK236MNP2NH.MFG9QEPIEH1M@nvidia.com>

"Alexandre Courbot" <acourbot@nvidia.com> writes:

> On Fri Aug 7, 2026 at 9:10 PM JST, FUJITA Tomonori wrote:
>>>> +
>>>> +impl TimeUnit for Nsec {
>>>> +    type Repr = i64;
>>>> +}
>>>> +
>>>>  /// A span of time.
>>>>  ///
>>>> -/// This struct represents a span of time, with its value stored as nanoseconds.
>>>> -/// The value can represent any valid i64 value, including negative, zero, and
>>>> -/// positive numbers.
>>>> +/// The span is stored in the unit given by the type parameter `U` (see
>>>> +/// [`TimeUnit`]); its value has type `U::Repr`. `U` defaults to [`Nsec`], so a
>>>> +/// plain [`Delta`] is a span in nanoseconds. The value can be negative, zero, or
>>>> +/// positive.
>>>>  #[derive(Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Debug)]
>>>> -pub struct Delta {
>>>> -    nanos: i64,
>>>> +pub struct Delta<U: TimeUnit = Nsec> {
>>>> +    value: U::Repr,
>>>>  }
>>>>  
>>>>  impl ops::Add for Delta {
>>> 
>>> When you add `Jiffy` later, this impl block will only cover
>>> `Delta<Nsec>`. Is that intentional, or did you intend to support
>>> all these operations operations for `Delta<Jiffy>` as well?
>>
>> Intentional. Delta<Jiffy> exists to carry a jiffies-valued timeout
>> across the C boundary; it is not meant as a general arithmetic type. I
>> can add them if a user needs them.
>
> Is there a reason for not doing it now? Common arithmetic sounds useful
> for any unit, and since they are already agreed to panic at the bounds
> we can constrain them on `U` implementing the corresponding traits.

I agree, I think we should add these. Unless there is some reason
preventing us from doing so?

If you guys are in a super hurry to land this series, and if Miguel is
still fine with taking this so late, you can add the arithmetic next
cycle.


Best regards,
Andreas Hindborg



  parent reply	other threads:[~2026-08-10 11:29 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-06  7:32 [PATCH v5 0/7] rust: use Delta instead of raw jiffies for timeouts and delays FUJITA Tomonori
2026-08-06  7:32 ` [PATCH v5 1/7] rust: time: make Delta generic over its time unit FUJITA Tomonori
2026-08-06  9:44   ` Andreas Hindborg
2026-08-07 12:10     ` FUJITA Tomonori
2026-08-09  2:26       ` Alexandre Courbot
2026-08-10  2:23         ` FUJITA Tomonori
2026-08-10 11:24         ` Andreas Hindborg [this message]
2026-08-10 12:15           ` FUJITA Tomonori
2026-08-10 14:39             ` Miguel Ojeda
2026-08-06  7:32 ` [PATCH v5 2/7] rust: time: add jiffies time unit for Delta FUJITA Tomonori
2026-08-06  7:32 ` [PATCH v5 3/7] rust: time: add Delta::as_millis_ceil() FUJITA Tomonori
2026-08-06  9:47   ` Andreas Hindborg
2026-08-07 13:26     ` FUJITA Tomonori
2026-08-06  7:32 ` [PATCH v5 4/7] rust: time: add Delta::to_jiffies() for timeout conversion FUJITA Tomonori
2026-08-06  9:50   ` Andreas Hindborg
2026-08-07 12:15     ` FUJITA Tomonori
2026-08-06 11:50   ` Gary Guo
2026-08-07 12:38     ` FUJITA Tomonori
2026-08-07 12:59       ` Gary Guo
2026-08-07 13:13         ` FUJITA Tomonori
2026-08-06  7:32 ` [PATCH v5 5/7] rust: workqueue: take a Delta<Jiffy> for the enqueue delay FUJITA Tomonori
2026-08-06  7:32 ` [PATCH v5 6/7] rust: sync: condvar: use Delta<Jiffy> for timeout and result FUJITA Tomonori
2026-08-06  7:32 ` [PATCH v5 7/7] rust: time: remove unused Jiffies/Msecs helpers FUJITA Tomonori

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=878q6e2p6f.fsf@kernel.org \
    --to=a.hindborg@kernel.org \
    --cc=acourbot@nvidia.com \
    --cc=aliceryhl@google.com \
    --cc=anna-maria@linutronix.de \
    --cc=arve@android.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=brauner@kernel.org \
    --cc=cmllamas@google.com \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=frederic@kernel.org \
    --cc=fujita.tomonori@gmail.com \
    --cc=gary@garyguo.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=jstultz@google.com \
    --cc=lossin@kernel.org \
    --cc=lyude@redhat.com \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=sboyd@kernel.org \
    --cc=tamird@kernel.org \
    --cc=tglx@kernel.org \
    --cc=tkjos@android.com \
    --cc=tmgross@umich.edu \
    --cc=tomo@flapping.org \
    --cc=work@onurozkan.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox