From: Zhi Wang <zhiw@nvidia.com>
To: Alexandre Courbot <acourbot@nvidia.com>
Cc: <rust-for-linux@vger.kernel.org>, <linux-pci@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <dakr@kernel.org>,
<aliceryhl@google.com>, <bhelgaas@google.com>,
<kwilczynski@kernel.org>, <ojeda@kernel.org>,
<alex.gaynor@gmail.com>, <boqun.feng@gmail.com>,
<gary@garyguo.net>, <bjorn3_gh@protonmail.com>,
<lossin@kernel.org>, <a.hindborg@kernel.org>, <tmgross@umich.edu>,
<markus.probst@posteo.de>, <helgaas@kernel.org>,
<cjia@nvidia.com>, <smitra@nvidia.com>, <ankita@nvidia.com>,
<aniketa@nvidia.com>, <kwankhede@nvidia.com>,
<targupta@nvidia.com>, <joelagnelf@nvidia.com>,
<jhubbard@nvidia.com>, <zhiwang@kernel.org>
Subject: Re: [PATCH v6 RESEND 5/7] rust: io: factor out MMIO read/write macros
Date: Fri, 14 Nov 2025 18:06:50 +0200 [thread overview]
Message-ID: <20251114180650.7f74ea13.zhiw@nvidia.com> (raw)
In-Reply-To: <DE7E7YXGLRWP.39EGH02PEV46Q@nvidia.com>
On Thu, 13 Nov 2025 16:36:47 +0900
"Alexandre Courbot" <acourbot@nvidia.com> wrote:
> I understand the intent from the commit message, but this is starting
> to look like an intricate maze of macro expansion and it might not be
> as easy for first-time readers - could you add an explanatory
> doccomment for these?
>
Sure.
> > +
> > macro_rules! define_read {
> > - (infallible, $(#[$attr:meta])* $vis:vis $name:ident,
> > $c_fn:ident -> $type_name:ty) => {
> > + (infallible, $(#[$attr:meta])* $vis:vis $name:ident,
> > $call_macro:ident, $c_fn:ident ->
> > + $type_name:ty) => {
> > /// Read IO data from a given offset known at compile time.
> > ///
> > /// Bound checks are performed on compile time, hence if
> > the offset is not known at compile @@ -135,12 +161,13 @@
> > macro_rules! define_read { $vis fn $name(&self, offset: usize) ->
> > $type_name { let addr = self.io_addr_assert::<$type_name>(offset);
> >
> > - // SAFETY: By the type invariant `addr` is a valid
> > address for MMIO operations.
> > - unsafe { bindings::$c_fn(addr as *const c_void) }
> > + // SAFETY: By the type invariant `addr` is a valid
> > address for IO operations.
> > + $call_macro!(infallible, $c_fn, self, $type_name, addr)
> > }
> > };
>
> To convey the fact that `$c_fn` is passed to `$call_macro`, how about
> changing the syntax to something like
>
> `define_read(infallible, $vis $name $call_macro($c_fn) ->
> $type_name`
>
> ?
Then the macros will look like:
define_read!(infallible, pub read32 call_mmio_read!(ioread32) -> u32);
define_write!(infallible, pub write32 call_mmio_write!(iowrite32) ->
u32);
The readability is indeed better - I’ll take that, thanks. :)
Z.
next prev parent reply other threads:[~2025-11-14 16:07 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-10 20:41 [PATCH v6 RESEND 0/7] rust: pci: add config space read/write support Zhi Wang
2025-11-10 20:41 ` [PATCH v6 RESEND 1/7] samples: rust: rust_driver_pci: use "kernel vertical" style for imports Zhi Wang
2025-11-10 20:41 ` [PATCH v6 RESEND 2/7] rust: devres: " Zhi Wang
2025-11-10 20:41 ` [PATCH v6 RESEND 3/7] rust: io: " Zhi Wang
2025-11-10 20:41 ` [PATCH v6 RESEND 4/7] rust: io: factor common I/O helpers into Io trait Zhi Wang
2025-11-13 7:36 ` Alexandre Courbot
2025-11-14 12:58 ` Alice Ryhl
2025-11-14 17:27 ` Zhi Wang
2025-11-14 18:53 ` Tamir Duberstein
2025-11-17 17:14 ` Zhi Wang
2025-11-14 20:31 ` Danilo Krummrich
2025-11-17 22:44 ` John Hubbard
2025-11-18 21:18 ` Danilo Krummrich
2025-11-18 23:43 ` John Hubbard
2025-11-10 20:41 ` [PATCH v6 RESEND 5/7] rust: io: factor out MMIO read/write macros Zhi Wang
2025-11-13 7:36 ` Alexandre Courbot
2025-11-14 16:06 ` Zhi Wang [this message]
2025-11-10 20:41 ` [PATCH v6 RESEND 6/7] rust: pci: add config space read/write support Zhi Wang
2025-11-13 7:56 ` Alexandre Courbot
2025-11-14 16:59 ` Zhi Wang
2025-11-14 0:20 ` Joel Fernandes
2025-11-17 20:28 ` Zhi Wang
2025-11-17 22:07 ` Danilo Krummrich
2025-11-10 20:41 ` [PATCH v6 RESNED 7/7] sample: rust: pci: add tests for config space routines Zhi Wang
2025-11-11 0:01 ` [PATCH v6 RESEND 0/7] rust: pci: add config space read/write support Joel Fernandes
2025-11-11 8:43 ` Zhi Wang
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=20251114180650.7f74ea13.zhiw@nvidia.com \
--to=zhiw@nvidia.com \
--cc=a.hindborg@kernel.org \
--cc=acourbot@nvidia.com \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=aniketa@nvidia.com \
--cc=ankita@nvidia.com \
--cc=bhelgaas@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=cjia@nvidia.com \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=helgaas@kernel.org \
--cc=jhubbard@nvidia.com \
--cc=joelagnelf@nvidia.com \
--cc=kwankhede@nvidia.com \
--cc=kwilczynski@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=markus.probst@posteo.de \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=smitra@nvidia.com \
--cc=targupta@nvidia.com \
--cc=tmgross@umich.edu \
--cc=zhiwang@kernel.org \
/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).