| /* SPDX-License-Identifier: GPL-2.0 */ |
| #undef TRACE_SYSTEM |
| #define TRACE_SYSTEM csd |
| |
| #if !defined(_TRACE_CSD_H) || defined(TRACE_HEADER_MULTI_READ) |
| #define _TRACE_CSD_H |
| |
| #include <linux/tracepoint.h> |
| |
| TRACE_EVENT(csd_queue_cpu, |
| |
| TP_PROTO(const unsigned int cpu, |
| unsigned long callsite, |
| smp_call_func_t func, |
| struct __call_single_data *csd), |
| |
| TP_ARGS(cpu, callsite, func, csd), |
| |
| TP_STRUCT__entry( |
| __field(unsigned int, cpu) |
| __field(void *, callsite) |
| __field(void *, func) |
| __field(void *, csd) |
| ), |
| |
| TP_fast_assign( |
| __entry->cpu = cpu; |
| __entry->callsite = (void *)callsite; |
| __entry->func = func; |
| __entry->csd = csd; |
| ), |
| |
| TP_printk("cpu=%u callsite=%pS func=%ps csd=%p", |
| __entry->cpu, __entry->callsite, __entry->func, __entry->csd) |
| ); |
| |
| /* |
| * Tracepoints for a function which is called as an effect of smp_call_function.* |
| */ |
| DECLARE_EVENT_CLASS(csd_function, |
| |
| TP_PROTO(smp_call_func_t func, struct __call_single_data *csd), |
| |
| TP_ARGS(func, csd), |
| |
| TP_STRUCT__entry( |
| __field(void *, func) |
| __field(void *, csd) |
| ), |
| |
| TP_fast_assign( |
| __entry->func = func; |
| __entry->csd = csd; |
| ), |
| |
| TP_printk("func=%ps, csd=%p", __entry->func, __entry->csd) |
| ); |
| |
| DEFINE_EVENT(csd_function, csd_function_entry, |
| TP_PROTO(smp_call_func_t func, struct __call_single_data *csd), |
| TP_ARGS(func, csd) |
| ); |
| |
| DEFINE_EVENT(csd_function, csd_function_exit, |
| TP_PROTO(smp_call_func_t func, struct __call_single_data *csd), |
| TP_ARGS(func, csd) |
| ); |
| |
| #endif /* _TRACE_CSD_H */ |
| |
| /* This part must be outside protection */ |
| #include <trace/define_trace.h> |