X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=kernel%2Ftime%2Ftick-sched.c;h=10a1347597fd394fec309d1ae74663ae2d9ae05c;hb=c4ec20717313daafba59225f812db89595952b83;hp=ce89ffb474d0cbeba8b2d84af5c3a6c9ae5f7389;hpb=5c8e191e8437616a498a8e1cc0af3dd0d32bbff2;p=linux-2.6-omap-h63xx.git diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index ce89ffb474d..10a1347597f 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -153,6 +153,7 @@ void tick_nohz_stop_sched_tick(void) unsigned long seq, last_jiffies, next_jiffies, delta_jiffies, flags; struct tick_sched *ts; ktime_t last_update, expires, now, delta; + struct clock_event_device *dev = __get_cpu_var(tick_cpu_device).evtdev; int cpu; local_irq_save(flags); @@ -302,10 +303,25 @@ void tick_nohz_stop_sched_tick(void) out: ts->next_jiffies = next_jiffies; ts->last_jiffies = last_jiffies; + ts->sleep_length = ktime_sub(dev->next_event, now); end: local_irq_restore(flags); } +/** + * tick_nohz_get_sleep_length - return the length of the current sleep + * + * Called from power state control code with interrupts disabled + */ +ktime_t tick_nohz_get_sleep_length(void) +{ + struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); + + return ts->sleep_length; +} + +EXPORT_SYMBOL_GPL(tick_nohz_get_sleep_length); + /** * nohz_restart_sched_tick - restart the idle tick from the idle task *