hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/kernel/time/tick-internal.h
....@@ -15,7 +15,6 @@
1515
1616 DECLARE_PER_CPU(struct tick_device, tick_cpu_device);
1717 extern ktime_t tick_next_period;
18
-extern ktime_t tick_period;
1918 extern int tick_do_timer_cpu __read_mostly;
2019
2120 extern void tick_setup_periodic(struct clock_event_device *dev, int broadcast);
....@@ -62,9 +61,8 @@
6261 /* Broadcasting support */
6362 # ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
6463 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);
6665 extern int tick_is_broadcast_device(struct clock_event_device *dev);
67
-extern void tick_shutdown_broadcast(unsigned int cpu);
6866 extern void tick_suspend_broadcast(void);
6967 extern void tick_resume_broadcast(void);
7068 extern bool tick_resume_check_broadcast(void);
....@@ -73,12 +71,12 @@
7371 extern int tick_broadcast_update_freq(struct clock_event_device *dev, u32 freq);
7472 extern struct tick_device *tick_get_broadcast_device(void);
7573 extern struct cpumask *tick_get_broadcast_mask(void);
74
+extern const struct clock_event_device *tick_get_wakeup_device(int cpu);
7675 # 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) { }
7877 static inline int tick_is_broadcast_device(struct clock_event_device *dev) { return 0; }
7978 static inline int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu) { return 0; }
8079 static inline void tick_do_periodic_broadcast(struct clock_event_device *d) { }
81
-static inline void tick_shutdown_broadcast(unsigned int cpu) { }
8280 static inline void tick_suspend_broadcast(void) { }
8381 static inline void tick_resume_broadcast(void) { }
8482 static inline bool tick_resume_check_broadcast(void) { return false; }
....@@ -128,18 +126,22 @@
128126 /* Functions related to oneshot broadcasting */
129127 #if defined(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) && defined(CONFIG_TICK_ONESHOT)
130128 extern void tick_broadcast_switch_to_oneshot(void);
131
-extern void tick_shutdown_broadcast_oneshot(unsigned int cpu);
132129 extern int tick_broadcast_oneshot_active(void);
133130 extern void tick_check_oneshot_broadcast_this_cpu(void);
134131 bool tick_broadcast_oneshot_available(void);
135132 extern struct cpumask *tick_get_broadcast_oneshot_mask(void);
136133 #else /* !(BROADCAST && ONESHOT): */
137134 static inline void tick_broadcast_switch_to_oneshot(void) { }
138
-static inline void tick_shutdown_broadcast_oneshot(unsigned int cpu) { }
139135 static inline int tick_broadcast_oneshot_active(void) { return 0; }
140136 static inline void tick_check_oneshot_broadcast_this_cpu(void) { }
141137 static inline bool tick_broadcast_oneshot_available(void) { return tick_oneshot_possible(); }
142138 #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
143145
144146 /* NO_HZ_FULL internal */
145147 #ifdef CONFIG_NO_HZ_FULL
....@@ -163,3 +165,6 @@
163165
164166 extern u64 get_next_timer_interrupt(unsigned long basej, u64 basem);
165167 void timer_clear_idle(void);
168
+
169
+void clock_was_set(void);
170
+void clock_was_set_delayed(void);