[PATCH] rust: move #define __rust_helper out of atomic.c

Alice Ryhl posted 1 patch 1 month ago
rust/helpers/atomic.c                     | 5 -----
rust/helpers/helpers.c                    | 2 ++
scripts/atomic/gen-rust-atomic-helpers.sh | 5 -----
3 files changed, 2 insertions(+), 10 deletions(-)
[PATCH] rust: move #define __rust_helper out of atomic.c
Posted by Alice Ryhl 1 month ago
We were lucky that atomic.c is the first file in helpers.c so that we
may use the define from it in the follow-up headers [1], but this is
fragile. Thus, move it to helpers.c.

Link: https://lore.kernel.org/r/20260105-define-rust-helper-v2-0-51da5f454a67@google.com [1]
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
---
When I send the next version of [PATCH 0/4] Inline helpers into Rust
without full LTO, it will be based on top of this patch. Regardless of
the timelines for the other series, I think it would be good to merge
this patch soon.
---
 rust/helpers/atomic.c                     | 5 -----
 rust/helpers/helpers.c                    | 2 ++
 scripts/atomic/gen-rust-atomic-helpers.sh | 5 -----
 3 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/rust/helpers/atomic.c b/rust/helpers/atomic.c
index cf06b7ef9a1c559e8d7bdfc2bcd2aeb8951c29d1..a48605628ed73ac32aae2e6280481407a670e88f 100644
--- a/rust/helpers/atomic.c
+++ b/rust/helpers/atomic.c
@@ -11,11 +11,6 @@
 
 #include <linux/atomic.h>
 
-// TODO: Remove this after INLINE_HELPERS support is added.
-#ifndef __rust_helper
-#define __rust_helper
-#endif
-
 __rust_helper int
 rust_helper_atomic_read(const atomic_t *v)
 {
diff --git a/rust/helpers/helpers.c b/rust/helpers/helpers.c
index 79c72762ad9c4b473971e6210c9577860d2e2b08..a86fab743d1dc951373e5ff05278c6c7872ef491 100644
--- a/rust/helpers/helpers.c
+++ b/rust/helpers/helpers.c
@@ -7,6 +7,8 @@
  * Sorted alphabetically.
  */
 
+#define __rust_helper
+
 #include "atomic.c"
 #include "auxiliary.c"
 #include "barrier.c"
diff --git a/scripts/atomic/gen-rust-atomic-helpers.sh b/scripts/atomic/gen-rust-atomic-helpers.sh
index 45b1e100ed7c63108ee6cb07e48a17668f860d47..a3732153af29f415e397e17cab6e75cb5d7efafc 100755
--- a/scripts/atomic/gen-rust-atomic-helpers.sh
+++ b/scripts/atomic/gen-rust-atomic-helpers.sh
@@ -47,11 +47,6 @@ cat << EOF
 
 #include <linux/atomic.h>
 
-// TODO: Remove this after INLINE_HELPERS support is added.
-#ifndef __rust_helper
-#define __rust_helper
-#endif
-
 EOF
 
 grep '^[a-z]' "$1" | while read name meta args; do

---
base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
change-id: 20260107-move-rust_helper-define-63edcfb2bff3

Best regards,
-- 
Alice Ryhl <aliceryhl@google.com>
Re: [PATCH] rust: move #define __rust_helper out of atomic.c
Posted by Boqun Feng 1 month ago
On Wed, Jan 07, 2026 at 02:14:13PM +0000, Alice Ryhl wrote:
> We were lucky that atomic.c is the first file in helpers.c so that we
> may use the define from it in the follow-up headers [1], but this is
> fragile. Thus, move it to helpers.c.
> 

I reword a bit to make it clear that we need this changes for inline
helpers:

	In order to support inline helpers [1], we need to have __rust_helper
	defined for all helper files. Current we are lucky that atomic.c is the
	first file in helpers.c, but this is fragile. Thus, move it to
	helpers.c.

Let me know if you have futher suggestion.

> Link: https://lore.kernel.org/r/20260105-define-rust-helper-v2-0-51da5f454a67@google.com [1]
> Signed-off-by: Alice Ryhl <aliceryhl@google.com>
> ---
> When I send the next version of [PATCH 0/4] Inline helpers into Rust
> without full LTO, it will be based on top of this patch. Regardless of
> the timelines for the other series, I think it would be good to merge
> this patch soon.
> ---
>  rust/helpers/atomic.c                     | 5 -----
>  rust/helpers/helpers.c                    | 2 ++
>  scripts/atomic/gen-rust-atomic-helpers.sh | 5 -----
>  3 files changed, 2 insertions(+), 10 deletions(-)
> 
> diff --git a/rust/helpers/atomic.c b/rust/helpers/atomic.c
> index cf06b7ef9a1c559e8d7bdfc2bcd2aeb8951c29d1..a48605628ed73ac32aae2e6280481407a670e88f 100644
> --- a/rust/helpers/atomic.c
> +++ b/rust/helpers/atomic.c
> @@ -11,11 +11,6 @@
>  
>  #include <linux/atomic.h>
>  
> -// TODO: Remove this after INLINE_HELPERS support is added.
> -#ifndef __rust_helper
> -#define __rust_helper
> -#endif
> -
>  __rust_helper int
>  rust_helper_atomic_read(const atomic_t *v)
>  {
> diff --git a/rust/helpers/helpers.c b/rust/helpers/helpers.c
> index 79c72762ad9c4b473971e6210c9577860d2e2b08..a86fab743d1dc951373e5ff05278c6c7872ef491 100644
> --- a/rust/helpers/helpers.c
> +++ b/rust/helpers/helpers.c
> @@ -7,6 +7,8 @@
>   * Sorted alphabetically.
>   */
>  
> +#define __rust_helper
> +
>  #include "atomic.c"
>  #include "auxiliary.c"
>  #include "barrier.c"
> diff --git a/scripts/atomic/gen-rust-atomic-helpers.sh b/scripts/atomic/gen-rust-atomic-helpers.sh
> index 45b1e100ed7c63108ee6cb07e48a17668f860d47..a3732153af29f415e397e17cab6e75cb5d7efafc 100755
> --- a/scripts/atomic/gen-rust-atomic-helpers.sh
> +++ b/scripts/atomic/gen-rust-atomic-helpers.sh

whenever we changed scripts/atomic/* we need to rerun
scripts/atomic/gen-atomics.sh to calculate a new hash value of the
generated files, so we are missing this:

diff --git a/rust/helpers/atomic.c b/rust/helpers/atomic.c
index a48605628ed7..4b24eceef5fc 100644
--- a/rust/helpers/atomic.c
+++ b/rust/helpers/atomic.c
@@ -1032,4 +1032,4 @@ rust_helper_atomic64_dec_if_positive(atomic64_t *v)
 }

 #endif /* _RUST_ATOMIC_API_H */
-// 615a0e0c98b5973a47fe4fa65e92935051ca00ed
+// e4edb6174dd42a265284958f00a7cea7ddb464b1

I queued with this change for the rust-sync PR of 7.0, thanks!

Regards,
Boqun

> @@ -47,11 +47,6 @@ cat << EOF
>  
>  #include <linux/atomic.h>
>  
> -// TODO: Remove this after INLINE_HELPERS support is added.
> -#ifndef __rust_helper
> -#define __rust_helper
> -#endif
> -
>  EOF
>  
>  grep '^[a-z]' "$1" | while read name meta args; do
> 
> ---
> base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
> change-id: 20260107-move-rust_helper-define-63edcfb2bff3
> 
> Best regards,
> -- 
> Alice Ryhl <aliceryhl@google.com>
>
Re: [PATCH] rust: move #define __rust_helper out of atomic.c
Posted by Alice Ryhl 1 month ago
On Wed, Jan 7, 2026 at 5:10 PM Boqun Feng <boqun.feng@gmail.com> wrote:
>
> On Wed, Jan 07, 2026 at 02:14:13PM +0000, Alice Ryhl wrote:
> > We were lucky that atomic.c is the first file in helpers.c so that we
> > may use the define from it in the follow-up headers [1], but this is
> > fragile. Thus, move it to helpers.c.
> >
>
> I reword a bit to make it clear that we need this changes for inline
> helpers:
>
>         In order to support inline helpers [1], we need to have __rust_helper
>         defined for all helper files. Current we are lucky that atomic.c is the
>         first file in helpers.c, but this is fragile. Thus, move it to
>         helpers.c.
>
> Let me know if you have futher suggestion.

Sounds good to me.

> > diff --git a/scripts/atomic/gen-rust-atomic-helpers.sh b/scripts/atomic/gen-rust-atomic-helpers.sh
> > index 45b1e100ed7c63108ee6cb07e48a17668f860d47..a3732153af29f415e397e17cab6e75cb5d7efafc 100755
> > --- a/scripts/atomic/gen-rust-atomic-helpers.sh
> > +++ b/scripts/atomic/gen-rust-atomic-helpers.sh
>
> whenever we changed scripts/atomic/* we need to rerun
> scripts/atomic/gen-atomics.sh to calculate a new hash value of the
> generated files, so we are missing this:

I tried running it but I got an error from grep about no file input or
something like that. I couldn't figure out what argument I needed to
pass to the script.

> diff --git a/rust/helpers/atomic.c b/rust/helpers/atomic.c
> index a48605628ed7..4b24eceef5fc 100644
> --- a/rust/helpers/atomic.c
> +++ b/rust/helpers/atomic.c
> @@ -1032,4 +1032,4 @@ rust_helper_atomic64_dec_if_positive(atomic64_t *v)
>  }
>
>  #endif /* _RUST_ATOMIC_API_H */
> -// 615a0e0c98b5973a47fe4fa65e92935051ca00ed
> +// e4edb6174dd42a265284958f00a7cea7ddb464b1
>
> I queued with this change for the rust-sync PR of 7.0, thanks!

Thanks!

Alice
Re: [PATCH] rust: move #define __rust_helper out of atomic.c
Posted by Boqun Feng 1 month ago
On Wed, Jan 07, 2026 at 06:20:02PM +0100, Alice Ryhl wrote:
[...]
> > whenever we changed scripts/atomic/* we need to rerun
> > scripts/atomic/gen-atomics.sh to calculate a new hash value of the
> > generated files, so we are missing this:
> 
> I tried running it but I got an error from grep about no file input or
> something like that. I couldn't figure out what argument I needed to
> pass to the script.
> 

$ cd <the kernel source>
$ scripts/atomic/gen-atomics.sh

works for me (on my machine ;-))

Regards,
Boqun
[tip: locking/core] rust: helpers: Move #define __rust_helper out of atomic.c
Posted by tip-bot2 for Alice Ryhl 3 weeks, 4 days ago
The following commit has been merged into the locking/core branch of tip:

Commit-ID:     abf2111d8d900c834993d443f59b836291b8d0fc
Gitweb:        https://git.kernel.org/tip/abf2111d8d900c834993d443f59b836291b8d0fc
Author:        Alice Ryhl <aliceryhl@google.com>
AuthorDate:    Wed, 07 Jan 2026 14:14:13 
Committer:     Boqun Feng <boqun.feng@gmail.com>
CommitterDate: Fri, 09 Jan 2026 19:01:42 +08:00

rust: helpers: Move #define __rust_helper out of atomic.c

In order to support inline helpers [1], we need to have __rust_helper
defined for all helper files. Current we are lucky that atomic.c is the
first file in helpers.c, but this is fragile. Thus, move it to
helpers.c.

[boqun: Reword the commit message and apply file hash changes]

Link: https://lore.kernel.org/r/20260105-define-rust-helper-v2-0-51da5f454a67@google.com [1]
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Link: https://patch.msgid.link/20260107-move-rust_helper-define-v1-1-4109d58ef275@google.com
---
 rust/helpers/atomic.c                     | 7 +------
 rust/helpers/helpers.c                    | 2 ++
 scripts/atomic/gen-rust-atomic-helpers.sh | 5 -----
 3 files changed, 3 insertions(+), 11 deletions(-)

diff --git a/rust/helpers/atomic.c b/rust/helpers/atomic.c
index cf06b7e..4b24ece 100644
--- a/rust/helpers/atomic.c
+++ b/rust/helpers/atomic.c
@@ -11,11 +11,6 @@
 
 #include <linux/atomic.h>
 
-// TODO: Remove this after INLINE_HELPERS support is added.
-#ifndef __rust_helper
-#define __rust_helper
-#endif
-
 __rust_helper int
 rust_helper_atomic_read(const atomic_t *v)
 {
@@ -1037,4 +1032,4 @@ rust_helper_atomic64_dec_if_positive(atomic64_t *v)
 }
 
 #endif /* _RUST_ATOMIC_API_H */
-// 615a0e0c98b5973a47fe4fa65e92935051ca00ed
+// e4edb6174dd42a265284958f00a7cea7ddb464b1
diff --git a/rust/helpers/helpers.c b/rust/helpers/helpers.c
index 15d7557..a3c42e5 100644
--- a/rust/helpers/helpers.c
+++ b/rust/helpers/helpers.c
@@ -7,6 +7,8 @@
  * Sorted alphabetically.
  */
 
+#define __rust_helper
+
 #include "atomic.c"
 #include "atomic_ext.c"
 #include "auxiliary.c"
diff --git a/scripts/atomic/gen-rust-atomic-helpers.sh b/scripts/atomic/gen-rust-atomic-helpers.sh
index 45b1e10..a373215 100755
--- a/scripts/atomic/gen-rust-atomic-helpers.sh
+++ b/scripts/atomic/gen-rust-atomic-helpers.sh
@@ -47,11 +47,6 @@ cat << EOF
 
 #include <linux/atomic.h>
 
-// TODO: Remove this after INLINE_HELPERS support is added.
-#ifndef __rust_helper
-#define __rust_helper
-#endif
-
 EOF
 
 grep '^[a-z]' "$1" | while read name meta args; do