Branch data Line data Source code
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 [ # # # # : 0 : 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=%ps ip=%ps 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 [ # # # # : 0 : DEFINE_PAGE_FAULT_EVENT(page_fault_user);
# # # # ]
45 [ # # # # : 0 : DEFINE_PAGE_FAULT_EVENT(page_fault_kernel);
# # # # ]
46 : :
47 : : #undef TRACE_INCLUDE_PATH
48 : : #undef TRACE_INCLUDE_FILE
49 : : #define TRACE_INCLUDE_PATH .
50 : : #define TRACE_INCLUDE_FILE exceptions
51 : : #endif /* _TRACE_PAGE_FAULT_H */
52 : :
53 : : /* This part must be outside protection */
54 : : #include <trace/define_trace.h>
|