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