[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAAfh-jM6TSbFHUYCi0kC7JgszCaz=-So7+=at-aDfTSrOPjraQ@mail.gmail.com>
Date: Fri, 15 Mar 2024 11:12:31 +0800
From: Enlin Mu <enlinmu@...il.com>
To: Thomas Gleixner <tglx@...utronix.de>
Cc: Enlin Mu <enlin.mu@...look.com>, linux-kernel@...r.kernel.org, enlin.mu@...soc.com,
linux-hardening@...r.kernel.org
Subject: Re: [PATCH] hrtimer:Add get_hrtimer_cpu_base()
Thomas Gleixner <tglx@...utronix.de> 于2024年3月14日周四 19:59写道:
>
> On Thu, Mar 14 2024 at 18:45, Enlin Mu wrote:
> > Thomas Gleixner <tglx@...utronix.de> 于2024年3月14日周四 18:22写道:
> >>
> >> On Wed, Mar 13 2024 at 05:30, Enlin Mu wrote:
> >> > From: Enlin Mu <enlin.mu@...soc.com>
> >> >
> >> > On the Arm platform,arch_timer may occur irq strom,
> >> > By using the next_timer of hrtimer_cpu_base, it is
> >> > possible to quickly locate abnormal timers.
> >> > As it is an out of tree modules,the function needs
> >> > to be exproted.
> >>
> >> No. We are not exporting for out of tree code.
> > Can you explain it?
>
> Exporting functions or variables requires an in tree usecase.
>
OK, Thanks, I got it.
If this pathc is following(exprot hrtimer_bases):
---
include/linux/hrtimer.h | 1 +
kernel/time/hrtimer.c | 1 +
kernel/time/tick-internal.h | 1 -
kernel/time/timer_list.c | 1 +
4 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 2a37d2a8e808..259462ad6e4a 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -278,6 +278,7 @@ static inline void hrtimer_start(struct hrtimer
*timer, ktime_t tim,
extern int hrtimer_cancel(struct hrtimer *timer);
extern int hrtimer_try_to_cancel(struct hrtimer *timer);
extern struct hrtimer_cpu_base *get_hrtimer_cpu_base(int cpu);
+DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases);
static inline void hrtimer_start_expires(struct hrtimer *timer,
enum hrtimer_mode mode)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index f7cf7d48b91d..49024d07c61b 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -113,6 +113,7 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) =
},
}
};
+EXPORT_PER_CPU_SYMBOL(hrtimer_bases);
static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = {
/* Make sure we catch unsupported clockids */
diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
index 5f2105e637bd..f649d3509060 100644
--- a/kernel/time/tick-internal.h
+++ b/kernel/time/tick-internal.h
@@ -175,7 +175,6 @@ static inline void timers_update_nohz(void) { }
#define tick_nohz_active (0)
#endif
-DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases);
extern u64 get_next_timer_interrupt(unsigned long basej, u64 basem);
u64 timer_base_try_to_set_idle(unsigned long basej, u64 basem, bool *idle);
diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
index 1c311c46da50..877b9130cd64 100644
--- a/kernel/time/timer_list.c
+++ b/kernel/time/timer_list.c
@@ -14,6 +14,7 @@
#include <linux/nmi.h>
#include <linux/uaccess.h>
+#include <linux/hrtimer.h>
#include "tick-internal.h"
--
Please review and comment.
Thanks.
Powered by blists - more mailing lists