Initial Contribution
msm-2.6.38: tag AU_LINUX_ANDROID_GINGERBREAD.02.03.04.00.142
Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 0400553..d86d61f 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -3069,6 +3069,32 @@
EXPORT_SYMBOL_GPL(destroy_workqueue);
/**
+ * workqueue_empty - test whether a workqueue is empty
+ * @wq: target workqueue
+ *
+ * Test whether @wq's cpu workqueue(s) are empty.
+ *
+ * Returns: false - workqueue is not empty
+ * true - workqueue is empty
+ */
+bool workqueue_empty(struct workqueue_struct *wq)
+{
+ int cpu;
+
+ for_each_cwq_cpu(cpu, wq) {
+ struct cpu_workqueue_struct *cwq = get_cwq(cpu, wq);
+
+ if (!cwq->nr_active && list_empty(&cwq->delayed_works))
+ continue;
+
+ return false;
+ }
+
+ return true;
+}
+EXPORT_SYMBOL_GPL(workqueue_empty);
+
+/**
* workqueue_set_max_active - adjust max_active of a workqueue
* @wq: target workqueue
* @max_active: new max_active value.