[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z7y1zZTi3UQzsvQh@boqun-archlinux>
Date: Mon, 24 Feb 2025 10:09:17 -0800
From: Boqun Feng <boqun.feng@...il.com>
To: Hamza Mahfooz <hamzamahfooz@...ux.microsoft.com>
Cc: rust-for-linux@...r.kernel.org, Tejun Heo <tj@...nel.org>,
Lai Jiangshan <jiangshanlai@...il.com>,
Miguel Ojeda <ojeda@...nel.org>,
Alex Gaynor <alex.gaynor@...il.com>, Gary Guo <gary@...yguo.net>,
Björn Roy Baron <bjorn3_gh@...tonmail.com>,
Benno Lossin <benno.lossin@...ton.me>,
Andreas Hindborg <a.hindborg@...nel.org>,
Alice Ryhl <aliceryhl@...gle.com>, Trevor Gross <tmgross@...ch.edu>,
Wedson Almeida Filho <walmeida@...rosoft.com>,
Dirk Behme <dirk.behme@...il.com>,
Konstantin Andrikopoulos <kernel@...dragore.io>,
Danilo Krummrich <dakr@...nel.org>,
Roland Xu <mu001999@...look.com>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] rust: workqueue: define built-in bh queues
Hi Hamza,
On Mon, Feb 24, 2025 at 09:23:23AM -0500, Hamza Mahfooz wrote:
> Provide safe getters to the system bh work queues. They will be used
> to reimplement the Hyper-V VMBus in rust.
>
> Signed-off-by: Hamza Mahfooz <hamzamahfooz@...ux.microsoft.com>
> ---
> v2: make the commit message suck less.
> ---
> rust/kernel/workqueue.rs | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
while you're at it, could you also add some usage of system_bh() in the
example at around line 77 in workqueue.rs? It could demonstrate the
usage and generate unit tests. Thanks!
Regards,
Boqun
> diff --git a/rust/kernel/workqueue.rs b/rust/kernel/workqueue.rs
> index 0cd100d2aefb..68ce70d94f2d 100644
> --- a/rust/kernel/workqueue.rs
> +++ b/rust/kernel/workqueue.rs
> @@ -703,3 +703,21 @@ pub fn system_freezable_power_efficient() -> &'static Queue {
> // SAFETY: `system_freezable_power_efficient_wq` is a C global, always available.
> unsafe { Queue::from_raw(bindings::system_freezable_power_efficient_wq) }
> }
> +
> +/// Returns the system bottom halves work queue (`system_bh_wq`).
> +///
> +/// It is similar to the one returned by [`system`] but for work items which
> +/// need to run from a softirq context.
> +pub fn system_bh() -> &'static Queue {
> + // SAFETY: `system_bh_wq` is a C global, always available.
> + unsafe { Queue::from_raw(bindings::system_bh_wq) }
> +}
> +
> +/// Returns the system bottom halves high-priority work queue (`system_bh_highpri_wq`).
> +///
> +/// It is similar to the one returned by [`system_bh`] but for work items which
> +/// require higher scheduling priority.
> +pub fn system_bh_highpri() -> &'static Queue {
> + // SAFETY: `system_bh_highpri_wq` is a C global, always available.
> + unsafe { Queue::from_raw(bindings::system_bh_highpri_wq) }
> +}
> --
> 2.47.1
>
Powered by blists - more mailing lists