/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM pagefault

#if !defined(_TRACE_PAGEFAULT_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_PAGEFAULT_H

#include <linux/tracepoint.h>
#include <linux/mm.h>

DECLARE_EVENT_CLASS(spf,

	TP_PROTO(unsigned long caller,
		 struct vm_area_struct *vma, unsigned long address),

	TP_ARGS(caller, vma, address),

	TP_STRUCT__entry(
		__field(unsigned long, caller)
		__field(unsigned long, vm_start)
		__field(unsigned long, vm_end)
		__field(unsigned long, address)
	),

	TP_fast_assign(
		__entry->caller		= caller;
		__entry->vm_start	= vma->vm_start;
		__entry->vm_end		= vma->vm_end;
		__entry->address	= address;
	),

	TP_printk("ip:%lx vma:%lx-%lx address:%lx",
		  __entry->caller, __entry->vm_start, __entry->vm_end,
		  __entry->address)
);

DEFINE_EVENT(spf, spf_vma_changed,

	TP_PROTO(unsigned long caller,
		 struct vm_area_struct *vma, unsigned long address),

	TP_ARGS(caller, vma, address)
);

DEFINE_EVENT(spf, spf_vma_noanon,

	TP_PROTO(unsigned long caller,
		 struct vm_area_struct *vma, unsigned long address),

	TP_ARGS(caller, vma, address)
);

DEFINE_EVENT(spf, spf_vma_notsup,

	TP_PROTO(unsigned long caller,
		 struct vm_area_struct *vma, unsigned long address),

	TP_ARGS(caller, vma, address)
);

DEFINE_EVENT(spf, spf_vma_access,

	TP_PROTO(unsigned long caller,
		 struct vm_area_struct *vma, unsigned long address),

	TP_ARGS(caller, vma, address)
);

DEFINE_EVENT(spf, spf_pmd_changed,

	TP_PROTO(unsigned long caller,
		 struct vm_area_struct *vma, unsigned long address),

	TP_ARGS(caller, vma, address)
);

#endif /* _TRACE_PAGEFAULT_H */

/* This part must be outside protection */
#include <trace/define_trace.h>
