linux/rust/kernel
Tamir Duberstein c77f85b347 rust: list: remove OFFSET constants
Replace `ListLinksSelfPtr::LIST_LINKS_SELF_PTR_OFFSET` with `unsafe fn
raw_get_self_ptr` which returns a pointer to the field rather than
requiring the caller to do pointer arithmetic.

Implement `HasListLinks::raw_get_list_links` in `impl_has_list_links!`,
narrowing the interface of `HasListLinks` and replacing pointer
arithmetic with `container_of!`.

Modify `impl_list_item` to also invoke `impl_has_list_links!` or
`impl_has_list_links_self_ptr!`. This is necessary to allow
`impl_list_item` to see more of the tokens used by
`impl_has_list_links{,_self_ptr}!`.

A similar API change was discussed on the hrtimer series[1].

Link: https://lore.kernel.org/all/20250224-hrtimer-v3-v6-12-rc2-v9-1-5bd3bf0ce6cc@kernel.org/ [1]
Tested-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
Link: https://lore.kernel.org/r/20250709-list-no-offset-v4-6-a429e75840a9@gmail.com
[ Fixed broken intra-doc links. Used the renamed
  `Opaque::cast_into`. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2025-07-19 23:18:18 +02:00
..
alloc Alloc & DMA changes for v6.17 2025-07-15 23:42:55 +02:00
block pin-init changes for v6.17 2025-07-13 23:05:14 +02:00
drm rust: types: add Opaque::cast_from 2025-07-15 21:01:48 +02:00
fs rust: enable clippy::ref_as_ptr lint 2025-06-22 23:09:32 +02:00
list rust: list: remove OFFSET constants 2025-07-19 23:18:18 +02:00
mm rust: enable clippy::as_underscore lint 2025-06-22 23:09:17 +02:00
net rust: enable clippy::cast_lossless lint 2025-06-22 23:09:25 +02:00
sync rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
time rust: time: Pass correct timer mode ID to hrtimer_start_range_ns 2025-07-17 00:55:35 +02:00
.gitignore rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
alloc.rs rust: alloc: add missing Markdown code spans 2025-05-25 22:58:35 +02:00
auxiliary.rs Rust changes for v6.16 2025-06-04 21:18:37 -07:00
block.rs
build_assert.rs rust: add build_error! to the prelude 2025-01-10 00:19:09 +01:00
clk.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
configfs.rs rust: types: rename Opaque::raw_get to cast_into 2025-07-15 22:26:11 +02:00
cpu.rs rust: cpu: Add CpuId::current() to retrieve current CPU ID 2025-06-12 10:31:28 +05:30
cpufreq.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
cpumask.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
cred.rs cred,rust: mark Credential methods inline 2025-03-04 17:07:49 -05:00
device.rs rust: enable clippy::ptr_as_ptr lint 2025-06-22 23:08:42 +02:00
device_id.rs rust: enable clippy::ref_as_ptr lint 2025-06-22 23:09:32 +02:00
devres.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
dma.rs Alloc & DMA changes for v6.17 2025-07-15 23:42:55 +02:00
driver.rs rust: make pin-init its own crate 2025-03-16 21:59:19 +01:00
error.rs rust: enable clippy::as_underscore lint 2025-06-22 23:09:17 +02:00
faux.rs rust/kernel/faux: mark Registration methods inline 2025-03-11 10:42:23 +01:00
firmware.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
fs.rs
generated_arch_static_branch_asm.rs.S rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
init.rs rust: types: rename Opaque::raw_get to cast_into 2025-07-15 22:26:11 +02:00
io.rs rust: io: avoid mentioning private fields in IoMem 2025-06-24 01:02:30 +02:00
ioctl.rs rust: start using the #[expect(...)] attribute 2024-10-07 21:39:57 +02:00
jump_label.rs rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
kunit.rs rust: kunit: use crate-level mapping for c_void 2025-06-24 00:55:22 +02:00
lib.rs rust: types: rename Opaque::raw_get to cast_into 2025-07-15 22:26:11 +02:00
list.rs rust: list: remove OFFSET constants 2025-07-19 23:18:18 +02:00
miscdevice.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
mm.rs mm: rust: make CONFIG_MMU ifdefs more narrow 2025-05-31 22:46:12 -07:00
net.rs
of.rs rust: enable clippy::as_underscore lint 2025-06-22 23:09:17 +02:00
opp.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
page.rs rust: page: optimize rust symbol generation for Page 2025-05-12 00:20:25 +02:00
pci.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
pid_namespace.rs rust: add PidNamespace 2024-10-08 15:44:36 +02:00
platform.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
prelude.rs rust: uaccess: use newtype for user pointers 2025-07-14 23:52:45 +02:00
print.rs rust: enable clippy::ptr_as_ptr lint 2025-06-22 23:08:42 +02:00
rbtree.rs rust: rbtree: simplify finding current in remove_current 2025-07-14 23:53:35 +02:00
revocable.rs rust: revocable: document why &T is not used in RevocableGuard 2025-06-29 18:54:54 +02:00
security.rs lsm,rust: reword "destroy" -> "release" in SecurityCtx 2025-03-04 15:44:46 -05:00
seq_file.rs rust: enable clippy::ptr_as_ptr lint 2025-06-22 23:08:42 +02:00
sizes.rs
static_assert.rs rust: use absolute paths in macros referencing core and kernel 2025-05-23 00:12:14 +02:00
std_vendor.rs rust: convert raw URLs to Markdown autolinks in comments 2025-05-12 00:20:25 +02:00
str.rs rust: enable clippy::ref_as_ptr lint 2025-06-22 23:09:32 +02:00
sync.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
task.rs rust: task: add missing Markdown code spans and intra-doc links 2025-05-25 22:58:35 +02:00
time.rs rust: time: Add wrapper for fsleep() function 2025-06-30 13:22:05 +02:00
tracepoint.rs rust: add tracepoint support 2024-11-04 16:21:44 -05:00
transmute.rs rust: kernel: move FromBytes and AsBytes traits to a new transmute module 2024-10-10 00:33:42 +02:00
types.rs rust: types: rename Opaque::raw_get to cast_into 2025-07-15 22:26:11 +02:00
uaccess.rs rust: uaccess: use newtype for user pointers 2025-07-14 23:52:45 +02:00
workqueue.rs workqueue: rust: add delayed work items 2025-07-15 22:54:52 +02:00
xarray.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00