.. | .. |
---|
15 | 15 | |
---|
16 | 16 | DECLARE_PER_CPU(struct tick_device, tick_cpu_device); |
---|
17 | 17 | extern ktime_t tick_next_period; |
---|
18 | | -extern ktime_t tick_period; |
---|
19 | 18 | extern int tick_do_timer_cpu __read_mostly; |
---|
20 | 19 | |
---|
21 | 20 | extern void tick_setup_periodic(struct clock_event_device *dev, int broadcast); |
---|
.. | .. |
---|
62 | 61 | /* Broadcasting support */ |
---|
63 | 62 | # ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST |
---|
64 | 63 | extern int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu); |
---|
65 | | -extern void tick_install_broadcast_device(struct clock_event_device *dev); |
---|
| 64 | +extern void tick_install_broadcast_device(struct clock_event_device *dev, int cpu); |
---|
66 | 65 | extern int tick_is_broadcast_device(struct clock_event_device *dev); |
---|
67 | | -extern void tick_shutdown_broadcast(unsigned int cpu); |
---|
68 | 66 | extern void tick_suspend_broadcast(void); |
---|
69 | 67 | extern void tick_resume_broadcast(void); |
---|
70 | 68 | extern bool tick_resume_check_broadcast(void); |
---|
.. | .. |
---|
73 | 71 | extern int tick_broadcast_update_freq(struct clock_event_device *dev, u32 freq); |
---|
74 | 72 | extern struct tick_device *tick_get_broadcast_device(void); |
---|
75 | 73 | extern struct cpumask *tick_get_broadcast_mask(void); |
---|
| 74 | +extern const struct clock_event_device *tick_get_wakeup_device(int cpu); |
---|
76 | 75 | # else /* !CONFIG_GENERIC_CLOCKEVENTS_BROADCAST: */ |
---|
77 | | -static inline void tick_install_broadcast_device(struct clock_event_device *dev) { } |
---|
| 76 | +static inline void tick_install_broadcast_device(struct clock_event_device *dev, int cpu) { } |
---|
78 | 77 | static inline int tick_is_broadcast_device(struct clock_event_device *dev) { return 0; } |
---|
79 | 78 | static inline int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu) { return 0; } |
---|
80 | 79 | static inline void tick_do_periodic_broadcast(struct clock_event_device *d) { } |
---|
81 | | -static inline void tick_shutdown_broadcast(unsigned int cpu) { } |
---|
82 | 80 | static inline void tick_suspend_broadcast(void) { } |
---|
83 | 81 | static inline void tick_resume_broadcast(void) { } |
---|
84 | 82 | static inline bool tick_resume_check_broadcast(void) { return false; } |
---|
.. | .. |
---|
128 | 126 | /* Functions related to oneshot broadcasting */ |
---|
129 | 127 | #if defined(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) && defined(CONFIG_TICK_ONESHOT) |
---|
130 | 128 | extern void tick_broadcast_switch_to_oneshot(void); |
---|
131 | | -extern void tick_shutdown_broadcast_oneshot(unsigned int cpu); |
---|
132 | 129 | extern int tick_broadcast_oneshot_active(void); |
---|
133 | 130 | extern void tick_check_oneshot_broadcast_this_cpu(void); |
---|
134 | 131 | bool tick_broadcast_oneshot_available(void); |
---|
135 | 132 | extern struct cpumask *tick_get_broadcast_oneshot_mask(void); |
---|
136 | 133 | #else /* !(BROADCAST && ONESHOT): */ |
---|
137 | 134 | static inline void tick_broadcast_switch_to_oneshot(void) { } |
---|
138 | | -static inline void tick_shutdown_broadcast_oneshot(unsigned int cpu) { } |
---|
139 | 135 | static inline int tick_broadcast_oneshot_active(void) { return 0; } |
---|
140 | 136 | static inline void tick_check_oneshot_broadcast_this_cpu(void) { } |
---|
141 | 137 | static inline bool tick_broadcast_oneshot_available(void) { return tick_oneshot_possible(); } |
---|
142 | 138 | #endif /* !(BROADCAST && ONESHOT) */ |
---|
| 139 | + |
---|
| 140 | +#if defined(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) && defined(CONFIG_HOTPLUG_CPU) |
---|
| 141 | +extern void tick_broadcast_offline(unsigned int cpu); |
---|
| 142 | +#else |
---|
| 143 | +static inline void tick_broadcast_offline(unsigned int cpu) { } |
---|
| 144 | +#endif |
---|
143 | 145 | |
---|
144 | 146 | /* NO_HZ_FULL internal */ |
---|
145 | 147 | #ifdef CONFIG_NO_HZ_FULL |
---|
.. | .. |
---|
163 | 165 | |
---|
164 | 166 | extern u64 get_next_timer_interrupt(unsigned long basej, u64 basem); |
---|
165 | 167 | void timer_clear_idle(void); |
---|
| 168 | + |
---|
| 169 | +void clock_was_set(void); |
---|
| 170 | +void clock_was_set_delayed(void); |
---|