diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-19 16:12:46 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-19 16:12:46 -0400 |
commit | c4ec20717313daafba59225f812db89595952b83 (patch) | |
tree | 253337453b1dc965c40668e4949337ed1c46cab7 /kernel/time/tick-sched.c | |
parent | ec2626815bf9a9922e49820b03e670e833f3ca3c (diff) | |
parent | 00a2b433557f10736e8a02de619b3e9052556c12 (diff) |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (41 commits)
ACPICA: hw: Don't carry spinlock over suspend
ACPICA: hw: remove use_lock flag from acpi_hw_register_{read, write}
ACPI: cpuidle: port idle timer suspend/resume workaround to cpuidle
ACPI: clean up acpi_enter_sleep_state_prep
Hibernation: Make sure that ACPI is enabled in acpi_hibernation_finish
ACPI: suppress uninitialized var warning
cpuidle: consolidate 2.6.22 cpuidle branch into one patch
ACPI: thinkpad-acpi: skip blanks before the data when parsing sysfs
ACPI: AC: Add sysfs interface
ACPI: SBS: Add sysfs alarm
ACPI: SBS: Add ACPI_PROCFS around procfs handling code.
ACPI: SBS: Add support for power_supply class (and sysfs)
ACPI: SBS: Make SBS reads table-driven.
ACPI: SBS: Simplify data structures in SBS
ACPI: SBS: Split host controller (ACPI0001) from SBS driver (ACPI0002)
ACPI: EC: Add new query handler to list head.
ACPI: Add acpi_bus_generate_event4() function
ACPI: Battery: add sysfs alarm
ACPI: Battery: Add sysfs support
ACPI: Battery: Misc clean-ups, no functional changes
...
Fix up conflicts in drivers/misc/thinkpad_acpi.[ch] manually
Diffstat (limited to 'kernel/time/tick-sched.c')
-rw-r--r-- | kernel/time/tick-sched.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index ce89ffb474d0..10a1347597fd 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -153,6 +153,7 @@ void tick_nohz_stop_sched_tick(void) | |||
153 | unsigned long seq, last_jiffies, next_jiffies, delta_jiffies, flags; | 153 | unsigned long seq, last_jiffies, next_jiffies, delta_jiffies, flags; |
154 | struct tick_sched *ts; | 154 | struct tick_sched *ts; |
155 | ktime_t last_update, expires, now, delta; | 155 | ktime_t last_update, expires, now, delta; |
156 | struct clock_event_device *dev = __get_cpu_var(tick_cpu_device).evtdev; | ||
156 | int cpu; | 157 | int cpu; |
157 | 158 | ||
158 | local_irq_save(flags); | 159 | local_irq_save(flags); |
@@ -302,11 +303,26 @@ void tick_nohz_stop_sched_tick(void) | |||
302 | out: | 303 | out: |
303 | ts->next_jiffies = next_jiffies; | 304 | ts->next_jiffies = next_jiffies; |
304 | ts->last_jiffies = last_jiffies; | 305 | ts->last_jiffies = last_jiffies; |
306 | ts->sleep_length = ktime_sub(dev->next_event, now); | ||
305 | end: | 307 | end: |
306 | local_irq_restore(flags); | 308 | local_irq_restore(flags); |
307 | } | 309 | } |
308 | 310 | ||
309 | /** | 311 | /** |
312 | * tick_nohz_get_sleep_length - return the length of the current sleep | ||
313 | * | ||
314 | * Called from power state control code with interrupts disabled | ||
315 | */ | ||
316 | ktime_t tick_nohz_get_sleep_length(void) | ||
317 | { | ||
318 | struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); | ||
319 | |||
320 | return ts->sleep_length; | ||
321 | } | ||
322 | |||
323 | EXPORT_SYMBOL_GPL(tick_nohz_get_sleep_length); | ||
324 | |||
325 | /** | ||
310 | * nohz_restart_sched_tick - restart the idle tick from the idle task | 326 | * nohz_restart_sched_tick - restart the idle tick from the idle task |
311 | * | 327 | * |
312 | * Restart the idle tick when the CPU is woken up from idle | 328 | * Restart the idle tick when the CPU is woken up from idle |