Re: [PATCH v2 2/9] rust: device: implement impl_device_context_into_aref!
From: Benno Lossin
Date: Mon Apr 14 2025 - 06:28:45 EST
On Sun Apr 13, 2025 at 7:36 PM CEST, Danilo Krummrich wrote:
> Implement a macro to implement all From conversions of a certain device
> to ARef<Device>.
>
> This avoids unnecessary boiler plate code for every device
> implementation.
>
> Signed-off-by: Danilo Krummrich <dakr@xxxxxxxxxx>
One nit below, with that fixed:
Reviewed-by: Benno Lossin <benno.lossin@xxxxxxxxx>
> ---
> rust/kernel/device.rs | 21 +++++++++++++++++++++
> rust/kernel/pci.rs | 7 +------
> rust/kernel/platform.rs | 9 ++-------
> 3 files changed, 24 insertions(+), 13 deletions(-)
>
> diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs
> index 7cb6f0fc005d..26e71224460b 100644
> --- a/rust/kernel/device.rs
> +++ b/rust/kernel/device.rs
> @@ -279,6 +279,27 @@ macro_rules! impl_device_context_deref {
> };
> }
>
> +#[doc(hidden)]
> +#[macro_export]
> +macro_rules! __impl_device_context_into_aref {
> + ($src:ty, $device:tt) => {
> + impl core::convert::From<&$device<$src>> for $crate::types::ARef<$device> {
Missing `::` in front of `core`.
> + fn from(dev: &$device<$src>) -> Self {
> + (&**dev).into()
> + }
> + }
> + };
> +}
> +
> +/// Implement [`core::convert::From`], such that all `&Device<Ctx>` can be converted to an
> +/// `ARef<Device>`.
> +#[macro_export]
> +macro_rules! impl_device_context_into_aref {
> + ($device:tt) => {
> + kernel::__impl_device_context_into_aref!($crate::device::Core, $device);
> + };
> +}
> +
> #[doc(hidden)]
> #[macro_export]
> macro_rules! dev_printk {