[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230906095659.906257-1-aliceryhl@google.com>
Date: Wed, 6 Sep 2023 09:56:59 +0000
From: Alice Ryhl <aliceryhl@...gle.com>
To: benno.lossin@...ton.me
Cc: alex.gaynor@...il.com, aliceryhl@...gle.com,
bjorn3_gh@...tonmail.com, boqun.feng@...il.com, gary@...yguo.net,
jiangshanlai@...il.com, linux-kernel@...r.kernel.org,
ojeda@...nel.org, patches@...ts.linux.dev,
rust-for-linux@...r.kernel.org, tj@...nel.org, wedsonaf@...il.com
Subject: Re: [PATCH v4 4/7] rust: workqueue: add helper for defining
work_struct fields
Benno Lossin <benno.lossin@...ton.me> writes:
>> +impl<T: ?Sized, const ID: u64> Work<T, ID> {
>> + /// Creates a new instance of [`Work`].
>> + #[inline]
>> + #[allow(clippy::new_ret_no_self)]
>> + pub fn new(name: &'static CStr, key: &'static LockClassKey) -> impl PinInit<Self>
>> + where
>> + T: WorkItem<ID>,
>> + {
>> + // SAFETY: The `WorkItemPointer` implementation promises that `run` can be used as the work
>> + // item function.
>> + unsafe {
>> + kernel::init::pin_init_from_closure(move |slot| {
>> + let slot = Self::raw_get(slot);
>> + bindings::init_work_with_key(
>> + slot,
>> + Some(T::Pointer::run),
>> + false,
>> + name.as_char_ptr(),
>> + key.as_ptr(),
>> + );
>> + Ok(())
>> + })
>> + }
>
> I would suggest this instead:
> ```
> pin_init!(Self {
> // SAFETY: The `WorkItemPointer` implementation promises that `run` can be used as the
> // work item function.
> work <- Opaque::ffi_init(|slot| unsafe {
> bindings::init_work_with_key(
> slot,
> Some(T::Pointer::run),
> false,
> name.as_char_ptr(),
> key.as_ptr(),
> )
> }),
> _inner: PhantomData,
> })
> ```
I thought that I changed this in this patchset ...
Anyway, I don't think it's a big deal. If I need to send a v5 for some
other reason, then I will fix this there. Otherwise, I don't think it's
necessary to send a v5 just for this.
Alice
Powered by blists - more mailing lists