Message ID | 20191218035945.16180-1-hdanton@sina.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RFC] workqueue: dexpose worker | expand |
You probably wanted to Cc maintainers. On Wed 18-12-19 11:59:45, Hillf Danton wrote: > > It does not make much sense to expose worker, workqueue's internal > object, to outsiders, and whatever field inside worker as well. > Nor does worker pool rather than workqueue and work. But I have to say that this doesn't really make much sense to me. What is the problem you are trying to solve? current_is_executing is a really ambiguous name without any relation to WQ. Also this seems like a pointless code churn to me. Anyway for maintainers to judge. > > Signed-off-by: Hillf Danton <hdanton@sina.com> > --- > > --- a/kernel/workqueue_internal.h > +++ b/kernel/workqueue_internal.h > @@ -69,6 +69,13 @@ static inline struct worker *current_wq_ > return NULL; > } > > +static inline bool current_is_executing(work_func_t func) > +{ > + struct worker *worker = current_wq_worker(); > + > + return worker && worker->current_func == func; > +} > + > /* > * Scheduler hooks for concurrency managed workqueue. Only to be used from > * sched/ and workqueue.c. > --- a/kernel/async.c > +++ b/kernel/async.c > @@ -327,8 +327,6 @@ EXPORT_SYMBOL_GPL(async_synchronize_cook > */ > bool current_is_async(void) > { > - struct worker *worker = current_wq_worker(); > - > - return worker && worker->current_func == async_run_entry_fn; > + return current_is_executing(async_run_entry_fn); > } > EXPORT_SYMBOL_GPL(current_is_async); >
--- a/kernel/workqueue_internal.h +++ b/kernel/workqueue_internal.h @@ -69,6 +69,13 @@ static inline struct worker *current_wq_ return NULL; } +static inline bool current_is_executing(work_func_t func) +{ + struct worker *worker = current_wq_worker(); + + return worker && worker->current_func == func; +} + /* * Scheduler hooks for concurrency managed workqueue. Only to be used from * sched/ and workqueue.c. --- a/kernel/async.c +++ b/kernel/async.c @@ -327,8 +327,6 @@ EXPORT_SYMBOL_GPL(async_synchronize_cook */ bool current_is_async(void) { - struct worker *worker = current_wq_worker(); - - return worker && worker->current_func == async_run_entry_fn; + return current_is_executing(async_run_entry_fn); } EXPORT_SYMBOL_GPL(current_is_async);
It does not make much sense to expose worker, workqueue's internal object, to outsiders, and whatever field inside worker as well. Nor does worker pool rather than workqueue and work. Signed-off-by: Hillf Danton <hdanton@sina.com> ---