162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef _LINUX_FTRACE_IRQ_H
362306a36Sopenharmony_ci#define _LINUX_FTRACE_IRQ_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#ifdef CONFIG_HWLAT_TRACER
662306a36Sopenharmony_ciextern bool trace_hwlat_callback_enabled;
762306a36Sopenharmony_ciextern void trace_hwlat_callback(bool enter);
862306a36Sopenharmony_ci#endif
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifdef CONFIG_OSNOISE_TRACER
1162306a36Sopenharmony_ciextern bool trace_osnoise_callback_enabled;
1262306a36Sopenharmony_ciextern void trace_osnoise_callback(bool enter);
1362306a36Sopenharmony_ci#endif
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cistatic inline void ftrace_nmi_enter(void)
1662306a36Sopenharmony_ci{
1762306a36Sopenharmony_ci#ifdef CONFIG_HWLAT_TRACER
1862306a36Sopenharmony_ci	if (trace_hwlat_callback_enabled)
1962306a36Sopenharmony_ci		trace_hwlat_callback(true);
2062306a36Sopenharmony_ci#endif
2162306a36Sopenharmony_ci#ifdef CONFIG_OSNOISE_TRACER
2262306a36Sopenharmony_ci	if (trace_osnoise_callback_enabled)
2362306a36Sopenharmony_ci		trace_osnoise_callback(true);
2462306a36Sopenharmony_ci#endif
2562306a36Sopenharmony_ci}
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_cistatic inline void ftrace_nmi_exit(void)
2862306a36Sopenharmony_ci{
2962306a36Sopenharmony_ci#ifdef CONFIG_HWLAT_TRACER
3062306a36Sopenharmony_ci	if (trace_hwlat_callback_enabled)
3162306a36Sopenharmony_ci		trace_hwlat_callback(false);
3262306a36Sopenharmony_ci#endif
3362306a36Sopenharmony_ci#ifdef CONFIG_OSNOISE_TRACER
3462306a36Sopenharmony_ci	if (trace_osnoise_callback_enabled)
3562306a36Sopenharmony_ci		trace_osnoise_callback(false);
3662306a36Sopenharmony_ci#endif
3762306a36Sopenharmony_ci}
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci#endif /* _LINUX_FTRACE_IRQ_H */
40