Messages in this thread Patch in this message | | | From | Joonsoo Kim <> | Subject | [PATCH 1/3] workqueue: optimize mod_delayed_work_on() when @delay == 0 | Date | Sun, 21 Oct 2012 01:30:05 +0900 |
| |
After try_to_grab_pending(), __queue_delayed_work() is invoked in mod_delayed_work_on(). When @delay == 0, we can call __queue_work() directly in order to avoid setting useless timer.
Signed-off-by: Joonsoo Kim <js1304@gmail.com>
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index d951daa..c57358e 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -1477,7 +1477,11 @@ bool mod_delayed_work_on(int cpu, struct workqueue_struct *wq, } while (unlikely(ret == -EAGAIN)); if (likely(ret >= 0)) { - __queue_delayed_work(cpu, wq, dwork, delay); + if (!delay) + __queue_work(cpu, wq, &dwork->work); + else + __queue_delayed_work(cpu, wq, dwork, delay); + local_irq_restore(flags); } -- 1.7.9.5
| |