diff options
author | Tejun Heo <tj@kernel.org> | 2013-01-18 14:05:56 -0800 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2013-01-18 14:05:56 -0800 |
commit | 84b233adcca3cacd5cfa8013a5feda7a3db4a9af (patch) | |
tree | 3d1f4a7f5f1d27dc08bb661691fd1470acf497a5 /kernel/workqueue_internal.h | |
parent | 2eaebdb33e1911c0cf3d44fd3596c42c6f502fab (diff) | |
download | lwn-84b233adcca3cacd5cfa8013a5feda7a3db4a9af.tar.gz lwn-84b233adcca3cacd5cfa8013a5feda7a3db4a9af.zip |
workqueue: implement current_is_async()
This function queries whether %current is an async worker executing an
async item. This will be used to implement warning on synchronous
request_module() from async workers.
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel/workqueue_internal.h')
-rw-r--r-- | kernel/workqueue_internal.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/workqueue_internal.h b/kernel/workqueue_internal.h index 02549fa04587..cc35e7e62091 100644 --- a/kernel/workqueue_internal.h +++ b/kernel/workqueue_internal.h @@ -8,6 +8,7 @@ #define _KERNEL_WORKQUEUE_INTERNAL_H #include <linux/workqueue.h> +#include <linux/kthread.h> struct global_cwq; struct worker_pool; @@ -44,6 +45,16 @@ struct worker { struct workqueue_struct *rescue_wq; /* I: the workqueue to rescue */ }; +/** + * current_wq_worker - return struct worker if %current is a workqueue worker + */ +static inline struct worker *current_wq_worker(void) +{ + if (current->flags & PF_WQ_WORKER) + return kthread_data(current); + return NULL; +} + /* * Scheduler hooks for concurrency managed workqueue. Only to be used from * sched.c and workqueue.c. |