linux/rust/helpers
Daniel Almeida 1d0d4b2851 rust: io: mem: add a generic iomem abstraction
Add a generic iomem abstraction to safely read and write ioremapped
regions. This abstraction requires a previously acquired IoRequest
instance. This makes it so that both the resource and the device match,
or, in other words, that the resource is indeed a valid resource for a
given bound device.

A subsequent patch will add the ability to retrieve IoRequest instances
from platform devices.

The reads and writes are done through IoRaw, and are thus checked either
at compile-time, if the size of the region is known at that point, or at
runtime otherwise.

Non-exclusive access to the underlying memory region is made possible to
cater to cases where overlapped regions are unavoidable.

Acked-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Daniel Almeida <daniel.almeida@collabora.com>
Link: https://lore.kernel.org/r/20250717-topics-tyr-platform_iomem-v15-2-beca780b77e3@collabora.com
[ Add #[expect(dead_code)] to avoid a temporary warning, remove
  unnecessary OF_ID_TABLE constants in doc-tests and ignore doc-tests
  for now to avoid a temporary build failure. - Danilo ]
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
2025-07-20 19:43:14 +02:00
..
auxiliary.c rust: auxiliary: use generic device drvdata accessors 2025-07-09 00:04:33 +02:00
blk.c rust: kbuild: auto generate helper exports 2024-08-19 11:09:02 +02:00
bug.c rust: kbuild: auto generate helper exports 2024-08-19 11:09:02 +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: device: add drvdata accessors 2025-07-09 00:04:33 +02:00
dma.c rust: dma: add DMA addressing capabilities 2025-07-19 19:36:51 +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: device: implement FwNode::is_of_node() 2025-06-25 18:10:12 +02:00
io.c rust: io: mem: add a generic iomem abstraction 2025-07-20 19:43:14 +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
of.c rust: device: implement FwNode::is_of_node() 2025-06-25 18:10:12 +02:00
page.c rust: kbuild: auto generate helper exports 2024-08-19 11:09:02 +02:00
pci.c rust: pci: use generic device drvdata accessors 2025-07-09 00:04:33 +02:00
pid_namespace.c rust: add PidNamespace 2024-10-08 15:44:36 +02:00
platform.c rust: platform: use generic device drvdata accessors 2025-07-09 00:04:33 +02:00
property.c rust: device: Create FwNode abstraction for accessing device properties 2025-06-12 23:56:42 +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
uaccess.c rust: kbuild: auto generate helper exports 2024-08-19 11:09:02 +02:00
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