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