]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/commitdiff
workqueue: introduce cwq_set_max_active() helper for thaw_workqueues()
authorLai Jiangshan <laijs@cn.fujitsu.com>
Wed, 19 Sep 2012 17:40:48 +0000 (10:40 -0700)
committerTejun Heo <tj@kernel.org>
Wed, 19 Sep 2012 17:40:48 +0000 (10:40 -0700)
Using a helper instead of open code makes thaw_workqueues() clearer.
The helper will also be used by the next patch.

tj: Slight update to comment and description.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/workqueue.c

index 3e324aae3c987fde03777041b439a52c10ff4b05..b5d722548ffd1c16c041c0ba3d1a42557756ae11 100644 (file)
@@ -3366,6 +3366,26 @@ void destroy_workqueue(struct workqueue_struct *wq)
 }
 EXPORT_SYMBOL_GPL(destroy_workqueue);
 
+/**
+ * cwq_set_max_active - adjust max_active of a cwq
+ * @cwq: target cpu_workqueue_struct
+ * @max_active: new max_active value.
+ *
+ * Set @cwq->max_active to @max_active and activate delayed works if
+ * increased.
+ *
+ * CONTEXT:
+ * spin_lock_irq(gcwq->lock).
+ */
+static void cwq_set_max_active(struct cpu_workqueue_struct *cwq, int max_active)
+{
+       cwq->max_active = max_active;
+
+       while (!list_empty(&cwq->delayed_works) &&
+              cwq->nr_active < cwq->max_active)
+               cwq_activate_first_delayed(cwq);
+}
+
 /**
  * workqueue_set_max_active - adjust max_active of a workqueue
  * @wq: target workqueue
@@ -3792,11 +3812,7 @@ void thaw_workqueues(void)
                                continue;
 
                        /* restore max_active and repopulate worklist */
-                       cwq->max_active = wq->saved_max_active;
-
-                       while (!list_empty(&cwq->delayed_works) &&
-                              cwq->nr_active < cwq->max_active)
-                               cwq_activate_first_delayed(cwq);
+                       cwq_set_max_active(cwq, wq->saved_max_active);
                }
 
                for_each_worker_pool(pool, gcwq)