162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#undef TRACE_SYSTEM
362306a36Sopenharmony_ci#define TRACE_SYSTEM csd
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#if !defined(_TRACE_CSD_H) || defined(TRACE_HEADER_MULTI_READ)
662306a36Sopenharmony_ci#define _TRACE_CSD_H
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <linux/tracepoint.h>
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciTRACE_EVENT(csd_queue_cpu,
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci	TP_PROTO(const unsigned int cpu,
1362306a36Sopenharmony_ci		unsigned long callsite,
1462306a36Sopenharmony_ci		smp_call_func_t func,
1562306a36Sopenharmony_ci		struct __call_single_data *csd),
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci	TP_ARGS(cpu, callsite, func, csd),
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	TP_STRUCT__entry(
2062306a36Sopenharmony_ci		__field(unsigned int, cpu)
2162306a36Sopenharmony_ci		__field(void *, callsite)
2262306a36Sopenharmony_ci		__field(void *, func)
2362306a36Sopenharmony_ci		__field(void *, csd)
2462306a36Sopenharmony_ci		),
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	    TP_fast_assign(
2762306a36Sopenharmony_ci		__entry->cpu = cpu;
2862306a36Sopenharmony_ci		__entry->callsite = (void *)callsite;
2962306a36Sopenharmony_ci		__entry->func = func;
3062306a36Sopenharmony_ci		__entry->csd  = csd;
3162306a36Sopenharmony_ci		),
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	TP_printk("cpu=%u callsite=%pS func=%ps csd=%p",
3462306a36Sopenharmony_ci		__entry->cpu, __entry->callsite, __entry->func, __entry->csd)
3562306a36Sopenharmony_ci	);
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci/*
3862306a36Sopenharmony_ci * Tracepoints for a function which is called as an effect of smp_call_function.*
3962306a36Sopenharmony_ci */
4062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(csd_function,
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	TP_PROTO(smp_call_func_t func, struct __call_single_data *csd),
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	TP_ARGS(func, csd),
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci	TP_STRUCT__entry(
4762306a36Sopenharmony_ci		__field(void *,	func)
4862306a36Sopenharmony_ci		__field(void *,	csd)
4962306a36Sopenharmony_ci	),
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci	TP_fast_assign(
5262306a36Sopenharmony_ci		__entry->func	= func;
5362306a36Sopenharmony_ci		__entry->csd	= csd;
5462306a36Sopenharmony_ci	),
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci	TP_printk("func=%ps, csd=%p", __entry->func, __entry->csd)
5762306a36Sopenharmony_ci);
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciDEFINE_EVENT(csd_function, csd_function_entry,
6062306a36Sopenharmony_ci	TP_PROTO(smp_call_func_t func, struct __call_single_data *csd),
6162306a36Sopenharmony_ci	TP_ARGS(func, csd)
6262306a36Sopenharmony_ci);
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciDEFINE_EVENT(csd_function, csd_function_exit,
6562306a36Sopenharmony_ci	TP_PROTO(smp_call_func_t func, struct __call_single_data *csd),
6662306a36Sopenharmony_ci	TP_ARGS(func, csd)
6762306a36Sopenharmony_ci);
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci#endif /* _TRACE_CSD_H */
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci/* This part must be outside protection */
7262306a36Sopenharmony_ci#include <trace/define_trace.h>
73