linux/samples/rust
Zhi Wang 121d87b28e rust: io: separate generic I/O helpers from MMIO implementation
The previous Io<SIZE> type combined both the generic I/O access helpers
and MMIO implementation details in a single struct. This coupling prevented
reusing the I/O helpers for other backends, such as PCI configuration
space.

Establish a clean separation between the I/O interface and concrete
backends by separating generic I/O helpers from MMIO implementation.

Introduce a new trait hierarchy to handle different access capabilities:

- IoCapable<T>: A marker trait indicating that a backend supports I/O
  operations of a certain type (u8, u16, u32, or u64).

- Io trait: Defines fallible (try_read8, try_write8, etc.) and infallibile
  (read8, write8, etc.) I/O methods with runtime bounds checking and
  compile-time bounds checking.

- IoKnownSize trait: The marker trait for types support infallible I/O
  methods.

Move the MMIO-specific logic into a dedicated Mmio<SIZE> type that
implements the Io traits. Rename IoRaw to MmioRaw and update consumers to
use the new types.

Cc: Alexandre Courbot <acourbot@nvidia.com>
Cc: Alice Ryhl <aliceryhl@google.com>
Cc: Bjorn Helgaas <helgaas@kernel.org>
Cc: Gary Guo <gary@garyguo.net>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Signed-off-by: Zhi Wang <zhiw@nvidia.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://patch.msgid.link/20260121202212.4438-3-zhiw@nvidia.com
[ Add #[expect(unused)] to define_{read,write}!(). - Danilo ]
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
2026-01-23 21:20:11 +01:00
..
hostprogs
Kconfig rust: Add SoC Driver Sample 2025-12-28 12:44:31 +01:00
Makefile rust: Add SoC Driver Sample 2025-12-28 12:44:31 +01:00
rust_configfs.rs for-6.18/block-20250929 2025-10-02 10:16:56 -07:00
rust_debugfs_scoped.rs samples: rust: debugfs: replace kernel::c_str! with C-Strings 2025-12-22 17:30:35 +01:00
rust_debugfs.rs samples: rust: debugfs: replace kernel::c_str! with C-Strings 2025-12-22 17:30:35 +01:00
rust_dma.rs rust: driver: let probe() return impl PinInit<Self, Error> 2025-10-21 18:40:48 +02:00
rust_driver_auxiliary.rs rust: auxiliary: use "kernel vertical" style for imports 2026-01-07 19:55:49 +01:00
rust_driver_faux.rs samples: rust: faux: replace kernel::c_str! with C-Strings 2025-12-23 11:44:36 +01:00
rust_driver_i2c.rs samples: rust: add Rust I2C sample driver 2025-11-18 10:28:25 +13:00
rust_driver_pci.rs rust: io: separate generic I/O helpers from MMIO implementation 2026-01-23 21:20:11 +01:00
rust_driver_platform.rs rust: platform: use "kernel vertical" style for imports 2026-01-07 19:55:49 +01:00
rust_driver_usb.rs rust: driver: let probe() return impl PinInit<Self, Error> 2025-10-21 18:40:48 +02:00
rust_i2c_client.rs samples: rust: add Rust I2C client registration sample 2025-11-18 10:31:41 +13:00
rust_minimal.rs rust: samples: add a module parameter to the rust_minimal sample 2025-11-03 14:42:34 +01:00
rust_misc_device.rs Merge patch series "Rust support for struct iov_iter" 2025-09-06 13:27:23 +02:00
rust_print_events.c rust: samples: add tracepoint to Rust sample 2024-11-04 16:21:44 -05:00
rust_print_main.rs rust: use kernel::{fmt,prelude::fmt!} 2025-07-21 01:16:35 +02:00
rust_soc.rs rust: Add SoC Driver Sample 2025-12-28 12:44:31 +01:00