]>
Commit | Line | Data |
---|---|---|
1 | /* SPDX-License-Identifier: GPL-2.0 */ | |
2 | #undef TRACE_SYSTEM | |
3 | #define TRACE_SYSTEM exceptions | |
4 | ||
5 | #if !defined(_TRACE_PAGE_FAULT_H) || defined(TRACE_HEADER_MULTI_READ) | |
6 | #define _TRACE_PAGE_FAULT_H | |
7 | ||
8 | #include <linux/tracepoint.h> | |
9 | #include <asm/trace/common.h> | |
10 | ||
11 | extern int trace_pagefault_reg(void); | |
12 | extern void trace_pagefault_unreg(void); | |
13 | ||
14 | DECLARE_EVENT_CLASS(x86_exceptions, | |
15 | ||
16 | TP_PROTO(unsigned long address, struct pt_regs *regs, | |
17 | unsigned long error_code), | |
18 | ||
19 | TP_ARGS(address, regs, error_code), | |
20 | ||
21 | TP_STRUCT__entry( | |
22 | __field( unsigned long, address ) | |
23 | __field( unsigned long, ip ) | |
24 | __field( unsigned long, error_code ) | |
25 | ), | |
26 | ||
27 | TP_fast_assign( | |
28 | __entry->address = address; | |
29 | __entry->ip = regs->ip; | |
30 | __entry->error_code = error_code; | |
31 | ), | |
32 | ||
33 | TP_printk("address=%pf ip=%pf error_code=0x%lx", | |
34 | (void *)__entry->address, (void *)__entry->ip, | |
35 | __entry->error_code) ); | |
36 | ||
37 | #define DEFINE_PAGE_FAULT_EVENT(name) \ | |
38 | DEFINE_EVENT_FN(x86_exceptions, name, \ | |
39 | TP_PROTO(unsigned long address, struct pt_regs *regs, \ | |
40 | unsigned long error_code), \ | |
41 | TP_ARGS(address, regs, error_code), \ | |
42 | trace_pagefault_reg, trace_pagefault_unreg); | |
43 | ||
44 | DEFINE_PAGE_FAULT_EVENT(page_fault_user); | |
45 | DEFINE_PAGE_FAULT_EVENT(page_fault_kernel); | |
46 | ||
47 | #undef TRACE_INCLUDE_PATH | |
48 | #define TRACE_INCLUDE_PATH . | |
49 | #define TRACE_INCLUDE_FILE exceptions | |
50 | #endif /* _TRACE_PAGE_FAULT_H */ | |
51 | ||
52 | /* This part must be outside protection */ | |
53 | #include <trace/define_trace.h> |