• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM mm
4 
5 #define TRACE_INCLUDE_PATH trace/hooks
6 
7 #if !defined(_TRACE_HOOK_MM_H) || defined(TRACE_HEADER_MULTI_READ)
8 #define _TRACE_HOOK_MM_H
9 
10 #include <linux/types.h>
11 #include <trace/hooks/vendor_hooks.h>
12 
13 #ifdef __GENKSYMS__
14 #include <linux/mm.h>
15 #include <linux/oom.h>
16 #endif
17 
18 struct oom_control;
19 struct cma;
20 struct acr_info;
21 struct compact_control;
22 struct slabinfo;
23 struct cgroup_subsys_state;
24 struct mem_cgroup;
25 struct cma;
26 struct acr_info;
27 struct vm_unmapped_area_info;
28 
29 DECLARE_RESTRICTED_HOOK(android_rvh_set_skip_swapcache_flags,
30 			TP_PROTO(gfp_t *flags),
31 			TP_ARGS(flags), 1);
32 DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags,
33 			TP_PROTO(gfp_t *flags),
34 			TP_ARGS(flags), 1);
35 DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask,
36 			TP_PROTO(gfp_t *flags),
37 			TP_ARGS(flags), 1);
38 DECLARE_HOOK(android_vh_cma_alloc_start,
39 	TP_PROTO(s64 *ts),
40 	TP_ARGS(ts));
41 DECLARE_HOOK(android_vh_cma_alloc_finish,
42 	TP_PROTO(struct cma *cma, struct page *page, unsigned long count,
43 		 unsigned int align, gfp_t gfp_mask, s64 ts),
44 	TP_ARGS(cma, page, count, align, gfp_mask, ts));
45 DECLARE_HOOK(android_vh_cma_alloc_busy_info,
46 	TP_PROTO(struct acr_info *info),
47 	TP_ARGS(info));
48 DECLARE_HOOK(android_vh_calc_alloc_flags,
49 	TP_PROTO(unsigned int pflags, gfp_t gfp_mask, unsigned int *alloc_flags,
50 		bool *bypass),
51 	TP_ARGS(pflags, gfp_mask, alloc_flags, bypass));
52 DECLARE_HOOK(android_vh_mm_compaction_begin,
53 	TP_PROTO(struct compact_control *cc, long *vendor_ret),
54 	TP_ARGS(cc, vendor_ret));
55 DECLARE_HOOK(android_vh_mm_compaction_end,
56 	TP_PROTO(struct compact_control *cc, long vendor_ret),
57 	TP_ARGS(cc, vendor_ret));
58 DECLARE_HOOK(android_vh_rmqueue,
59 	TP_PROTO(struct zone *preferred_zone, struct zone *zone,
60 		unsigned int order, gfp_t gfp_flags,
61 		unsigned int alloc_flags, int migratetype),
62 	TP_ARGS(preferred_zone, zone, order,
63 		gfp_flags, alloc_flags, migratetype));
64 DECLARE_HOOK(android_vh_pagevec_drain,
65 	TP_PROTO(struct page *page, bool *ret),
66 	TP_ARGS(page, ret));
67 DECLARE_HOOK(android_vh_pagecache_get_page,
68 	TP_PROTO(struct address_space *mapping, pgoff_t index,
69 		int fgp_flags, gfp_t gfp_mask, struct page *page),
70 	TP_ARGS(mapping, index, fgp_flags, gfp_mask, page));
71 DECLARE_HOOK(android_vh_filemap_fault_get_page,
72 	TP_PROTO(struct vm_fault *vmf, struct page **page, bool *retry),
73 	TP_ARGS(vmf, page, retry));
74 DECLARE_HOOK(android_vh_filemap_fault_cache_page,
75 	TP_PROTO(struct vm_fault *vmf, struct page *page),
76 	TP_ARGS(vmf, page));
77 DECLARE_HOOK(android_vh_meminfo_proc_show,
78 	TP_PROTO(struct seq_file *m),
79 	TP_ARGS(m));
80 DECLARE_HOOK(android_vh_exit_mm,
81 	TP_PROTO(struct mm_struct *mm),
82 	TP_ARGS(mm));
83 DECLARE_HOOK(android_vh_get_from_fragment_pool,
84 	TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info,
85 		unsigned long *addr),
86 	TP_ARGS(mm, info, addr));
87 DECLARE_HOOK(android_vh_exclude_reserved_zone,
88 	TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info),
89 	TP_ARGS(mm, info));
90 DECLARE_HOOK(android_vh_include_reserved_zone,
91 	TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info,
92 		unsigned long *addr),
93 	TP_ARGS(mm, info, addr));
94 DECLARE_HOOK(android_vh_show_mem,
95 	TP_PROTO(unsigned int filter, nodemask_t *nodemask),
96 	TP_ARGS(filter, nodemask));
97 DECLARE_HOOK(android_vh_alloc_pages_slowpath,
98 	TP_PROTO(gfp_t gfp_mask, unsigned int order, unsigned long delta),
99 	TP_ARGS(gfp_mask, order, delta));
100 DECLARE_HOOK(android_vh_cma_alloc_adjust,
101 	TP_PROTO(struct zone *zone, bool *is_cma_alloc),
102 	TP_ARGS(zone, is_cma_alloc));
103 DECLARE_HOOK(android_vh_do_madvise_blk_plug,
104 	TP_PROTO(int behavior, bool *do_plug),
105 	TP_ARGS(behavior, do_plug));
106 DECLARE_HOOK(android_vh_shrink_inactive_list_blk_plug,
107 	TP_PROTO(bool *do_plug),
108 	TP_ARGS(do_plug));
109 DECLARE_HOOK(android_vh_shrink_lruvec_blk_plug,
110 	TP_PROTO(bool *do_plug),
111 	TP_ARGS(do_plug));
112 DECLARE_HOOK(android_vh_reclaim_pages_plug,
113 	TP_PROTO(bool *do_plug),
114 	TP_ARGS(do_plug));
115 DECLARE_HOOK(android_vh_zap_pte_range_tlb_start,
116 	TP_PROTO(void *ret),
117 	TP_ARGS(ret));
118 DECLARE_HOOK(android_vh_zap_pte_range_tlb_force_flush,
119 	TP_PROTO(struct page *page, bool *flush),
120 	TP_ARGS(page, flush));
121 DECLARE_HOOK(android_vh_zap_pte_range_tlb_end,
122 	TP_PROTO(void *ret),
123 	TP_ARGS(ret));
124 DECLARE_HOOK(android_vh_skip_lru_disable,
125 	TP_PROTO(bool *skip),
126 	TP_ARGS(skip));
127 DECLARE_HOOK(android_vh_print_slabinfo_header,
128 	TP_PROTO(struct seq_file *m),
129 	TP_ARGS(m));
130 DECLARE_HOOK(android_vh_cache_show,
131 	TP_PROTO(struct seq_file *m, struct slabinfo *sinfo, struct kmem_cache *s),
132 	TP_ARGS(m, sinfo, s));
133 struct dirty_throttle_control;
134 DECLARE_HOOK(android_vh_mm_dirty_limits,
135 	TP_PROTO(struct dirty_throttle_control *const gdtc, bool strictlimit,
136 		unsigned long dirty, unsigned long bg_thresh,
137 		unsigned long nr_reclaimable, unsigned long pages_dirtied),
138 	TP_ARGS(gdtc, strictlimit, dirty, bg_thresh,
139 		nr_reclaimable, pages_dirtied));
140 DECLARE_HOOK(android_vh_oom_check_panic,
141 	TP_PROTO(struct oom_control *oc, int *ret),
142 	TP_ARGS(oc, ret));
143 DECLARE_HOOK(android_vh_save_vmalloc_stack,
144 	TP_PROTO(unsigned long flags, struct vm_struct *vm),
145 	TP_ARGS(flags, vm));
146 DECLARE_HOOK(android_vh_show_stack_hash,
147 	TP_PROTO(struct seq_file *m, struct vm_struct *v),
148 	TP_ARGS(m, v));
149 DECLARE_HOOK(android_vh_save_track_hash,
150 	TP_PROTO(bool alloc, unsigned long p),
151 	TP_ARGS(alloc, p));
152 DECLARE_HOOK(android_vh_mem_cgroup_alloc,
153 	TP_PROTO(struct mem_cgroup *memcg),
154 	TP_ARGS(memcg));
155 DECLARE_HOOK(android_vh_mem_cgroup_free,
156 	TP_PROTO(struct mem_cgroup *memcg),
157 	TP_ARGS(memcg));
158 DECLARE_HOOK(android_vh_mem_cgroup_id_remove,
159 	TP_PROTO(struct mem_cgroup *memcg),
160 	TP_ARGS(memcg));
161 DECLARE_HOOK(android_vh_mem_cgroup_css_online,
162 	TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
163 	TP_ARGS(css, memcg));
164 DECLARE_HOOK(android_vh_mem_cgroup_css_offline,
165 	TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
166 	TP_ARGS(css, memcg));
167 DECLARE_HOOK(android_vh_alloc_pages_reclaim_bypass,
168 	TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags,
169 	int migratetype, struct page **page),
170 	TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page));
171 DECLARE_HOOK(android_vh_alloc_pages_failure_bypass,
172 	TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags,
173 	int migratetype, struct page **page),
174 	TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page));
175 DECLARE_HOOK(android_vh_ptep_clear_flush_young,
176 	TP_PROTO(bool *skip),
177 	TP_ARGS(skip));
178 DECLARE_HOOK(android_vh_do_swap_page_spf,
179 	TP_PROTO(bool *allow_swap_spf),
180 	TP_ARGS(allow_swap_spf));
181 /* macro versions of hooks are no longer required */
182 
183 #endif /* _TRACE_HOOK_MM_H */
184 
185 /* This part must be outside protection */
186 #include <trace/define_trace.h>
187