Re: [PATCH RFC 02/20] rust_binder: add binderfs support to Rust binder

From: Alice Ryhl
Date: Wed Nov 08 2023 - 05:25:28 EST


Benno Lossin <benno.lossin@xxxxxxxxx> writes:
> On 01.11.23 19:01, Alice Ryhl wrote:
>> +/// There is one context per binder file (/dev/binder, /dev/hwbinder, etc)
>> +#[pin_data]
>> +pub(crate) struct Context {
>> + #[pin]
>> + manager: Mutex<Manager>,
>> + pub(crate) name: CString,
>> + #[pin]
>> + links: ListLinks,
>> +}
>> +
>> +kernel::list::impl_has_list_links! {
>> + impl HasListLinks<0> for Context { self.links }
>> +}
>> +kernel::list::impl_list_arc_safe! {
>> + impl ListArcSafe<0> for Context { untracked; }
>> +}
>> +kernel::list::impl_list_item! {
>> + impl ListItem<0> for Context {
>> + using ListLinks;
>> + }
>> +}
>
> I think at some point it would be worth introducing a derive macro that
> does this for us. So for example:
>
> #[pin_data]
> #[derive(HasListLinks)]
> pub(crate) struct Context {
> #[pin]
> manager: Mutex<Manager>,
> pub(crate) name: CString,
> #[pin]
> #[links]
> links: ListLinks,
> }

Sure, it would be nice to improve the ergonomics of this. However, I
don't think it's that important either. The current solution is a bit
verbose, but good enough for me.

Alice