/* 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 #include 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_pte_lock, TP_PROTO(unsigned long caller, struct vm_area_struct *vma, unsigned long address), TP_ARGS(caller, vma, 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