Re: [PATCH v2] rust: workqueue: define built-in bh queues
From: Boqun Feng
Date: Mon Feb 24 2025 - 13:13:27 EST
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@xxxxxxxxxxxxxxxxxxx>
> ---
> 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
>