[PATCH v6 1/3] rust: helpers: add workqueue helpers
From: Aakash Bollineni via B4 Relay
Date: Wed Apr 08 2026 - 06:37:34 EST
From: Aakash Bollineni <aakash.bollineni@xxxxxxxxxxxxxxxxxxxx>
Add C helpers for work_pending, cancel_work_sync, and
cancel_delayed_work_sync to bridge the Rust workqueue abstraction
with the kernel's C workqueue macros.
Additionally, add a robust initialization helper for delayed_work
that ensures correct timer (delayed_work_timer_fn) and lockdep setup
in a single pass, avoiding redundant initialization.
Signed-off-by: Aakash Bollineni <aakash.bollineni@xxxxxxxxxxxxxxxxxxxx>
---
rust/helpers/workqueue.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/rust/helpers/workqueue.c b/rust/helpers/workqueue.c
index ce1c3a5b2150..ef18d79f95be 100644
--- a/rust/helpers/workqueue.c
+++ b/rust/helpers/workqueue.c
@@ -14,3 +14,30 @@ __rust_helper void rust_helper_init_work_with_key(struct work_struct *work,
INIT_LIST_HEAD(&work->entry);
work->func = func;
}
+
+__rust_helper bool rust_helper_work_pending(struct work_struct *work)
+{
+ return work_pending(work);
+}
+
+__rust_helper bool rust_helper_cancel_work_sync(struct work_struct *work)
+{
+ return cancel_work_sync(work);
+}
+
+__rust_helper bool rust_helper_cancel_delayed_work_sync(struct delayed_work *dwork)
+{
+ return cancel_delayed_work_sync(dwork);
+}
+
+__rust_helper void rust_helper_init_delayed_work(struct delayed_work *dwork,
+ work_func_t func,
+ const char *name,
+ struct lock_class_key *key,
+ const char *tname,
+ struct lock_class_key *tkey)
+{
+ rust_helper_init_work_with_key(&dwork->work, func, false, name, key);
+ timer_init_key(&dwork->timer, delayed_work_timer_fn, TIMER_IRQSAFE, tname, tkey);
+}
+
--
2.43.0