1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM ipi 4 5 #if !defined(_TRACE_IPI_H) || defined(TRACE_HEADER_MULTI_READ) 6 #define _TRACE_IPI_H 7 8 #include <linux/tracepoint.h> 9 10 /** 11 * ipi_raise - called when a smp cross call is made 12 * 13 * @mask: mask of recipient CPUs for the IPI 14 * @reason: string identifying the IPI purpose 15 * 16 * It is necessary for @reason to be a static string declared with 17 * __tracepoint_string. 18 */ 19 TRACE_EVENT(ipi_raise, 20 21 TP_PROTO(const struct cpumask *mask, const char *reason), 22 23 TP_ARGS(mask, reason), 24 25 TP_STRUCT__entry( 26 __bitmask(target_cpus, nr_cpumask_bits) 27 __field(const char *, reason) 28 ), 29 30 TP_fast_assign( 31 __assign_bitmask(target_cpus, cpumask_bits(mask), nr_cpumask_bits); 32 __entry->reason = reason; 33 ), 34 35 TP_printk("target_mask=%s (%s)", __get_bitmask(target_cpus), __entry->reason) 36 ); 37 38 DECLARE_EVENT_CLASS(ipi_handler, 39 40 TP_PROTO(const char *reason), 41 42 TP_ARGS(reason), 43 44 TP_STRUCT__entry( 45 __field(const char *, reason) 46 ), 47 48 TP_fast_assign( 49 __entry->reason = reason; 50 ), 51 52 TP_printk("(%s)", __entry->reason) 53 ); 54 55 /** 56 * ipi_entry - called immediately before the IPI handler 57 * 58 * @reason: string identifying the IPI purpose 59 * 60 * It is necessary for @reason to be a static string declared with 61 * __tracepoint_string, ideally the same as used with trace_ipi_raise 62 * for that IPI. 63 */ 64 DEFINE_EVENT(ipi_handler, ipi_entry, 65 66 TP_PROTO(const char *reason), 67 68 TP_ARGS(reason) 69 ); 70 71 /** 72 * ipi_exit - called immediately after the IPI handler returns 73 * 74 * @reason: string identifying the IPI purpose 75 * 76 * It is necessary for @reason to be a static string declared with 77 * __tracepoint_string, ideally the same as used with trace_ipi_raise for 78 * that IPI. 79 */ 80 DEFINE_EVENT(ipi_handler, ipi_exit, 81 82 TP_PROTO(const char *reason), 83 84 TP_ARGS(reason) 85 ); 86 87 #endif /* _TRACE_IPI_H */ 88 89 /* This part must be outside protection */ 90 #include <trace/define_trace.h> 91