From: FUJITA Tomonori <tomo@flapping.org>
To: a.hindborg@kernel.org, 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
Cc: acourbot@nvidia.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 <fujita.tomonori@gmail.com>
Subject: [PATCH v6 2/7] rust: time: add jiffies time unit for Delta
Date: Sat, 8 Aug 2026 15:28:34 +0900 [thread overview]
Message-ID: <20260808062839.1159990-3-tomo@flapping.org> (raw)
In-Reply-To: <20260808062839.1159990-1-tomo@flapping.org>
From: FUJITA Tomonori <fujita.tomonori@gmail.com>
Add a Jiffy time unit with isize as its representation and provide
Delta<Jiffy>::from_jiffies() and as_jiffies() as the unit-specific
constructor and accessor, mirroring from_nanos()/as_nanos() on the
nanosecond Delta.
Represent the jiffies span as isize: Delta is a signed span (nanoseconds
use i64) and, as a timeout, the value only needs to reach
MAX_JIFFY_OFFSET ((LONG_MAX >> 1) - 1). isize is signed and matches the
kernel's c_long, so it meets both.
Reviewed-by: Gary Guo <gary@garyguo.net>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
---
rust/kernel/time.rs | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/rust/kernel/time.rs b/rust/kernel/time.rs
index afe35759bc15..bff72a4a0b0d 100644
--- a/rust/kernel/time.rs
+++ b/rust/kernel/time.rs
@@ -295,6 +295,7 @@ mod private {
pub trait Sealed {}
impl Sealed for super::Nsec {}
+ impl Sealed for super::Jiffy {}
}
/// A trait for time units.
@@ -314,6 +315,17 @@ impl TimeUnit for Nsec {
type Repr = i64;
}
+/// A time unit of jiffies.
+///
+/// A [`Delta<Jiffy>`] stores its value as `isize` jiffies and can represent
+/// any `isize` value, including negative, zero, and positive numbers.
+#[derive(Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Debug)]
+pub enum Jiffy {}
+
+impl TimeUnit for Jiffy {
+ type Repr = isize;
+}
+
/// A span of time.
///
/// The span is stored in the unit given by the type parameter `U` (see
@@ -325,6 +337,20 @@ pub struct Delta<U: TimeUnit = Nsec> {
value: U::Repr,
}
+impl Delta<Jiffy> {
+ /// Create a new [`Delta`] from a number of jiffies.
+ #[inline]
+ pub const fn from_jiffies(jiffies: isize) -> Self {
+ Self { value: jiffies }
+ }
+
+ /// Return the number of jiffies in the [`Delta`].
+ #[inline]
+ pub const fn as_jiffies(self) -> isize {
+ self.value
+ }
+}
+
impl ops::Add for Delta {
type Output = Self;
--
2.43.0
next prev parent reply other threads:[~2026-08-08 6:29 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-08 6:28 [PATCH v6 0/7] rust: use Delta instead of raw jiffies for timeouts and delays FUJITA Tomonori
2026-08-08 6:28 ` [PATCH v6 1/7] rust: time: make Delta generic over its time unit FUJITA Tomonori
2026-08-10 11:25 ` Andreas Hindborg
2026-08-08 6:28 ` FUJITA Tomonori [this message]
2026-08-10 11:25 ` [PATCH v6 2/7] rust: time: add jiffies time unit for Delta Andreas Hindborg
2026-08-08 6:28 ` [PATCH v6 3/7] rust: time: add Delta::as_millis_ceil() FUJITA Tomonori
2026-08-10 11:26 ` Andreas Hindborg
2026-08-08 6:28 ` [PATCH v6 4/7] rust: time: add Delta::to_jiffies_timeout() for timeout conversion FUJITA Tomonori
2026-08-10 11:27 ` Andreas Hindborg
2026-08-10 14:12 ` Gary Guo
2026-08-11 6:54 ` Miguel Ojeda
2026-08-11 11:49 ` FUJITA Tomonori
2026-08-11 11:51 ` Miguel Ojeda
2026-08-08 6:28 ` [PATCH v6 5/7] rust: workqueue: take a Delta<Jiffy> for the enqueue delay FUJITA Tomonori
2026-08-08 6:28 ` [PATCH v6 6/7] rust: sync: condvar: use Delta<Jiffy> for timeout and result FUJITA Tomonori
2026-08-08 6:28 ` [PATCH v6 7/7] rust: time: remove unused Jiffies/Msecs helpers FUJITA Tomonori
2026-08-11 12:12 ` [PATCH v6 0/7] rust: use Delta instead of raw jiffies for timeouts and delays Miguel Ojeda
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=20260808062839.1159990-3-tomo@flapping.org \
--to=tomo@flapping.org \
--cc=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=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 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.