Re: [PATCH 3/5] Add calls to translate Always Running Timer (ART) to system time
From: Paul Bolle <hidden>
Date: 2015-07-29 08:25:18
Also in:
lkml
On ma, 2015-07-27 at 17:46 -0700, Christopher Hall wrote:
quoted hunk ↗ jump to hunk
--- /dev/null +++ b/arch/x86/include/asm/art.h
+#ifndef CONFIG_X86_ART
+
+static inline int setup_art(void)
+{
+ return 0;
+}
+
+static inline bool has_art(void)
+{
+ return false;
+}
+
+static inline int art_to_rawmono64(struct timespec64 *rawmono, cycle_t art)
+{
+ return -ENXIO;
+}
+static inline int art_to_realtime64(struct timespec64 *realtime, cycle_t art)
+{
+ return -ENXIO;
+}
+static inline int art_to_mono64(struct timespec64 *mono, cycle_t art)
+{
+ return -ENXIO;
+}
+
+#else
+
+extern int setup_art(void);
+extern bool has_art(void);
+extern int art_to_rawmono64(struct timespec64 *rawmono, cycle_t art);
+extern int art_to_realtime64(struct timespec64 *realtime, cycle_t art);
+extern int art_to_mono64(struct timespec64 *mono, cycle_t art);
+
+#endifquoted hunk ↗ jump to hunk
--- /dev/null +++ b/arch/x86/kernel/art.c
+static bool has_art(void)
+{
+ return art_present;
+}
+EXPORT_SYMBOL(has_art);This exports a static function. Does that work?
+static int art_to_rawmono64(struct timespec64 *rawmono, cycle_t art)
+{
+ if (!checked_art_to_tsc(&art))
+ return -ENXIO;
+ return tsc_to_rawmono64(rawmono, art);
+}
+EXPORT_SYMBOL(art_to_rawmono64);
+
+static int art_to_realtime64(struct timespec64 *realtime, cycle_t art)
+{
+ if (!checked_art_to_tsc(&art))
+ return -ENXIO;
+ return tsc_to_realtime64(realtime, art);
+}
+EXPORT_SYMBOL(art_to_realtime64);
+
+static int art_to_mono64(struct timespec64 *mono, cycle_t art)
+{
+ if (!checked_art_to_tsc(&art))
+ return -ENXIO;
+ return tsc_to_mono64(mono, art);
+}
+EXPORT_SYMBOL(art_to_mono64);Ditto (three times). By the way, this series doesn't add users for art_to_mono64() and art_to_mono64(), right? Thanks, Paul Bolle