Rust for Linux List
 help / color / mirror / Atom feed
From: Alice Ryhl <aliceryhl@google.com>
To: "Paul E. McKenney" <paulmck@kernel.org>
Cc: "Onur Özkan" <work@onurozkan.dev>,
	rcu@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-kernel@vger.kernel.org, ojeda@kernel.org, boqun@kernel.org,
	gary@garyguo.net, bjorn3_gh@protonmail.com, lossin@kernel.org,
	a.hindborg@kernel.org, tmgross@umich.edu, dakr@kernel.org,
	peterz@infradead.org, fujita.tomonori@gmail.com,
	tamird@kernel.org, jiangshanlai@gmail.com, josh@joshtriplett.org,
	rostedt@goodmis.org, mathieu.desnoyers@efficios.com
Subject: Re: [PATCH v5 1/4] rust: helpers: add SRCU helpers
Date: Thu, 28 May 2026 06:23:50 +0000	[thread overview]
Message-ID: <ahffdv0RpIhhagc4@google.com> (raw)
In-Reply-To: <05906890-cf06-414c-a625-02f9d7150d57@paulmck-laptop>

On Wed, May 27, 2026 at 04:03:30PM -0700, Paul E. McKenney wrote:
> On Wed, May 27, 2026 at 08:40:42PM +0300, Onur Özkan wrote:
> > Add helper wrappers for SRCU functions that are exposed to Rust
> > through generated bindings.
> > 
> > Signed-off-by: Onur Özkan <work@onurozkan.dev>
> > ---
> >  rust/helpers/helpers.c |  1 +
> >  rust/helpers/srcu.c    | 34 ++++++++++++++++++++++++++++++++++
> >  2 files changed, 35 insertions(+)
> >  create mode 100644 rust/helpers/srcu.c
> > 
> > diff --git a/rust/helpers/helpers.c b/rust/helpers/helpers.c
> > index 625921e27dfb..f3562d3b3888 100644
> > --- a/rust/helpers/helpers.c
> > +++ b/rust/helpers/helpers.c
> > @@ -88,6 +88,7 @@
> >  #include "signal.c"
> >  #include "slab.c"
> >  #include "spinlock.c"
> > +#include "srcu.c"
> >  #include "sync.c"
> >  #include "task.c"
> >  #include "time.c"
> > diff --git a/rust/helpers/srcu.c b/rust/helpers/srcu.c
> > new file mode 100644
> > index 000000000000..79dd24a104ef
> > --- /dev/null
> > +++ b/rust/helpers/srcu.c
> > @@ -0,0 +1,34 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +
> > +#include <linux/srcu.h>
> > +
> > +__rust_helper int rust_helper_init_srcu_struct_with_key(struct srcu_struct *ssp,
> > +							const char *name,
> > +							struct lock_class_key *key)
> > +{
> > +#ifdef CONFIG_DEBUG_LOCK_ALLOC
> > +	return __init_srcu_struct(ssp, name, key);
> > +#else /* !CONFIG_DEBUG_LOCK_ALLOC */
> > +	return init_srcu_struct(ssp);
> > +#endif /* CONFIG_DEBUG_LOCK_ALLOC */
> > +}
> 
> Similar to Boqun's feedback on a later patch, could you please make
> these be two functions under the corresponding legs of the existing
> CONFIG_DEBUG_LOCK_ALLOC #ifdef in include/linux/srcu.h?  You are including
> that file above, so it should work well.
> 
> Actually, you could just name thefunction __init_srcu_struct(), use the
> existing definition under #ifdef CONFIG_DEBUG_LOCK_ALLOC, and just create
> the simple wrapper in the other leg of this #ifdef.  That would be more
> aligned with the Linux-kernel coding guidelines and also be less code.
> 
> Or is the "rust_helper_" prefix mandatory?  If so, you could make
> rust_helper_init_srcu_struct() be a wrapper for __init_srcu_struct()
> in this file, then just define __init_srcu_struct() as a wrapper around
> init_srcu_struct() in the !CONFIG_DEBUG_LOCK_ALLOC leg of the #ifdef
> in include/linux/srcu.h.

The rust_helper_ prefix helps avoid duplicate symbol errors.

When you invoke `bindings::foo` then it will prefer to call the symbol
actually called `foo()`, but if there is no `foo` symbol, then it will
fall back to `rust_helper_foo()`.

This is useful because many symbols are only marked inline under some
configurations, and this makes it automatically pick the right one
depending on whether the real symbol exists or not.

Alice

  parent reply	other threads:[~2026-05-28  6:23 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-27 17:40 [PATCH v5 0/4] rust: add SRCU abstraction Onur Özkan
2026-05-27 17:40 ` [PATCH v5 1/4] rust: helpers: add SRCU helpers Onur Özkan
2026-05-27 23:03   ` Paul E. McKenney
2026-05-28  6:13     ` Onur Özkan
2026-05-28  6:23     ` Alice Ryhl [this message]
2026-05-28 14:18       ` Paul E. McKenney
2026-05-27 17:40 ` [PATCH v5 2/4] srcu: expose srcu_readers_active() Onur Özkan
2026-05-27 19:37   ` Boqun Feng
2026-05-27 23:04     ` Paul E. McKenney
2026-05-27 17:40 ` [PATCH v5 3/4] rust: sync: add SRCU abstraction Onur Özkan
2026-05-27 17:40 ` [PATCH v5 4/4] MAINTAINERS: add Rust SRCU files to SRCU entry Onur Özkan
2026-05-27 23:05   ` Paul E. McKenney

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=ahffdv0RpIhhagc4@google.com \
    --to=aliceryhl@google.com \
    --cc=a.hindborg@kernel.org \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=dakr@kernel.org \
    --cc=fujita.tomonori@gmail.com \
    --cc=gary@garyguo.net \
    --cc=jiangshanlai@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=ojeda@kernel.org \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rcu@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tamird@kernel.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox