aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVenki Pallipadi <venkatesh.pallipadi@intel.com>2007-05-08 03:27:47 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 14:15:05 -0400
commit28287033e12463c8ff89f1ea8038783d0360391c (patch)
tree27eabb2890dd1e2e30363dee2f4263cbee906a42
parent6e453a67510a17f01b63835f18569e8c3939a38c (diff)
Add a new deferrable delayed work init
Add a new deferrable delayed work init. This can be used to schedule work that are 'unimportant' when CPU is idle and can be called later, when CPU eventually comes out of idle. Use this init in cpufreq ondemand governor. Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Cc: Dave Jones <davej@codemonkey.org.uk> Cc: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/cpufreq/cpufreq_ondemand.c2
-rw-r--r--include/linux/workqueue.h6
2 files changed, 7 insertions, 1 deletions
diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
index 8d053f500fc2..8532bb79e5fc 100644
--- a/drivers/cpufreq/cpufreq_ondemand.c
+++ b/drivers/cpufreq/cpufreq_ondemand.c
@@ -470,7 +470,7 @@ static inline void dbs_timer_init(struct cpu_dbs_info_s *dbs_info)
470 dbs_info->enable = 1; 470 dbs_info->enable = 1;
471 ondemand_powersave_bias_init(); 471 ondemand_powersave_bias_init();
472 dbs_info->sample_type = DBS_NORMAL_SAMPLE; 472 dbs_info->sample_type = DBS_NORMAL_SAMPLE;
473 INIT_DELAYED_WORK(&dbs_info->work, do_dbs_timer); 473 INIT_DELAYED_WORK_DEFERRABLE(&dbs_info->work, do_dbs_timer);
474 queue_delayed_work_on(dbs_info->cpu, kondemand_wq, &dbs_info->work, 474 queue_delayed_work_on(dbs_info->cpu, kondemand_wq, &dbs_info->work,
475 delay); 475 delay);
476} 476}
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index b8abfc74d038..f16ba1e0687d 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -121,6 +121,12 @@ struct execute_work {
121 init_timer(&(_work)->timer); \ 121 init_timer(&(_work)->timer); \
122 } while (0) 122 } while (0)
123 123
124#define INIT_DELAYED_WORK_DEFERRABLE(_work, _func) \
125 do { \
126 INIT_WORK(&(_work)->work, (_func)); \
127 init_timer_deferrable(&(_work)->timer); \
128 } while (0)
129
124/** 130/**
125 * work_pending - Find out whether a work item is currently pending 131 * work_pending - Find out whether a work item is currently pending
126 * @work: The work item in question 132 * @work: The work item in question