/* 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>
