1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _LINUX_FTRACE_IRQ_H 3 #define _LINUX_FTRACE_IRQ_H 4 5 6 #ifdef CONFIG_FTRACE_NMI_ENTER 7 extern void arch_ftrace_nmi_enter(void); 8 extern void arch_ftrace_nmi_exit(void); 9 #else 10 static inline void arch_ftrace_nmi_enter(void) { } 11 static inline void arch_ftrace_nmi_exit(void) { } 12 #endif 13 14 #ifdef CONFIG_HWLAT_TRACER 15 extern bool trace_hwlat_callback_enabled; 16 extern void trace_hwlat_callback(bool enter); 17 #endif 18 19 static inline void ftrace_nmi_enter(void) 20 { 21 #ifdef CONFIG_HWLAT_TRACER 22 if (trace_hwlat_callback_enabled) 23 trace_hwlat_callback(true); 24 #endif 25 arch_ftrace_nmi_enter(); 26 } 27 28 static inline void ftrace_nmi_exit(void) 29 { 30 arch_ftrace_nmi_exit(); 31 #ifdef CONFIG_HWLAT_TRACER 32 if (trace_hwlat_callback_enabled) 33 trace_hwlat_callback(false); 34 #endif 35 } 36 37 #endif /* _LINUX_FTRACE_IRQ_H */ 38