linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] Arithmetic ops for Instant/Delta
@ 2025-08-20 20:26 Lyude Paul
  2025-08-20 20:26 ` [PATCH v3 1/2] rust: time: Implement Add<Delta>/Sub<Delta> for Instant Lyude Paul
  2025-08-20 20:26 ` [PATCH v3 2/2] rust: time: Implement basic arithmetic operations for Delta Lyude Paul
  0 siblings, 2 replies; 12+ messages in thread
From: Lyude Paul @ 2025-08-20 20:26 UTC (permalink / raw)
  To: rust-for-linux, linux-kernel, Thomas Gleixner, Andreas Hindborg,
	FUJITA Tomonori
  Cc: Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Alice Ryhl, Trevor Gross,
	Danilo Krummrich

When rebasing RVKMS against my hrtimer additions, which themselves were
rebased against Fujita's recent work for introducing Instant/Delta, I
needed to reintroduce the ability to perform some of the arithmetic that
rvkms uses for vblank emulation - so, this commit introduces such
arithmetic.

Example usage:
  https://gitlab.freedesktop.org/lyudess/linux/-/blob/rvkms-slim/drivers/gpu/drm/rvkms/crtc.rs?ref_type=heads#L167

Previous versions:
  Version 1: https://lkml.org/lkml/2025/7/24/1400
  Version 2: https://lkml.org/lkml/2025/8/7/950

Lyude Paul (2):
  rust: time: Implement Add<Delta>/Sub<Delta> for Instant
  rust: time: Implement basic arithmetic operations for Delta

 rust/kernel/time.rs | 141 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 140 insertions(+), 1 deletion(-)

Changelog:
  rust: time: Implement Add<Delta>/Sub<Delta> for Instant
    V2:
    * Change behavior in ops::{Add,Sub}<Delta> so that we panic on overflows
      under the same conditions that arithmetic operations in rust would panic
      by default.
    V3:
    * Don't forget to update the commit message this time!

  rust: time: Implement basic arithmetic operations for Delta
    V2:
    * Don't forget to make sure that we inline all of these
    * Drop ops::Rem and ops::RemAssign implementations for Delta, replace with
      Delta::rem_nanos() instead. It turns out that there's actually no way to
      perform i64 % i64 on 32 bit platforms in the kernel at the moment, the
      closest that we have is div_s64_rem() which only allows a 32 bit divisor.
    * Actually use the kernel arithmetic helpers for division/remainders so
      that this code works on both 32 and 64 bit platforms.
    V3:
    * Change the output type for Div to i64, drop DivAssign
    * Change Mul/MulAssign to accept i64, not another Delta
    * Fix parameter name in rem_nanos (ns -> dividend)

base-commit: c17b750b3ad9f45f2b6f7e6f7f4679844244f0b9
-- 
2.50.0


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-08-27 10:29 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-20 20:26 [PATCH v3 0/2] Arithmetic ops for Instant/Delta Lyude Paul
2025-08-20 20:26 ` [PATCH v3 1/2] rust: time: Implement Add<Delta>/Sub<Delta> for Instant Lyude Paul
2025-08-26  9:25   ` Andreas Hindborg
2025-08-26 12:23   ` FUJITA Tomonori
2025-08-26 14:11   ` Daniel Almeida
2025-08-26 20:59     ` Lyude Paul
2025-08-26 21:19       ` Daniel Almeida
2025-08-27 10:29   ` Alice Ryhl
2025-08-20 20:26 ` [PATCH v3 2/2] rust: time: Implement basic arithmetic operations for Delta Lyude Paul
2025-08-26  9:26   ` Andreas Hindborg
2025-08-26 12:58   ` FUJITA Tomonori
2025-08-26 14:28   ` Daniel Almeida

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).