diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-15 13:06:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-15 13:06:19 -0400 |
commit | 19035e5b5d1e3127b4925d86f6a77964f91f2c3c (patch) | |
tree | c9e7e9073970176a5b0970da715cb6430c3c9069 /include | |
parent | f9db6e095115f9411b9647bdb9d81fe11f3d8b54 (diff) | |
parent | eea08f32adb3f97553d49a4f79a119833036000a (diff) |
Merge branch 'timers-for-linus-migration' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-for-linus-migration' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
timers: Logic to move non pinned timers
timers: /proc/sys sysctl hook to enable timer migration
timers: Identifying the existing pinned timers
timers: Framework for identifying pinned timers
timers: allow deferrable timers for intervals tv2-tv5 to be deferred
Fix up conflicts in kernel/sched.c and kernel/timer.c manually
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/clockchips.h | 9 | ||||
-rw-r--r-- | include/linux/hrtimer.h | 7 | ||||
-rw-r--r-- | include/linux/sched.h | 13 | ||||
-rw-r--r-- | include/linux/timer.h | 3 |
4 files changed, 30 insertions, 2 deletions
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h index 3a1dbba4d3ae..20a100fe2b4f 100644 --- a/include/linux/clockchips.h +++ b/include/linux/clockchips.h | |||
@@ -143,3 +143,12 @@ extern void clockevents_notify(unsigned long reason, void *arg); | |||
143 | #endif | 143 | #endif |
144 | 144 | ||
145 | #endif | 145 | #endif |
146 | |||
147 | #ifdef CONFIG_GENERIC_CLOCKEVENTS | ||
148 | extern ktime_t clockevents_get_next_event(int cpu); | ||
149 | #else | ||
150 | static inline ktime_t clockevents_get_next_event(int cpu) | ||
151 | { | ||
152 | return (ktime_t) { .tv64 = KTIME_MAX }; | ||
153 | } | ||
154 | #endif | ||
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index 0d2f7c8a33d6..7400900de94a 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h | |||
@@ -30,8 +30,11 @@ struct hrtimer_cpu_base; | |||
30 | * Mode arguments of xxx_hrtimer functions: | 30 | * Mode arguments of xxx_hrtimer functions: |
31 | */ | 31 | */ |
32 | enum hrtimer_mode { | 32 | enum hrtimer_mode { |
33 | HRTIMER_MODE_ABS, /* Time value is absolute */ | 33 | HRTIMER_MODE_ABS = 0x0, /* Time value is absolute */ |
34 | HRTIMER_MODE_REL, /* Time value is relative to now */ | 34 | HRTIMER_MODE_REL = 0x1, /* Time value is relative to now */ |
35 | HRTIMER_MODE_PINNED = 0x02, /* Timer is bound to CPU */ | ||
36 | HRTIMER_MODE_ABS_PINNED = 0x02, | ||
37 | HRTIMER_MODE_REL_PINNED = 0x03, | ||
35 | }; | 38 | }; |
36 | 39 | ||
37 | /* | 40 | /* |
diff --git a/include/linux/sched.h b/include/linux/sched.h index fea9d188dbff..c900aa530070 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -261,6 +261,7 @@ extern void task_rq_unlock_wait(struct task_struct *p); | |||
261 | extern cpumask_var_t nohz_cpu_mask; | 261 | extern cpumask_var_t nohz_cpu_mask; |
262 | #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) | 262 | #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) |
263 | extern int select_nohz_load_balancer(int cpu); | 263 | extern int select_nohz_load_balancer(int cpu); |
264 | extern int get_nohz_load_balancer(void); | ||
264 | #else | 265 | #else |
265 | static inline int select_nohz_load_balancer(int cpu) | 266 | static inline int select_nohz_load_balancer(int cpu) |
266 | { | 267 | { |
@@ -1796,11 +1797,23 @@ extern unsigned int sysctl_sched_child_runs_first; | |||
1796 | extern unsigned int sysctl_sched_features; | 1797 | extern unsigned int sysctl_sched_features; |
1797 | extern unsigned int sysctl_sched_migration_cost; | 1798 | extern unsigned int sysctl_sched_migration_cost; |
1798 | extern unsigned int sysctl_sched_nr_migrate; | 1799 | extern unsigned int sysctl_sched_nr_migrate; |
1800 | extern unsigned int sysctl_timer_migration; | ||
1799 | 1801 | ||
1800 | int sched_nr_latency_handler(struct ctl_table *table, int write, | 1802 | int sched_nr_latency_handler(struct ctl_table *table, int write, |
1801 | struct file *file, void __user *buffer, size_t *length, | 1803 | struct file *file, void __user *buffer, size_t *length, |
1802 | loff_t *ppos); | 1804 | loff_t *ppos); |
1803 | #endif | 1805 | #endif |
1806 | #ifdef CONFIG_SCHED_DEBUG | ||
1807 | static inline unsigned int get_sysctl_timer_migration(void) | ||
1808 | { | ||
1809 | return sysctl_timer_migration; | ||
1810 | } | ||
1811 | #else | ||
1812 | static inline unsigned int get_sysctl_timer_migration(void) | ||
1813 | { | ||
1814 | return 1; | ||
1815 | } | ||
1816 | #endif | ||
1804 | extern unsigned int sysctl_sched_rt_period; | 1817 | extern unsigned int sysctl_sched_rt_period; |
1805 | extern int sysctl_sched_rt_runtime; | 1818 | extern int sysctl_sched_rt_runtime; |
1806 | 1819 | ||
diff --git a/include/linux/timer.h b/include/linux/timer.h index 6cdb6f3331f1..ccf882eed8f8 100644 --- a/include/linux/timer.h +++ b/include/linux/timer.h | |||
@@ -163,7 +163,10 @@ extern void add_timer_on(struct timer_list *timer, int cpu); | |||
163 | extern int del_timer(struct timer_list * timer); | 163 | extern int del_timer(struct timer_list * timer); |
164 | extern int mod_timer(struct timer_list *timer, unsigned long expires); | 164 | extern int mod_timer(struct timer_list *timer, unsigned long expires); |
165 | extern int mod_timer_pending(struct timer_list *timer, unsigned long expires); | 165 | extern int mod_timer_pending(struct timer_list *timer, unsigned long expires); |
166 | extern int mod_timer_pinned(struct timer_list *timer, unsigned long expires); | ||
166 | 167 | ||
168 | #define TIMER_NOT_PINNED 0 | ||
169 | #define TIMER_PINNED 1 | ||
167 | /* | 170 | /* |
168 | * The jiffies value which is added to now, when there is no timer | 171 | * The jiffies value which is added to now, when there is no timer |
169 | * in the timer wheel: | 172 | * in the timer wheel: |