]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
hrtimers: Move hrtimer base related definitions into hrtimer_defs.h
authorAnna-Maria Behnsen <anna-maria@linutronix.de>
Tue, 23 Jan 2024 16:46:55 +0000 (17:46 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 19 Feb 2024 08:37:59 +0000 (09:37 +0100)
hrtimer base related struct definitions are part of hrtimers.h as it is
required there. With this, also the struct documentation which is for core
code internal use, is exposed into the general api.

To prevent this, move all core internal definitions and the related
includes into hrtimer_defs.h.

Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240123164702.55612-2-anna-maria@linutronix.de
include/linux/hrtimer.h
include/linux/hrtimer_defs.h

index 87e3bedf8eb00323c102787243e7dbfd045ba4e9..792a0ac75378817389dbeea9c90524bf2fd9bebf 100644 (file)
 #include <linux/list.h>
 #include <linux/percpu-defs.h>
 #include <linux/rbtree.h>
-#include <linux/seqlock.h>
 #include <linux/timer.h>
 
-struct hrtimer_clock_base;
-struct hrtimer_cpu_base;
-
 /*
  * Mode arguments of xxx_hrtimer functions:
  *
@@ -98,105 +94,6 @@ struct hrtimer_sleeper {
        struct task_struct *task;
 };
 
-#ifdef CONFIG_64BIT
-# define __hrtimer_clock_base_align    ____cacheline_aligned
-#else
-# define __hrtimer_clock_base_align
-#endif
-
-/**
- * struct hrtimer_clock_base - the timer base for a specific clock
- * @cpu_base:          per cpu clock base
- * @index:             clock type index for per_cpu support when moving a
- *                     timer to a base on another cpu.
- * @clockid:           clock id for per_cpu support
- * @seq:               seqcount around __run_hrtimer
- * @running:           pointer to the currently running hrtimer
- * @active:            red black tree root node for the active timers
- * @get_time:          function to retrieve the current time of the clock
- * @offset:            offset of this clock to the monotonic base
- */
-struct hrtimer_clock_base {
-       struct hrtimer_cpu_base *cpu_base;
-       unsigned int            index;
-       clockid_t               clockid;
-       seqcount_raw_spinlock_t seq;
-       struct hrtimer          *running;
-       struct timerqueue_head  active;
-       ktime_t                 (*get_time)(void);
-       ktime_t                 offset;
-} __hrtimer_clock_base_align;
-
-enum  hrtimer_base_type {
-       HRTIMER_BASE_MONOTONIC,
-       HRTIMER_BASE_REALTIME,
-       HRTIMER_BASE_BOOTTIME,
-       HRTIMER_BASE_TAI,
-       HRTIMER_BASE_MONOTONIC_SOFT,
-       HRTIMER_BASE_REALTIME_SOFT,
-       HRTIMER_BASE_BOOTTIME_SOFT,
-       HRTIMER_BASE_TAI_SOFT,
-       HRTIMER_MAX_CLOCK_BASES,
-};
-
-/**
- * struct hrtimer_cpu_base - the per cpu clock bases
- * @lock:              lock protecting the base and associated clock bases
- *                     and timers
- * @cpu:               cpu number
- * @active_bases:      Bitfield to mark bases with active timers
- * @clock_was_set_seq: Sequence counter of clock was set events
- * @hres_active:       State of high resolution mode
- * @in_hrtirq:         hrtimer_interrupt() is currently executing
- * @hang_detected:     The last hrtimer interrupt detected a hang
- * @softirq_activated: displays, if the softirq is raised - update of softirq
- *                     related settings is not required then.
- * @nr_events:         Total number of hrtimer interrupt events
- * @nr_retries:                Total number of hrtimer interrupt retries
- * @nr_hangs:          Total number of hrtimer interrupt hangs
- * @max_hang_time:     Maximum time spent in hrtimer_interrupt
- * @softirq_expiry_lock: Lock which is taken while softirq based hrtimer are
- *                      expired
- * @timer_waiters:     A hrtimer_cancel() invocation waits for the timer
- *                     callback to finish.
- * @expires_next:      absolute time of the next event, is required for remote
- *                     hrtimer enqueue; it is the total first expiry time (hard
- *                     and soft hrtimer are taken into account)
- * @next_timer:                Pointer to the first expiring timer
- * @softirq_expires_next: Time to check, if soft queues needs also to be expired
- * @softirq_next_timer: Pointer to the first expiring softirq based timer
- * @clock_base:                array of clock bases for this cpu
- *
- * Note: next_timer is just an optimization for __remove_hrtimer().
- *      Do not dereference the pointer because it is not reliable on
- *      cross cpu removals.
- */
-struct hrtimer_cpu_base {
-       raw_spinlock_t                  lock;
-       unsigned int                    cpu;
-       unsigned int                    active_bases;
-       unsigned int                    clock_was_set_seq;
-       unsigned int                    hres_active             : 1,
-                                       in_hrtirq               : 1,
-                                       hang_detected           : 1,
-                                       softirq_activated       : 1;
-#ifdef CONFIG_HIGH_RES_TIMERS
-       unsigned int                    nr_events;
-       unsigned short                  nr_retries;
-       unsigned short                  nr_hangs;
-       unsigned int                    max_hang_time;
-#endif
-#ifdef CONFIG_PREEMPT_RT
-       spinlock_t                      softirq_expiry_lock;
-       atomic_t                        timer_waiters;
-#endif
-       ktime_t                         expires_next;
-       struct hrtimer                  *next_timer;
-       ktime_t                         softirq_expires_next;
-       struct hrtimer                  *softirq_next_timer;
-       struct hrtimer_clock_base       clock_base[HRTIMER_MAX_CLOCK_BASES];
-} ____cacheline_aligned;
-
 static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time)
 {
        timer->node.expires = time;
index 2d3e3c5fb94662cd497171e758b05364475d2ca8..b12869dba59a0d2b3c6c59cd29780f11b636c2e4 100644 (file)
@@ -3,6 +3,8 @@
 #define _LINUX_HRTIMER_DEFS_H
 
 #include <linux/ktime.h>
+#include <linux/timerqueue.h>
+#include <linux/seqlock.h>
 
 #ifdef CONFIG_HIGH_RES_TIMERS
 
 
 #endif
 
+#ifdef CONFIG_64BIT
+# define __hrtimer_clock_base_align    ____cacheline_aligned
+#else
+# define __hrtimer_clock_base_align
+#endif
+
+/**
+ * struct hrtimer_clock_base - the timer base for a specific clock
+ * @cpu_base:          per cpu clock base
+ * @index:             clock type index for per_cpu support when moving a
+ *                     timer to a base on another cpu.
+ * @clockid:           clock id for per_cpu support
+ * @seq:               seqcount around __run_hrtimer
+ * @running:           pointer to the currently running hrtimer
+ * @active:            red black tree root node for the active timers
+ * @get_time:          function to retrieve the current time of the clock
+ * @offset:            offset of this clock to the monotonic base
+ */
+struct hrtimer_clock_base {
+       struct hrtimer_cpu_base *cpu_base;
+       unsigned int            index;
+       clockid_t               clockid;
+       seqcount_raw_spinlock_t seq;
+       struct hrtimer          *running;
+       struct timerqueue_head  active;
+       ktime_t                 (*get_time)(void);
+       ktime_t                 offset;
+} __hrtimer_clock_base_align;
+
+enum  hrtimer_base_type {
+       HRTIMER_BASE_MONOTONIC,
+       HRTIMER_BASE_REALTIME,
+       HRTIMER_BASE_BOOTTIME,
+       HRTIMER_BASE_TAI,
+       HRTIMER_BASE_MONOTONIC_SOFT,
+       HRTIMER_BASE_REALTIME_SOFT,
+       HRTIMER_BASE_BOOTTIME_SOFT,
+       HRTIMER_BASE_TAI_SOFT,
+       HRTIMER_MAX_CLOCK_BASES,
+};
+
+/**
+ * struct hrtimer_cpu_base - the per cpu clock bases
+ * @lock:              lock protecting the base and associated clock bases
+ *                     and timers
+ * @cpu:               cpu number
+ * @active_bases:      Bitfield to mark bases with active timers
+ * @clock_was_set_seq: Sequence counter of clock was set events
+ * @hres_active:       State of high resolution mode
+ * @in_hrtirq:         hrtimer_interrupt() is currently executing
+ * @hang_detected:     The last hrtimer interrupt detected a hang
+ * @softirq_activated: displays, if the softirq is raised - update of softirq
+ *                     related settings is not required then.
+ * @nr_events:         Total number of hrtimer interrupt events
+ * @nr_retries:                Total number of hrtimer interrupt retries
+ * @nr_hangs:          Total number of hrtimer interrupt hangs
+ * @max_hang_time:     Maximum time spent in hrtimer_interrupt
+ * @softirq_expiry_lock: Lock which is taken while softirq based hrtimer are
+ *                      expired
+ * @timer_waiters:     A hrtimer_cancel() invocation waits for the timer
+ *                     callback to finish.
+ * @expires_next:      absolute time of the next event, is required for remote
+ *                     hrtimer enqueue; it is the total first expiry time (hard
+ *                     and soft hrtimer are taken into account)
+ * @next_timer:                Pointer to the first expiring timer
+ * @softirq_expires_next: Time to check, if soft queues needs also to be expired
+ * @softirq_next_timer: Pointer to the first expiring softirq based timer
+ * @clock_base:                array of clock bases for this cpu
+ *
+ * Note: next_timer is just an optimization for __remove_hrtimer().
+ *      Do not dereference the pointer because it is not reliable on
+ *      cross cpu removals.
+ */
+struct hrtimer_cpu_base {
+       raw_spinlock_t                  lock;
+       unsigned int                    cpu;
+       unsigned int                    active_bases;
+       unsigned int                    clock_was_set_seq;
+       unsigned int                    hres_active             : 1,
+                                       in_hrtirq               : 1,
+                                       hang_detected           : 1,
+                                       softirq_activated       : 1;
+#ifdef CONFIG_HIGH_RES_TIMERS
+       unsigned int                    nr_events;
+       unsigned short                  nr_retries;
+       unsigned short                  nr_hangs;
+       unsigned int                    max_hang_time;
+#endif
+#ifdef CONFIG_PREEMPT_RT
+       spinlock_t                      softirq_expiry_lock;
+       atomic_t                        timer_waiters;
+#endif
+       ktime_t                         expires_next;
+       struct hrtimer                  *next_timer;
+       ktime_t                         softirq_expires_next;
+       struct hrtimer                  *softirq_next_timer;
+       struct hrtimer_clock_base       clock_base[HRTIMER_MAX_CLOCK_BASES];
+} ____cacheline_aligned;
+
+
 #endif