hrtimers: Split out hrtimer_types.h
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 11 Dec 2023 16:52:02 +0000 (11:52 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 21 Dec 2023 00:26:30 +0000 (19:26 -0500)
We need to reduce the scope of what's included in sched.h: task_struct
includes a hrtimer, so split out the core types into their own header.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Cc: Thomas Gleixner <tglx@linutronix.de>
include/linux/hrtimer.h
include/linux/hrtimer_types.h [new file with mode: 0644]
include/linux/sched.h

index 02d264ca9dce4752d3ab24cd4d63f4b09c56ffea..87e3bedf8eb00323c102787243e7dbfd045ba4e9 100644 (file)
 #define _LINUX_HRTIMER_H
 
 #include <linux/hrtimer_defs.h>
-#include <linux/rbtree.h>
+#include <linux/hrtimer_types.h>
 #include <linux/init.h>
 #include <linux/list.h>
 #include <linux/percpu-defs.h>
+#include <linux/rbtree.h>
 #include <linux/seqlock.h>
 #include <linux/timer.h>
-#include <linux/timerqueue.h>
 
 struct hrtimer_clock_base;
 struct hrtimer_cpu_base;
@@ -59,14 +59,6 @@ enum hrtimer_mode {
        HRTIMER_MODE_REL_PINNED_HARD = HRTIMER_MODE_REL_PINNED | HRTIMER_MODE_HARD,
 };
 
-/*
- * Return values for the callback function
- */
-enum hrtimer_restart {
-       HRTIMER_NORESTART,      /* Timer is not restarted */
-       HRTIMER_RESTART,        /* Timer must be restarted */
-};
-
 /*
  * Values to track state of the timer
  *
@@ -94,38 +86,6 @@ enum hrtimer_restart {
 #define HRTIMER_STATE_INACTIVE 0x00
 #define HRTIMER_STATE_ENQUEUED 0x01
 
-/**
- * struct hrtimer - the basic hrtimer structure
- * @node:      timerqueue node, which also manages node.expires,
- *             the absolute expiry time in the hrtimers internal
- *             representation. The time is related to the clock on
- *             which the timer is based. Is setup by adding
- *             slack to the _softexpires value. For non range timers
- *             identical to _softexpires.
- * @_softexpires: the absolute earliest expiry time of the hrtimer.
- *             The time which was given as expiry time when the timer
- *             was armed.
- * @function:  timer expiry callback function
- * @base:      pointer to the timer base (per cpu and per clock)
- * @state:     state information (See bit values above)
- * @is_rel:    Set if the timer was armed relative
- * @is_soft:   Set if hrtimer will be expired in soft interrupt context.
- * @is_hard:   Set if hrtimer will be expired in hard interrupt context
- *             even on RT.
- *
- * The hrtimer structure must be initialized by hrtimer_init()
- */
-struct hrtimer {
-       struct timerqueue_node          node;
-       ktime_t                         _softexpires;
-       enum hrtimer_restart            (*function)(struct hrtimer *);
-       struct hrtimer_clock_base       *base;
-       u8                              state;
-       u8                              is_rel;
-       u8                              is_soft;
-       u8                              is_hard;
-};
-
 /**
  * struct hrtimer_sleeper - simple sleeper structure
  * @timer:     embedded timer structure
diff --git a/include/linux/hrtimer_types.h b/include/linux/hrtimer_types.h
new file mode 100644 (file)
index 0000000..f4ef391
--- /dev/null
@@ -0,0 +1,50 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_HRTIMER_TYPES_H
+#define _LINUX_HRTIMER_TYPES_H
+
+#include <linux/types.h>
+#include <linux/timerqueue.h>
+
+struct hrtimer_clock_base;
+
+/*
+ * Return values for the callback function
+ */
+enum hrtimer_restart {
+       HRTIMER_NORESTART,      /* Timer is not restarted */
+       HRTIMER_RESTART,        /* Timer must be restarted */
+};
+
+/**
+ * struct hrtimer - the basic hrtimer structure
+ * @node:      timerqueue node, which also manages node.expires,
+ *             the absolute expiry time in the hrtimers internal
+ *             representation. The time is related to the clock on
+ *             which the timer is based. Is setup by adding
+ *             slack to the _softexpires value. For non range timers
+ *             identical to _softexpires.
+ * @_softexpires: the absolute earliest expiry time of the hrtimer.
+ *             The time which was given as expiry time when the timer
+ *             was armed.
+ * @function:  timer expiry callback function
+ * @base:      pointer to the timer base (per cpu and per clock)
+ * @state:     state information (See bit values above)
+ * @is_rel:    Set if the timer was armed relative
+ * @is_soft:   Set if hrtimer will be expired in soft interrupt context.
+ * @is_hard:   Set if hrtimer will be expired in hard interrupt context
+ *             even on RT.
+ *
+ * The hrtimer structure must be initialized by hrtimer_init()
+ */
+struct hrtimer {
+       struct timerqueue_node          node;
+       ktime_t                         _softexpires;
+       enum hrtimer_restart            (*function)(struct hrtimer *);
+       struct hrtimer_clock_base       *base;
+       u8                              state;
+       u8                              is_rel;
+       u8                              is_soft;
+       u8                              is_hard;
+};
+
+#endif /* _LINUX_HRTIMER_TYPES_H */
index 7501a3451a20170282924f1a6bf7ffea0d6e00e8..3762809652dac6a8a5552a7b42a863cb094d0722 100644 (file)
@@ -17,7 +17,7 @@
 #include <linux/kmsan_types.h>
 #include <linux/mutex.h>
 #include <linux/plist.h>
-#include <linux/hrtimer.h>
+#include <linux/hrtimer_types.h>
 #include <linux/irqflags.h>
 #include <linux/seccomp.h>
 #include <linux/nodemask_types.h>