|
@@ -4167,6 +4167,22 @@ void workqueue_set_max_active(struct workqueue_struct *wq, int max_active)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(workqueue_set_max_active);
|
|
|
|
|
|
+/**
|
|
|
+ * current_work - retrieve %current task's work struct
|
|
|
+ *
|
|
|
+ * Determine if %current task is a workqueue worker and what it's working on.
|
|
|
+ * Useful to find out the context that the %current task is running in.
|
|
|
+ *
|
|
|
+ * Return: work struct if %current task is a workqueue worker, %NULL otherwise.
|
|
|
+ */
|
|
|
+struct work_struct *current_work(void)
|
|
|
+{
|
|
|
+ struct worker *worker = current_wq_worker();
|
|
|
+
|
|
|
+ return worker ? worker->current_work : NULL;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(current_work);
|
|
|
+
|
|
|
/**
|
|
|
* current_is_workqueue_rescuer - is %current workqueue rescuer?
|
|
|
*
|