cpuidle: consolidate 2.6.22 cpuidle branch into one patch
[safe/jmp/linux-2.6] / include / linux / tick.h
index 9a7252e..f4a1395 100644 (file)
@@ -40,6 +40,7 @@ enum tick_nohz_mode {
  * @idle_sleeps:       Number of idle calls, where the sched tick was stopped
  * @idle_entrytime:    Time when the idle call was entered
  * @idle_sleeptime:    Sum of the time slept in idle with sched tick stopped
+ * @sleep_length:      Duration of the current idle sleep
  */
 struct tick_sched {
        struct hrtimer                  sched_timer;
@@ -52,6 +53,7 @@ struct tick_sched {
        unsigned long                   idle_sleeps;
        ktime_t                         idle_entrytime;
        ktime_t                         idle_sleeptime;
+       ktime_t                         sleep_length;
        unsigned long                   last_jiffies;
        unsigned long                   next_jiffies;
        ktime_t                         idle_expires;
@@ -100,10 +102,17 @@ static inline int tick_check_oneshot_change(int allow_nohz) { return 0; }
 extern void tick_nohz_stop_sched_tick(void);
 extern void tick_nohz_restart_sched_tick(void);
 extern void tick_nohz_update_jiffies(void);
+extern ktime_t tick_nohz_get_sleep_length(void);
 # else
 static inline void tick_nohz_stop_sched_tick(void) { }
 static inline void tick_nohz_restart_sched_tick(void) { }
 static inline void tick_nohz_update_jiffies(void) { }
+static inline ktime_t tick_nohz_get_sleep_length(void)
+{
+       ktime_t len = { .tv64 = NSEC_PER_SEC/HZ };
+
+       return len;
+}
 # endif /* !NO_HZ */
 
 #endif