xref: /openbmc/linux/include/trace/events/mmap.h (revision d4af56c5c7c6781ca6ca8075e2cf5bc119ed33d1)
1df529cabSJaewon Kim /* SPDX-License-Identifier: GPL-2.0 */
2df529cabSJaewon Kim #undef TRACE_SYSTEM
3df529cabSJaewon Kim #define TRACE_SYSTEM mmap
4df529cabSJaewon Kim 
5df529cabSJaewon Kim #if !defined(_TRACE_MMAP_H) || defined(TRACE_HEADER_MULTI_READ)
6df529cabSJaewon Kim #define _TRACE_MMAP_H
7df529cabSJaewon Kim 
8df529cabSJaewon Kim #include <linux/tracepoint.h>
9df529cabSJaewon Kim 
10df529cabSJaewon Kim TRACE_EVENT(vm_unmapped_area,
11df529cabSJaewon Kim 
12df529cabSJaewon Kim 	TP_PROTO(unsigned long addr, struct vm_unmapped_area_info *info),
13df529cabSJaewon Kim 
14df529cabSJaewon Kim 	TP_ARGS(addr, info),
15df529cabSJaewon Kim 
16df529cabSJaewon Kim 	TP_STRUCT__entry(
17df529cabSJaewon Kim 		__field(unsigned long,	addr)
18df529cabSJaewon Kim 		__field(unsigned long,	total_vm)
19df529cabSJaewon Kim 		__field(unsigned long,	flags)
20df529cabSJaewon Kim 		__field(unsigned long,	length)
21df529cabSJaewon Kim 		__field(unsigned long,	low_limit)
22df529cabSJaewon Kim 		__field(unsigned long,	high_limit)
23df529cabSJaewon Kim 		__field(unsigned long,	align_mask)
24df529cabSJaewon Kim 		__field(unsigned long,	align_offset)
25df529cabSJaewon Kim 	),
26df529cabSJaewon Kim 
27df529cabSJaewon Kim 	TP_fast_assign(
28df529cabSJaewon Kim 		__entry->addr = addr;
29df529cabSJaewon Kim 		__entry->total_vm = current->mm->total_vm;
30df529cabSJaewon Kim 		__entry->flags = info->flags;
31df529cabSJaewon Kim 		__entry->length = info->length;
32df529cabSJaewon Kim 		__entry->low_limit = info->low_limit;
33df529cabSJaewon Kim 		__entry->high_limit = info->high_limit;
34df529cabSJaewon Kim 		__entry->align_mask = info->align_mask;
35df529cabSJaewon Kim 		__entry->align_offset = info->align_offset;
36df529cabSJaewon Kim 	),
37df529cabSJaewon Kim 
38df529cabSJaewon Kim 	TP_printk("addr=0x%lx err=%ld total_vm=0x%lx flags=0x%lx len=0x%lx lo=0x%lx hi=0x%lx mask=0x%lx ofs=0x%lx\n",
39df529cabSJaewon Kim 		IS_ERR_VALUE(__entry->addr) ? 0 : __entry->addr,
40df529cabSJaewon Kim 		IS_ERR_VALUE(__entry->addr) ? __entry->addr : 0,
41df529cabSJaewon Kim 		__entry->total_vm, __entry->flags, __entry->length,
42df529cabSJaewon Kim 		__entry->low_limit, __entry->high_limit, __entry->align_mask,
43df529cabSJaewon Kim 		__entry->align_offset)
44df529cabSJaewon Kim );
45*d4af56c5SLiam R. Howlett 
46*d4af56c5SLiam R. Howlett TRACE_EVENT(vma_mas_szero,
47*d4af56c5SLiam R. Howlett 	TP_PROTO(struct maple_tree *mt, unsigned long start,
48*d4af56c5SLiam R. Howlett 		 unsigned long end),
49*d4af56c5SLiam R. Howlett 
50*d4af56c5SLiam R. Howlett 	TP_ARGS(mt, start, end),
51*d4af56c5SLiam R. Howlett 
52*d4af56c5SLiam R. Howlett 	TP_STRUCT__entry(
53*d4af56c5SLiam R. Howlett 			__field(struct maple_tree *, mt)
54*d4af56c5SLiam R. Howlett 			__field(unsigned long, start)
55*d4af56c5SLiam R. Howlett 			__field(unsigned long, end)
56*d4af56c5SLiam R. Howlett 	),
57*d4af56c5SLiam R. Howlett 
58*d4af56c5SLiam R. Howlett 	TP_fast_assign(
59*d4af56c5SLiam R. Howlett 			__entry->mt		= mt;
60*d4af56c5SLiam R. Howlett 			__entry->start		= start;
61*d4af56c5SLiam R. Howlett 			__entry->end		= end;
62*d4af56c5SLiam R. Howlett 	),
63*d4af56c5SLiam R. Howlett 
64*d4af56c5SLiam R. Howlett 	TP_printk("mt_mod %p, (NULL), SNULL, %lu, %lu,",
65*d4af56c5SLiam R. Howlett 		  __entry->mt,
66*d4af56c5SLiam R. Howlett 		  (unsigned long) __entry->start,
67*d4af56c5SLiam R. Howlett 		  (unsigned long) __entry->end
68*d4af56c5SLiam R. Howlett 	)
69*d4af56c5SLiam R. Howlett );
70*d4af56c5SLiam R. Howlett 
71*d4af56c5SLiam R. Howlett TRACE_EVENT(vma_store,
72*d4af56c5SLiam R. Howlett 	TP_PROTO(struct maple_tree *mt, struct vm_area_struct *vma),
73*d4af56c5SLiam R. Howlett 
74*d4af56c5SLiam R. Howlett 	TP_ARGS(mt, vma),
75*d4af56c5SLiam R. Howlett 
76*d4af56c5SLiam R. Howlett 	TP_STRUCT__entry(
77*d4af56c5SLiam R. Howlett 			__field(struct maple_tree *, mt)
78*d4af56c5SLiam R. Howlett 			__field(struct vm_area_struct *, vma)
79*d4af56c5SLiam R. Howlett 			__field(unsigned long, vm_start)
80*d4af56c5SLiam R. Howlett 			__field(unsigned long, vm_end)
81*d4af56c5SLiam R. Howlett 	),
82*d4af56c5SLiam R. Howlett 
83*d4af56c5SLiam R. Howlett 	TP_fast_assign(
84*d4af56c5SLiam R. Howlett 			__entry->mt		= mt;
85*d4af56c5SLiam R. Howlett 			__entry->vma		= vma;
86*d4af56c5SLiam R. Howlett 			__entry->vm_start	= vma->vm_start;
87*d4af56c5SLiam R. Howlett 			__entry->vm_end		= vma->vm_end - 1;
88*d4af56c5SLiam R. Howlett 	),
89*d4af56c5SLiam R. Howlett 
90*d4af56c5SLiam R. Howlett 	TP_printk("mt_mod %p, (%p), STORE, %lu, %lu,",
91*d4af56c5SLiam R. Howlett 		  __entry->mt, __entry->vma,
92*d4af56c5SLiam R. Howlett 		  (unsigned long) __entry->vm_start,
93*d4af56c5SLiam R. Howlett 		  (unsigned long) __entry->vm_end
94*d4af56c5SLiam R. Howlett 	)
95*d4af56c5SLiam R. Howlett );
96*d4af56c5SLiam R. Howlett 
97*d4af56c5SLiam R. Howlett 
98*d4af56c5SLiam R. Howlett TRACE_EVENT(exit_mmap,
99*d4af56c5SLiam R. Howlett 	TP_PROTO(struct mm_struct *mm),
100*d4af56c5SLiam R. Howlett 
101*d4af56c5SLiam R. Howlett 	TP_ARGS(mm),
102*d4af56c5SLiam R. Howlett 
103*d4af56c5SLiam R. Howlett 	TP_STRUCT__entry(
104*d4af56c5SLiam R. Howlett 			__field(struct mm_struct *, mm)
105*d4af56c5SLiam R. Howlett 			__field(struct maple_tree *, mt)
106*d4af56c5SLiam R. Howlett 	),
107*d4af56c5SLiam R. Howlett 
108*d4af56c5SLiam R. Howlett 	TP_fast_assign(
109*d4af56c5SLiam R. Howlett 		       __entry->mm		= mm;
110*d4af56c5SLiam R. Howlett 		       __entry->mt		= &mm->mm_mt;
111*d4af56c5SLiam R. Howlett 	),
112*d4af56c5SLiam R. Howlett 
113*d4af56c5SLiam R. Howlett 	TP_printk("mt_mod %p, DESTROY\n",
114*d4af56c5SLiam R. Howlett 		  __entry->mt
115*d4af56c5SLiam R. Howlett 	)
116*d4af56c5SLiam R. Howlett );
117*d4af56c5SLiam R. Howlett 
118df529cabSJaewon Kim #endif
119df529cabSJaewon Kim 
120df529cabSJaewon Kim /* This part must be outside protection */
121df529cabSJaewon Kim #include <trace/define_trace.h>
122