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