History

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.

Andrew Liu committed 18 years ago

Commit 8a3e77c1 parent 55e462b1 file · +2 −4Browse files

Showing the changes to kernel/workqueue.c (1 of 1 file). Show all

Unified · Split

kernel/workqueue.c+2−4
@@ -195,7 +195,6 @@ static void delayed_work_timer_fn(unsigned long __data) · 194 unmodified lines
195int queue_delayed_work(struct workqueue_struct *wq,195int queue_delayed_work(struct workqueue_struct *wq,
196 struct delayed_work *dwork, unsigned long delay)196 struct delayed_work *dwork, unsigned long delay)
197{197{
198 timer_stats_timer_set_start_info(&dwork->timer);
199 if (delay == 0)198 if (delay == 0)
200 return queue_work(wq, &dwork->work);199 return queue_work(wq, &dwork->work);
201 200
@@ -219,11 +218,12 @@ int queue_delayed_work_on(int cpu, struct workqueue_struct *wq, · 17 unmodified lines
219 struct timer_list *timer = &dwork->timer;218 struct timer_list *timer = &dwork->timer;
220 struct work_struct *work = &dwork->work;219 struct work_struct *work = &dwork->work;
221 220
222 timer_stats_timer_set_start_info(&dwork->timer);
223 if (!test_and_set_bit(WORK_STRUCT_PENDING, work_data_bits(work))) {221 if (!test_and_set_bit(WORK_STRUCT_PENDING, work_data_bits(work))) {
224 BUG_ON(timer_pending(timer));222 BUG_ON(timer_pending(timer));
225 BUG_ON(!list_empty(&work->entry));223 BUG_ON(!list_empty(&work->entry));
226 224
225 timer_stats_timer_set_start_info(&dwork->timer);
226
227 /* This stores cwq for the moment, for the timer_fn */227 /* This stores cwq for the moment, for the timer_fn */
228 set_wq_data(work, wq_per_cpu(wq, raw_smp_processor_id()));228 set_wq_data(work, wq_per_cpu(wq, raw_smp_processor_id()));
229 timer->expires = jiffies + delay;229 timer->expires = jiffies + delay;
@@ -564,7 +564,6 @@ EXPORT_SYMBOL(schedule_work); · 334 unmodified lines
564int schedule_delayed_work(struct delayed_work *dwork,564int schedule_delayed_work(struct delayed_work *dwork,
565 unsigned long delay)565 unsigned long delay)
566{566{
567 timer_stats_timer_set_start_info(&dwork->timer);
568 return queue_delayed_work(keventd_wq, dwork, delay);567 return queue_delayed_work(keventd_wq, dwork, delay);
569}568}
570EXPORT_SYMBOL(schedule_delayed_work);569EXPORT_SYMBOL(schedule_delayed_work);
@@ -581,7 +580,6 @@ EXPORT_SYMBOL(schedule_delayed_work); · 10 unmodified lines
581int schedule_delayed_work_on(int cpu,580int schedule_delayed_work_on(int cpu,
582 struct delayed_work *dwork, unsigned long delay)581 struct delayed_work *dwork, unsigned long delay)
583{582{
584 timer_stats_timer_set_start_info(&dwork->timer);
585 return queue_delayed_work_on(cpu, keventd_wq, dwork, delay);583 return queue_delayed_work_on(cpu, keventd_wq, dwork, delay);
586}584}
587EXPORT_SYMBOL(schedule_delayed_work_on);585EXPORT_SYMBOL(schedule_delayed_work_on);