xref: /linux/include/trace/events/exceptions.h (revision 0aee0617267866555b4e35bd11e1fbb291fa9743)
1*06aa9378SNam Cao /* SPDX-License-Identifier: GPL-2.0 */
2*06aa9378SNam Cao #undef TRACE_SYSTEM
3*06aa9378SNam Cao #define TRACE_SYSTEM exceptions
4*06aa9378SNam Cao 
5*06aa9378SNam Cao #if !defined(_TRACE_PAGE_FAULT_H) || defined(TRACE_HEADER_MULTI_READ)
6*06aa9378SNam Cao #define _TRACE_PAGE_FAULT_H
7*06aa9378SNam Cao 
8*06aa9378SNam Cao #include <linux/tracepoint.h>
9*06aa9378SNam Cao 
10*06aa9378SNam Cao DECLARE_EVENT_CLASS(exceptions,
11*06aa9378SNam Cao 
12*06aa9378SNam Cao 	TP_PROTO(unsigned long address, struct pt_regs *regs,
13*06aa9378SNam Cao 		 unsigned long error_code),
14*06aa9378SNam Cao 
15*06aa9378SNam Cao 	TP_ARGS(address, regs, error_code),
16*06aa9378SNam Cao 
17*06aa9378SNam Cao 	TP_STRUCT__entry(
18*06aa9378SNam Cao 		__field(		unsigned long, address	)
19*06aa9378SNam Cao 		__field(		unsigned long, ip	)
20*06aa9378SNam Cao 		__field(		unsigned long, error_code )
21*06aa9378SNam Cao 	),
22*06aa9378SNam Cao 
23*06aa9378SNam Cao 	TP_fast_assign(
24*06aa9378SNam Cao 		__entry->address = address;
25*06aa9378SNam Cao 		__entry->ip = instruction_pointer(regs);
26*06aa9378SNam Cao 		__entry->error_code = error_code;
27*06aa9378SNam Cao 	),
28*06aa9378SNam Cao 
29*06aa9378SNam Cao 	TP_printk("address=%ps ip=%ps error_code=0x%lx",
30*06aa9378SNam Cao 		  (void *)__entry->address, (void *)__entry->ip,
31*06aa9378SNam Cao 		  __entry->error_code) );
32*06aa9378SNam Cao 
33*06aa9378SNam Cao DEFINE_EVENT(exceptions, page_fault_user,
34*06aa9378SNam Cao 	TP_PROTO(unsigned long address,	struct pt_regs *regs, unsigned long error_code),
35*06aa9378SNam Cao 	TP_ARGS(address, regs, error_code));
36*06aa9378SNam Cao DEFINE_EVENT(exceptions, page_fault_kernel,
37*06aa9378SNam Cao 	TP_PROTO(unsigned long address,	struct pt_regs *regs, unsigned long error_code),
38*06aa9378SNam Cao 	TP_ARGS(address, regs, error_code));
39*06aa9378SNam Cao 
40*06aa9378SNam Cao #endif /*  _TRACE_PAGE_FAULT_H */
41*06aa9378SNam Cao 
42*06aa9378SNam Cao /* This part must be outside protection */
43*06aa9378SNam Cao #include <trace/define_trace.h>
44