mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 14:04:27 -04:00
i2c: rust: mark I2cAdapter methods as inline
When building the kernel using llvm-19.1.7-rust-1.85.0-x86_64, the following symbols are generated: $ nm vmlinux | grep ' _R'.*I2cAdapter | rustfilt ffffffff817ff380 T <kernel::i2c::I2cAdapter>::get ffffffff817ff400 T <kernel::i2c::I2cAdapter as kernel::sync::aref::AlwaysRefCounted>::dec_ref ffffffff817ff3e0 T <kernel::i2c::I2cAdapter as kernel::sync::aref::AlwaysRefCounted>::inc_ref However, these Rust symbols are trivial wrappers around the `i2c_get_adapter` and `i2c_put_adapter` functions. It doesn't make sense to go through a trivial wrapper for these functions. Link: https://github.com/Rust-for-Linux/linux/issues/1145 Suggested-by: Alice Ryhl <aliceryhl@google.com> Signed-off-by: Nicolás Antinori <nico.antinori.7@gmail.com> Reviewed-by: Onur Özkan <work@onurozkan.dev> Reviewed-by: Igor Korotin <igor.korotin@linux.dev> Signed-off-by: Igor Korotin <igor.korotin@linux.dev>
This commit is contained in:
committed by
Igor Korotin
parent
7a79b02dd1
commit
b5fa55ad00
@@ -404,6 +404,7 @@ pub fn index(&self) -> i32 {
|
||||
}
|
||||
|
||||
/// Gets pointer to an `i2c_adapter` by index.
|
||||
#[inline]
|
||||
pub fn get(index: i32) -> Result<ARef<Self>> {
|
||||
// SAFETY: `index` must refer to a valid I2C adapter; the kernel
|
||||
// guarantees that `i2c_get_adapter(index)` returns either a valid
|
||||
@@ -425,11 +426,13 @@ pub fn get(index: i32) -> Result<ARef<Self>> {
|
||||
|
||||
// SAFETY: Instances of `I2cAdapter` are always reference-counted.
|
||||
unsafe impl AlwaysRefCounted for I2cAdapter {
|
||||
#[inline]
|
||||
fn inc_ref(&self) {
|
||||
// SAFETY: The existence of a shared reference guarantees that the refcount is non-zero.
|
||||
unsafe { bindings::i2c_get_adapter(self.index()) };
|
||||
}
|
||||
|
||||
#[inline]
|
||||
unsafe fn dec_ref(obj: NonNull<Self>) {
|
||||
// SAFETY: The safety requirements guarantee that the refcount is non-zero.
|
||||
unsafe { bindings::i2c_put_adapter(obj.as_ref().as_raw()) }
|
||||
|
||||
Reference in New Issue
Block a user