2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/rust/helpers
FUJITA Tomonori dff64b0727 rust: Add warn_on macro
Add warn_on macro, uses the BUG/WARN feature (lib/bug.c) via assembly
for x86_64/arm64/riscv.

The current Rust code simply wraps BUG() macro but doesn't provide the
proper debug information. The BUG/WARN feature can only be used from
assembly.

This uses the assembly code exported by the C side via ARCH_WARN_ASM
macro. To avoid duplicating the assembly code, this approach follows
the same strategy as the static branch code: it generates the assembly
code for Rust using the C preprocessor at compile time.

Similarly, ARCH_WARN_REACHABLE is also used at compile time to
generate the assembly code; objtool's reachable annotation code. It's
used for only architectures that use objtool.

For now, Loongarch and arm just use a wrapper for WARN macro.

UML doesn't use the assembly BUG/WARN feature; just wrapping generic
BUG/WARN functions implemented in C works.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Link: https://lore.kernel.org/r/20250502094537.231725-5-fujita.tomonori@gmail.com
[ Avoid evaluating the condition twice (a good idea in general,
  but it also matches the C side). Simplify with `as_char_ptr()`
  to avoid a cast. Cast to `ffi` integer types for
  `warn_slowpath_fmt`. Avoid cast for `null()`. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2025-07-23 02:05:58 +02:00
..
auxiliary.c rust: auxiliary: add auxiliary device / driver abstractions 2025-04-19 10:54:25 +02:00
blk.c
bug.c rust: Add warn_on macro 2025-07-23 02:05:58 +02:00
build_assert.c
build_bug.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
clk.c rust: clk: Add helpers for Rust code 2025-05-19 12:55:40 +05:30
completion.c rust: completion: implement initial abstraction 2025-06-13 23:46:56 +02:00
cpu.c rust: cpu: Add CpuId::current() to retrieve current CPU ID 2025-06-12 10:31:28 +05:30
cpufreq.c rust: cpufreq: Add initial abstractions for cpufreq framework 2025-05-20 11:21:10 +05:30
cpumask.c rust: cpumask: Add few more helpers 2025-05-19 12:55:40 +05:30
cred.c rust: cred: add Rust abstraction for struct cred 2024-09-30 13:02:28 +02:00
device.c rust: add devres abstraction 2024-12-20 17:19:26 +01:00
dma.c rust: helpers: Add dma_alloc_attrs() and dma_free_attrs() 2025-04-15 23:06:03 +02:00
drm.c rust: drm: gem: Add GEM object abstraction 2025-04-28 10:08:23 +02:00
err.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
fs.c rust: file: add Rust abstraction for struct file 2024-09-30 13:02:28 +02:00
helpers.c rust-timekeeping for v6.17 2025-07-16 23:45:08 +02:00
io.c rust: helpers: Remove volatile qualifier from io helpers 2025-04-15 23:03:00 +02:00
jump_label.c rust: add static_branch_unlikely for static_key_false 2024-11-04 16:21:44 -05:00
kunit.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
mm.c mm: rust: add lock_vma_under_rcu 2025-05-11 17:48:24 -07:00
mutex.c Generic: 2025-06-02 12:24:58 -07:00
page.c
pci.c rust: pci: impl TryFrom<&Device> for &pci::Device 2025-04-19 10:20:16 +02:00
pid_namespace.c rust: add PidNamespace 2024-10-08 15:44:36 +02:00
platform.c rust: platform: impl TryFrom<&Device> for &platform::Device 2025-04-19 10:20:25 +02:00
rbtree.c rust: rbtree: add red-black tree implementation backed by the C version 2024-08-31 17:35:08 +02:00
rcu.c rust: add rcu abstraction 2024-12-20 17:19:26 +01:00
refcount.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
security.c rust: replace lsm context+len with lsm_context 2024-12-04 15:02:29 -05:00
signal.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
slab.c rust: alloc: implement KVmalloc allocator 2024-10-15 22:56:59 +02:00
spinlock.c rust: sync: Add lock::Backend::assert_is_held() 2024-12-19 14:04:42 -08:00
sync.c rust: lockdep: Use Pin for all LockClassKey usages 2025-03-08 00:55:04 +01:00
task.c Rust changes for v6.13 2024-11-26 14:00:26 -08:00
time.c rust: time: Add wrapper for fsleep() function 2025-06-30 13:22:05 +02:00
uaccess.c
vmalloc.c rust: alloc: implement Vmalloc allocator 2024-10-15 22:56:59 +02:00
wait.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
workqueue.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
xarray.c rust: xarray: Add an abstraction for XArray 2025-05-01 11:37:59 +02:00