Commit a25909a4 (lockdep: Add an in_workqueue_context() lockdep-based
test function) added in_workqueue_context() but there hasn't been any
in-kernel user and the lockdep annotation in workqueue is scheduled to
change. Remove the unused function.
Signed-off-by: Tejun Heo <firstname.lastname@example.org>
Cc: Paul E. McKenney <email@example.com>
Paul, I was looking through lockdep annotations to see how they can be
improved and noticed that in_workqueue_context() isn't used by anyone
and it seems like there hasn't been any in-kernel user either. Can
this be removed or do you expect to use it somewhere?
include/linux/workqueue.h | 4 ----
kernel/workqueue.c | 15 ---------------
2 files changed, 19 deletions(-)
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index e33ff4a..f6eaf56 100644
@@ -429,8 +429,4 @@ extern bool freeze_workqueues_busy(void);
extern void thaw_workqueues(void);
#endif /* CONFIG_FREEZER */
-int in_workqueue_context(struct workqueue_struct *wq);
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 19e4bc1..c758e78 100644
@@ -310,21 +310,6 @@ static inline int __next_wq_cpu(int cpu, const struct cpumask *mask,
(cpu) < WORK_CPU_NONE; \
(cpu) = __next_wq_cpu((cpu), cpu_possible_mask, (wq)))
- * in_workqueue_context() - in context of specified workqueue?
- * @wq: the workqueue of interest
- * Checks lockdep state to see if the current task is executing from
- * within a workqueue item. This function exists only if lockdep is
- * enabled.
-int in_workqueue_context(struct workqueue_struct *wq)
- return lock_is_held(&wq->lockdep_map);
static struct debug_obj_descr work_debug_descr;
I added it for the drivers/vhost changes. They were using a
variant of RCU where executing in workqueue context acted as an RCU
read-side critical section and where flushing workqueues acted as
an RCU grace period. The in_workqueue_context() was then passed to
rcu_dereference_check() to verify correct usage.
But you are right, I don't see it being used any more, though I do still
see the big block comment documenting this in drivers/vhost/vhost.h.
Michael, what are Tejun and I missing here?