All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Hindborg <a.hindborg@kernel.org>
To: FUJITA Tomonori <fujita.tomonori@gmail.com>
Cc: frederic@kernel.org,  linux-kernel@vger.kernel.org,
	daniel.almeida@collabora.com,  gary@garyguo.net,
	 aliceryhl@google.com, me@kloenk.dev,
	 rust-for-linux@vger.kernel.org,  netdev@vger.kernel.org,
	andrew@lunn.ch,  hkallweit1@gmail.com,  tmgross@umich.edu,
	ojeda@kernel.org,  alex.gaynor@gmail.com,
	 bjorn3_gh@protonmail.com, benno.lossin@proton.me,
	 a.hindborg@samsung.com, anna-maria@linutronix.de,
	 tglx@linutronix.de,  arnd@arndb.de, jstultz@google.com,
	 sboyd@kernel.org,  mingo@redhat.com, peterz@infradead.org,
	 juri.lelli@redhat.com, vincent.guittot@linaro.org,
	 dietmar.eggemann@arm.com, rostedt@goodmis.org,
	 bsegall@google.com,  mgorman@suse.de, vschneid@redhat.com,
	 tgunders@redhat.com,  david.laight.linux@gmail.com
Subject: Re: [PATCH v11 5/8] rust: time: Add wrapper for fsleep() function
Date: Sat, 22 Mar 2025 15:15:38 +0100	[thread overview]
Message-ID: <874izlb185.fsf@kernel.org> (raw)
In-Reply-To: <20250322.102449.895174336060649075.fujita.tomonori@gmail.com> (FUJITA Tomonori's message of "Sat, 22 Mar 2025 10:24:49 +0900 (JST)")

FUJITA Tomonori <fujita.tomonori@gmail.com> writes:

> On Fri, 21 Mar 2025 23:05:23 +0100
> Frederic Weisbecker <frederic@kernel.org> wrote:
>

[...]

>>> +/// `delta` must be within `[0, i32::MAX]` microseconds;
>>> +/// otherwise, it is erroneous behavior. That is, it is considered a bug
>>> +/// to call this function with an out-of-range value, in which case the function
>>> +/// will sleep for at least the maximum value in the range and may warn
>>> +/// in the future.
>>> +///
>>> +/// The behavior above differs from the C side [`fsleep()`] for which out-of-range
>>> +/// values mean "infinite timeout" instead.
>> 
>> And very important: the behaviour also differ in that the C side takes
>> usecs while this takes nsecs. We should really disambiguate the situation
>> as that might create confusion or misusage.
>> 
>> Either this should be renamed to fsleep_ns() or fsleep_nsecs(), or this should
>> take microseconds directly.
>
> You meant that `Delta` type internally tracks time in nanoseconds?
>
> It's true but Delta type is a unit-agnostic time abstraction, designed
> to represent durations across different granularities — seconds,
> milliseconds, microseconds, nanoseconds. The Rust abstraction always
> tries to us Delta type to represent durations.
>
> Rust's fsleep takes Delta, internally converts it in usecs, and calls
> C's fsleep.
>
> Usually, drivers convert from a certain time unit to Delta before
> calling fsleep like the following, so misuse or confusion is unlikely
> to occur, I think.
>
> fsleep(Delta::from_micros(50));
>
> However, as you pointed out, there is a difference; C's fsleep takes
> usecs while Rust's fsleep takes a unit-agnostic time type. Taking this
> difference into account, if we were to rename fsleep for Rust, I think
> that a name that is agnostic to the time unit would seem more
> appropriate. Simply sleep(), perhaps?

I would prefer to keep the same name. But if we must change it, how
about `flexible_sleep` to indicate the behavior?

And just to reiterate what Tomonori already said, it is not possible to
call this method with an integer,

  fsleep(500)

will not compile. A unit based conversion into `Duration` is required.


Best regards,
Andreas Hindborg



  reply	other threads:[~2025-03-22 21:54 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-20  7:06 [PATCH v11 0/8] rust: Add IO polling FUJITA Tomonori
2025-02-20  7:06 ` [PATCH v11 1/8] sched/core: Add __might_sleep_precision() FUJITA Tomonori
2025-02-24  1:40   ` FUJITA Tomonori
2025-02-20  7:06 ` [PATCH v11 2/8] rust: time: Add PartialEq/Eq/PartialOrd/Ord trait to Ktime FUJITA Tomonori
2025-03-22  8:51   ` Andreas Hindborg
2025-02-20  7:06 ` [PATCH v11 3/8] rust: time: Introduce Delta type FUJITA Tomonori
2025-03-22  8:50   ` Andreas Hindborg
2025-02-20  7:06 ` [PATCH v11 4/8] rust: time: Introduce Instant type FUJITA Tomonori
2025-03-22 13:58   ` Andreas Hindborg
2025-04-03  4:40     ` FUJITA Tomonori
2025-04-03 10:41       ` Andreas Hindborg
2025-04-03 12:23         ` FUJITA Tomonori
2025-02-20  7:06 ` [PATCH v11 5/8] rust: time: Add wrapper for fsleep() function FUJITA Tomonori
2025-03-21 22:05   ` Frederic Weisbecker
2025-03-22  1:24     ` FUJITA Tomonori
2025-03-22 14:15       ` Andreas Hindborg [this message]
2025-03-22 14:10   ` Andreas Hindborg
2025-02-20  7:06 ` [PATCH v11 6/8] MAINTAINERS: rust: Add new sections for DELAY/SLEEP and TIMEKEEPING API FUJITA Tomonori
2025-03-20 19:05   ` Boqun Feng
2025-03-21 19:18     ` Andreas Hindborg
2025-03-21 20:38       ` Thomas Gleixner
2025-03-21 21:00         ` Boqun Feng
2025-03-22  2:07           ` FUJITA Tomonori
2025-03-22 12:57             ` Boqun Feng
2025-03-22 22:40               ` Andreas Hindborg
2025-03-31 14:03                 ` Boqun Feng
2025-03-31 19:43                   ` Andreas Hindborg
2025-04-03  8:18                     ` FUJITA Tomonori
2025-04-03 10:54                       ` Andreas Hindborg
2025-04-03 12:57                         ` FUJITA Tomonori
2025-04-04 16:40                           ` Boqun Feng
2025-04-02 14:16                   ` FUJITA Tomonori
2025-04-02 16:29                     ` Boqun Feng
2025-04-02 23:03                       ` FUJITA Tomonori
2025-04-03  0:51                         ` Boqun Feng
2025-04-03  3:02                           ` FUJITA Tomonori
2025-04-03  3:17                             ` Boqun Feng
2025-02-20  7:06 ` [PATCH v11 7/8] rust: Add read_poll_timeout functions FUJITA Tomonori
2025-02-20 15:04   ` Fiona Behrens
2025-02-21 11:20     ` FUJITA Tomonori
2025-03-22 16:02   ` Andreas Hindborg
2025-08-11  1:53     ` FUJITA Tomonori
2025-08-11  9:42       ` Andreas Hindborg
2025-08-14  5:53         ` FUJITA Tomonori
2025-07-28 12:44   ` Daniel Almeida
2025-07-28 12:52     ` FUJITA Tomonori
2025-07-28 12:57       ` Danilo Krummrich
2025-07-28 13:08         ` FUJITA Tomonori
2025-07-28 13:15           ` Danilo Krummrich
2025-07-28 14:13           ` Daniel Almeida
2025-07-28 14:30             ` Danilo Krummrich
2025-07-28 13:13   ` Danilo Krummrich
2025-08-02  1:42     ` FUJITA Tomonori
2025-08-02 11:06       ` Danilo Krummrich
2025-08-05 13:37         ` FUJITA Tomonori
2025-08-05 13:48           ` Danilo Krummrich
2025-08-05 13:53           ` Andrew Lunn
2025-08-05 14:03             ` Danilo Krummrich
2025-08-05 14:01         ` Daniel Almeida
2025-08-05 14:19           ` Danilo Krummrich
2025-02-20  7:06 ` [PATCH v11 8/8] net: phy: qt2025: Wait until PHY becomes ready FUJITA Tomonori
2025-02-27 17:29 ` [PATCH v11 0/8] rust: Add IO polling Daniel Almeida
2025-02-27 23:05   ` FUJITA Tomonori
2025-03-20 19:04 ` Boqun Feng

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=874izlb185.fsf@kernel.org \
    --to=a.hindborg@kernel.org \
    --cc=a.hindborg@samsung.com \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=andrew@lunn.ch \
    --cc=anna-maria@linutronix.de \
    --cc=arnd@arndb.de \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=bsegall@google.com \
    --cc=daniel.almeida@collabora.com \
    --cc=david.laight.linux@gmail.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=frederic@kernel.org \
    --cc=fujita.tomonori@gmail.com \
    --cc=gary@garyguo.net \
    --cc=hkallweit1@gmail.com \
    --cc=jstultz@google.com \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=me@kloenk.dev \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=ojeda@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=sboyd@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tgunders@redhat.com \
    --cc=tmgross@umich.edu \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.com \
    /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.