rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Alexandre Courbot" <acourbot@nvidia.com>
To: "FUJITA Tomonori" <fujita.tomonori@gmail.com>,
	<a.hindborg@kernel.org>, <alex.gaynor@gmail.com>,
	<ojeda@kernel.org>
Cc: <aliceryhl@google.com>, <anna-maria@linutronix.de>,
	<bjorn3_gh@protonmail.com>, <boqun.feng@gmail.com>,
	<dakr@kernel.org>, <frederic@kernel.org>, <gary@garyguo.net>,
	<jstultz@google.com>, <linux-kernel@vger.kernel.org>,
	<lossin@kernel.org>, <lyude@redhat.com>,
	<rust-for-linux@vger.kernel.org>, <sboyd@kernel.org>,
	<tglx@linutronix.de>, <tmgross@umich.edu>,
	<daniel.almeida@collabora.com>, "Fiona Behrens" <me@kloenk.dev>
Subject: Re: [PATCH v1 2/2] rust: Add read_poll_timeout functions
Date: Wed, 13 Aug 2025 11:56:26 +0900	[thread overview]
Message-ID: <DC0YN6WQFUQY.3PKYK23ESRJQL@nvidia.com> (raw)
In-Reply-To: <20250811041039.3231548-3-fujita.tomonori@gmail.com>

On Mon Aug 11, 2025 at 1:10 PM JST, FUJITA Tomonori wrote:
> Add read_poll_timeout functions which poll periodically until a

"functions" should be the singular "function" as this patch only adds
one function.

<snip>
> +/// # Examples
> +///
> +/// ```no_run
> +/// use kernel::io::Io;
> +/// use kernel::time::{poll::read_poll_timeout, Delta};
> +///
> +/// const HW_READY: u16 = 0x01;
> +///
> +/// fn wait_for_hardware<const SIZE: usize>(io: &Io<SIZE>) -> Result<()> {
> +///     // The `op` closure reads the value of a specific status register.
> +///     let op = || -> Result<u16> { io.try_read16(0x1000) };
> +///
> +///     // The `cond` closure takes a reference to the value returned by `op`
> +///     // and checks whether the hardware is ready.
> +///     let cond = |val: &u16| *val == HW_READY;
> +///
> +///     match read_poll_timeout(op, cond, Delta::from_millis(50), Some(Delta::from_secs(3))) {

Is there a reason for not writing the closures directly inline? I.e.

  match read_poll_timeout(
      // The `op` closure reads the value of a specific status register.
      || io.try_read16(0x1000),
      // The `cond` closure takes a reference to the value returned by `op`
      // and checks whether the hardware is ready.
      |val| *val == HW_READY,
      Delta::from_millis(50),
      Some(Delta::from_secs(3))
  )

I think it is closer to how people will actually use this function, and
the expected types for the closures are available right in the function
definition if they need more details.

  parent reply	other threads:[~2025-08-13  2:56 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-11  4:10 [PATCH v1 0/2] rust: Add read_poll_timeout FUJITA Tomonori
2025-08-11  4:10 ` [PATCH v1 1/2] rust: Add cpu_relax() helper FUJITA Tomonori
2025-08-11  9:39   ` Alice Ryhl
2025-08-14  6:12     ` FUJITA Tomonori
2025-08-11 10:45   ` Andreas Hindborg
2025-08-11  4:10 ` [PATCH v1 2/2] rust: Add read_poll_timeout functions FUJITA Tomonori
2025-08-11  9:50   ` Alice Ryhl
2025-08-14  6:11     ` FUJITA Tomonori
2025-08-14  8:26       ` Alice Ryhl
2025-08-17  4:21       ` FUJITA Tomonori
2025-08-11  9:55   ` Danilo Krummrich
2025-08-11 10:32     ` Andreas Hindborg
2025-08-14  6:29     ` FUJITA Tomonori
2025-08-11 10:47   ` Andreas Hindborg
2025-08-13  2:56   ` Alexandre Courbot [this message]
2025-08-14  6:39     ` 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=DC0YN6WQFUQY.3PKYK23ESRJQL@nvidia.com \
    --to=acourbot@nvidia.com \
    --cc=a.hindborg@kernel.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=anna-maria@linutronix.de \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=frederic@kernel.org \
    --cc=fujita.tomonori@gmail.com \
    --cc=gary@garyguo.net \
    --cc=jstultz@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=lyude@redhat.com \
    --cc=me@kloenk.dev \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=sboyd@kernel.org \
    --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 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).