linux/rust/kernel
Danilo Krummrich bfcaf4e8ae rust: io: macro_export io_define_read!() and io_define_write!()
Currently, the define_read!() and define_write!() I/O macros are crate
public. The only user outside of the I/O module is PCI (for the
configurations space I/O backend). Consequently, when CONFIG_PCI=n this
causes a compile time warning [1].

In order to fix this, rename the macros to io_define_read!() and
io_define_write!() and use #[macro_export] to export them.

This is better than making the crate public visibility conditional, as
eventually subsystems will have their own crate.

Also, I/O backends are valid to be implemented by drivers as well. For
instance, there are devices (such as GPUs) that run firmware which
allows to program other devices only accessible through the primary
device through indirect I/O.

Since the macros are now public, also add the corresponding
documentation.

Fixes: 121d87b28e ("rust: io: separate generic I/O helpers from MMIO implementation")
Reported-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Closes: https://lore.kernel.org/driver-core/CANiq72khOYkt6t5zwMvSiyZvWWHMZuNCMERXu=7K=_5tT-8Pgg@mail.gmail.com/ [1]
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
Link: https://patch.msgid.link/20260216131534.65008-1-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
2026-02-23 00:54:02 +01:00
..
alloc
block rust: block: mq: use pin_init::zeroed() for tag_set 2026-01-21 07:37:15 -07:00
debugfs Driver core changes for 7.0-rc1 2026-02-11 17:43:59 -08:00
device rust: device: replace `kernel::c_str!` with C-Strings 2025-12-22 17:30:24 +01:00
drm rust/drm: Fix Registration::{new,new_foreign_owned}() docs 2026-01-23 14:18:07 -05:00
fs
io Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
iommu rust: iommu: fix `srctree` link warning 2026-01-22 09:19:30 +01:00
irq Rust fixes for v7.0-rc1 2026-02-22 08:43:31 -08:00
list Rust fixes for v7.0-rc1 2026-02-22 08:43:31 -08:00
mm
net rust: net: replace `kernel::c_str!` with C-Strings 2026-01-05 16:32:39 -08:00
num rust: num: bounded: clean __new documentation and comments 2026-01-26 02:53:16 +01:00
pci rust: io: macro_export io_define_read!() and io_define_write!() 2026-02-23 00:54:02 +01:00
str
sync Char/Misc/IIO driver changes for 7.0-rc1 2026-02-17 09:11:04 -08:00
time
.gitignore
acpi.rs
alloc.rs
auxiliary.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
bitmap.rs
bits.rs rust: bits: always inline functions using build_assert with arguments 2026-01-18 20:40:11 +01:00
block.rs
bug.rs rust: bug: Support DEBUG_BUGVERBOSE_DETAILED option 2026-01-30 05:18:17 +01:00
build_assert.rs rust: build_assert: add instructions for use with function arguments 2026-01-19 01:13:22 +01:00
clk.rs rust: clk: replace `kernel::c_str!` with C-Strings 2026-01-30 01:08:24 +01:00
configfs.rs rust: configfs: replace `kernel::c_str!` with C-Strings 2026-01-15 09:26:49 +01:00
cpu.rs
cpufreq.rs rust: cpufreq: replace `kernel::c_str!` with C-Strings 2026-01-27 11:21:22 +05:30
cpumask.rs rust: cpumask: rename methods of Cpumask for clarity and consistency 2026-01-27 11:21:23 +05:30
cred.rs
debugfs.rs rust: debugfs: Use kernel Atomic type in docs example 2026-01-19 15:02:46 +01:00
device.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
device_id.rs rust: device_id: replace incorrect word in safety documentation 2025-12-29 14:09:18 +01:00
devres.rs rust: devres: fix race condition due to nesting 2026-02-07 01:03:49 +01:00
dma.rs rust: dma: allow drivers to tune max segment size 2026-01-28 16:53:24 +01:00
driver.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
error.rs
faux.rs rust: faux: use "kernel vertical" style for imports 2026-01-07 19:56:00 +01:00
firmware.rs
fmt.rs rust: fmt: Fix grammar in Adapter description 2026-01-04 23:51:35 +01:00
fs.rs
generated_arch_reachable_asm.rs.S
generated_arch_static_branch_asm.rs.S
generated_arch_warn_asm.rs.S
i2c.rs Rust changes for v6.20 / v7.0 2026-02-10 11:53:01 -08:00
id_pool.rs
impl_flags.rs rust: add `impl_flags!` macro for defining common bitflag operations 2026-02-02 08:09:11 +01:00
init.rs rust: init: use `#[default_error(err)]` for the initializer macros 2026-01-17 10:51:42 +01:00
io.rs rust: io: macro_export io_define_read!() and io_define_write!() 2026-02-23 00:54:02 +01:00
ioctl.rs
iov.rs
irq.rs
jump_label.rs
kunit.rs rust: kunit: use `pin_init::zeroed` instead of custom null value 2026-01-28 13:44:17 +01:00
lib.rs Driver core changes for 7.0-rc1 2026-02-11 17:43:59 -08:00
list.rs
maple_tree.rs rust: maple_tree: rcu_read_lock() in destructor to silence lockdep 2025-12-23 11:23:15 -08:00
miscdevice.rs rust: redefine `bindings::compat_ptr_ioctl` in Rust 2026-01-16 14:54:11 +01:00
mm.rs
module_param.rs Modules changes for v6.19-rc1 2025-12-06 08:27:07 -08:00
net.rs
num.rs
of.rs
opp.rs
page.rs rust: Return Option from page_align and ensure no usize overflow 2025-12-29 15:32:53 +01:00
pci.rs rust: pci: re-export ConfigSpace 2026-02-01 22:18:24 +01:00
pid_namespace.rs
platform.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
prelude.rs
print.rs rust: print: Add pr_*_once macros 2026-01-30 05:47:05 +01:00
processor.rs
ptr.rs rust: ptr: replace unneeded use of `build_assert` 2026-01-19 01:13:22 +01:00
pwm.rs rust: pwm: Simplify to_result call sites and unsafe blocks 2026-01-20 18:49:58 +01:00
rbtree.rs Rust changes for v6.20 / v7.0 2026-02-10 11:53:01 -08:00
regulator.rs rust: regulator: replace `kernel::c_str!` with C-Strings 2025-12-22 14:52:12 +00:00
revocable.rs
safety.rs rust: safety: introduce `unsafe_precondition_assert!` macro 2026-02-02 08:10:48 +01:00
scatterlist.rs rust: scatterlist: Update ARef imports to use sync::aref 2025-12-18 17:25:45 +01:00
security.rs
seq_file.rs rust: seq_file: replace `kernel::c_str!` with C-Strings 2026-01-29 15:32:40 +01:00
sizes.rs
slice.rs
soc.rs rust: Add soc_device support 2025-12-28 12:43:56 +01:00
static_assert.rs
std_vendor.rs
str.rs Modules changes for v6.19-rc1 2025-12-06 08:27:07 -08:00
sync.rs rust: sync: Replace `kernel::c_str!` with C-Strings 2026-01-28 09:25:44 +01:00
task.rs rust: task: restrict Task::group_leader() to current 2026-01-26 19:07:13 -08:00
time.rs
tracepoint.rs
transmute.rs rust: transmute: implement FromBytes and AsBytes for inhabited ZSTs 2026-01-26 03:16:31 +01:00
types.rs
uaccess.rs
usb.rs USB / Thunderbolt changes for 7.0-rc1 2026-02-17 09:36:43 -08:00
workqueue.rs
xarray.rs