diff options
Diffstat (limited to 'kernel/hrtimer.c')
| -rw-r--r-- | kernel/hrtimer.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index eb2bfefa6dc..8f7001c97e0 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
| @@ -1243,6 +1243,22 @@ void hrtimer_interrupt(struct clock_event_device *dev) | |||
| 1243 | } | 1243 | } |
| 1244 | } | 1244 | } |
| 1245 | 1245 | ||
| 1246 | /* | ||
| 1247 | * local version of hrtimer_peek_ahead_timers() called with interrupts | ||
| 1248 | * disabled. | ||
| 1249 | */ | ||
| 1250 | static void __hrtimer_peek_ahead_timers(void) | ||
| 1251 | { | ||
| 1252 | struct tick_device *td; | ||
| 1253 | |||
| 1254 | if (!hrtimer_hres_active()) | ||
| 1255 | return; | ||
| 1256 | |||
| 1257 | td = &__get_cpu_var(tick_cpu_device); | ||
| 1258 | if (td && td->evtdev) | ||
| 1259 | hrtimer_interrupt(td->evtdev); | ||
| 1260 | } | ||
| 1261 | |||
| 1246 | /** | 1262 | /** |
| 1247 | * hrtimer_peek_ahead_timers -- run soft-expired timers now | 1263 | * hrtimer_peek_ahead_timers -- run soft-expired timers now |
| 1248 | * | 1264 | * |
| @@ -1254,16 +1270,10 @@ void hrtimer_interrupt(struct clock_event_device *dev) | |||
| 1254 | */ | 1270 | */ |
| 1255 | void hrtimer_peek_ahead_timers(void) | 1271 | void hrtimer_peek_ahead_timers(void) |
| 1256 | { | 1272 | { |
| 1257 | struct tick_device *td; | ||
| 1258 | unsigned long flags; | 1273 | unsigned long flags; |
| 1259 | 1274 | ||
| 1260 | if (!hrtimer_hres_active()) | ||
| 1261 | return; | ||
| 1262 | |||
| 1263 | local_irq_save(flags); | 1275 | local_irq_save(flags); |
| 1264 | td = &__get_cpu_var(tick_cpu_device); | 1276 | __hrtimer_peek_ahead_timers(); |
| 1265 | if (td && td->evtdev) | ||
| 1266 | hrtimer_interrupt(td->evtdev); | ||
| 1267 | local_irq_restore(flags); | 1277 | local_irq_restore(flags); |
| 1268 | } | 1278 | } |
| 1269 | 1279 | ||
