diff mbox series

[RFC] workqueue: dexpose worker

Message ID 20191218035945.16180-1-hdanton@sina.com (mailing list archive)
State New, archived
Headers show
Series [RFC] workqueue: dexpose worker | expand

Commit Message

Hillf Danton Dec. 18, 2019, 3:59 a.m. UTC
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>
---

Comments

Michal Hocko Dec. 18, 2019, 1:57 p.m. UTC | #1
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);
>
diff mbox series

Patch

--- 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);