workqueue: Remove redundant function invocation
PATCH 1/1 workqueue: Remove redundant function invocation
workqueue: Remove redundant function invocation
timer_stats_timer_set_start_info is invoked twice, additionally, the invocation of this function can be moved to where it is only called when a delay is really required.
Signed-off-by Andrew Liu <[email protected]>
---
kernel/workqueue.c +2 -4
@@ -195,7 +195,6 @@ static void delayed_work_timer_fn(unsigned long __data)int queue_delayed_work (struct workqueue_struct *wq,struct delayed_work *dwork,unsigned long delay) { -timer_stats_timer_set_start_info (&dwork->timer);if (delay ==0 )return queue_work (wq, &dwork->work);
@@ -219,11 +218,12 @@ int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,struct timer_list *timer = &dwork->timer;struct work_struct *work = &dwork->work; -timer_stats_timer_set_start_info (&dwork->timer);if (!test_and_set_bit (WORK_STRUCT_PENDING ,work_data_bits (work))) {BUG_ON (timer_pending (timer));BUG_ON (!list_empty (&work->entry)); +timer_stats_timer_set_start_info (&dwork->timer); +/* This stores cwq for the moment, for the timer_fn */ set_wq_data (work,wq_per_cpu (wq,raw_smp_processor_id ())); timer->expires = jiffies + delay;
@@ -564,7 +564,6 @@ EXPORT_SYMBOL(schedule_work);int schedule_delayed_work (struct delayed_work *dwork,unsigned long delay) { -timer_stats_timer_set_start_info (&dwork->timer);return queue_delayed_work (keventd_wq, dwork, delay); }EXPORT_SYMBOL (schedule_delayed_work);
@@ -581,7 +580,6 @@ EXPORT_SYMBOL(schedule_delayed_work);int schedule_delayed_work_on (int cpu,struct delayed_work *dwork,unsigned long delay) { -timer_stats_timer_set_start_info (&dwork->timer);return queue_delayed_work_on (cpu, keventd_wq, dwork, delay); }EXPORT_SYMBOL (schedule_delayed_work_on);