1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifdef PROTECT_TRACE_INCLUDE_PATH 3*4882a593Smuzhiyun #undef PROTECT_TRACE_INCLUDE_PATH 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <trace/hooks/save_incpath.h> 6*4882a593Smuzhiyun #include <trace/hooks/mm.h> 7*4882a593Smuzhiyun #include <trace/hooks/restore_incpath.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #else /* PROTECT_TRACE_INCLUDE_PATH */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #undef TRACE_SYSTEM 12*4882a593Smuzhiyun #define TRACE_SYSTEM mm 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH trace/hooks 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #if !defined(_TRACE_HOOK_MM_H) || defined(TRACE_HEADER_MULTI_READ) 17*4882a593Smuzhiyun #define _TRACE_HOOK_MM_H 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #include <linux/types.h> 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #include <linux/mm.h> 22*4882a593Smuzhiyun #include <linux/oom.h> 23*4882a593Smuzhiyun #include <linux/tracepoint.h> 24*4882a593Smuzhiyun #include <trace/hooks/vendor_hooks.h> 25*4882a593Smuzhiyun #include <linux/rwsem.h> 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #ifdef __GENKSYMS__ 28*4882a593Smuzhiyun struct slabinfo; 29*4882a593Smuzhiyun struct cgroup_subsys_state; 30*4882a593Smuzhiyun struct device; 31*4882a593Smuzhiyun struct mem_cgroup; 32*4882a593Smuzhiyun struct readahead_control; 33*4882a593Smuzhiyun #else 34*4882a593Smuzhiyun /* struct slabinfo */ 35*4882a593Smuzhiyun #include <../mm/slab.h> 36*4882a593Smuzhiyun /* struct cgroup_subsys_state */ 37*4882a593Smuzhiyun #include <linux/cgroup-defs.h> 38*4882a593Smuzhiyun /* struct device */ 39*4882a593Smuzhiyun #include <linux/device.h> 40*4882a593Smuzhiyun /* struct mem_cgroup */ 41*4882a593Smuzhiyun #include <linux/memcontrol.h> 42*4882a593Smuzhiyun /* struct readahead_control */ 43*4882a593Smuzhiyun #include <linux/pagemap.h> 44*4882a593Smuzhiyun #endif /* __GENKSYMS__ */ 45*4882a593Smuzhiyun struct cma; 46*4882a593Smuzhiyun struct swap_slots_cache; 47*4882a593Smuzhiyun struct page_vma_mapped_walk; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun DECLARE_RESTRICTED_HOOK(android_rvh_set_skip_swapcache_flags, 50*4882a593Smuzhiyun TP_PROTO(gfp_t *flags), 51*4882a593Smuzhiyun TP_ARGS(flags), 1); 52*4882a593Smuzhiyun DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags, 53*4882a593Smuzhiyun TP_PROTO(gfp_t *flags), 54*4882a593Smuzhiyun TP_ARGS(flags), 1); 55*4882a593Smuzhiyun DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask, 56*4882a593Smuzhiyun TP_PROTO(gfp_t *flags), 57*4882a593Smuzhiyun TP_ARGS(flags), 1); 58*4882a593Smuzhiyun DECLARE_HOOK(android_vh_cma_alloc_start, 59*4882a593Smuzhiyun TP_PROTO(s64 *ts), 60*4882a593Smuzhiyun TP_ARGS(ts)); 61*4882a593Smuzhiyun DECLARE_HOOK(android_vh_cma_alloc_finish, 62*4882a593Smuzhiyun TP_PROTO(struct cma *cma, struct page *page, unsigned long count, 63*4882a593Smuzhiyun unsigned int align, gfp_t gfp_mask, s64 ts), 64*4882a593Smuzhiyun TP_ARGS(cma, page, count, align, gfp_mask, ts)); 65*4882a593Smuzhiyun DECLARE_HOOK(android_vh_rmqueue, 66*4882a593Smuzhiyun TP_PROTO(struct zone *preferred_zone, struct zone *zone, 67*4882a593Smuzhiyun unsigned int order, gfp_t gfp_flags, 68*4882a593Smuzhiyun unsigned int alloc_flags, int migratetype), 69*4882a593Smuzhiyun TP_ARGS(preferred_zone, zone, order, 70*4882a593Smuzhiyun gfp_flags, alloc_flags, migratetype)); 71*4882a593Smuzhiyun DECLARE_HOOK(android_vh_pagecache_get_page, 72*4882a593Smuzhiyun TP_PROTO(struct address_space *mapping, pgoff_t index, 73*4882a593Smuzhiyun int fgp_flags, gfp_t gfp_mask, struct page *page), 74*4882a593Smuzhiyun TP_ARGS(mapping, index, fgp_flags, gfp_mask, page)); 75*4882a593Smuzhiyun DECLARE_HOOK(android_vh_filemap_fault_get_page, 76*4882a593Smuzhiyun TP_PROTO(struct vm_fault *vmf, struct page **page, bool *retry), 77*4882a593Smuzhiyun TP_ARGS(vmf, page, retry)); 78*4882a593Smuzhiyun DECLARE_HOOK(android_vh_filemap_fault_cache_page, 79*4882a593Smuzhiyun TP_PROTO(struct vm_fault *vmf, struct page *page), 80*4882a593Smuzhiyun TP_ARGS(vmf, page)); 81*4882a593Smuzhiyun DECLARE_HOOK(android_vh_meminfo_proc_show, 82*4882a593Smuzhiyun TP_PROTO(struct seq_file *m), 83*4882a593Smuzhiyun TP_ARGS(m)); 84*4882a593Smuzhiyun DECLARE_HOOK(android_vh_exit_mm, 85*4882a593Smuzhiyun TP_PROTO(struct mm_struct *mm), 86*4882a593Smuzhiyun TP_ARGS(mm)); 87*4882a593Smuzhiyun DECLARE_HOOK(android_vh_get_from_fragment_pool, 88*4882a593Smuzhiyun TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info, 89*4882a593Smuzhiyun unsigned long *addr), 90*4882a593Smuzhiyun TP_ARGS(mm, info, addr)); 91*4882a593Smuzhiyun DECLARE_HOOK(android_vh_exclude_reserved_zone, 92*4882a593Smuzhiyun TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info), 93*4882a593Smuzhiyun TP_ARGS(mm, info)); 94*4882a593Smuzhiyun DECLARE_HOOK(android_vh_include_reserved_zone, 95*4882a593Smuzhiyun TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info, 96*4882a593Smuzhiyun unsigned long *addr), 97*4882a593Smuzhiyun TP_ARGS(mm, info, addr)); 98*4882a593Smuzhiyun DECLARE_HOOK(android_vh_show_mem, 99*4882a593Smuzhiyun TP_PROTO(unsigned int filter, nodemask_t *nodemask), 100*4882a593Smuzhiyun TP_ARGS(filter, nodemask)); 101*4882a593Smuzhiyun DECLARE_HOOK(android_vh_alloc_pages_slowpath_begin, 102*4882a593Smuzhiyun TP_PROTO(gfp_t gfp_mask, unsigned int order, unsigned long *pdata), 103*4882a593Smuzhiyun TP_ARGS(gfp_mask, order, pdata)); 104*4882a593Smuzhiyun DECLARE_HOOK(android_vh_alloc_pages_slowpath_end, 105*4882a593Smuzhiyun TP_PROTO(gfp_t gfp_mask, unsigned int order, unsigned long data), 106*4882a593Smuzhiyun TP_ARGS(gfp_mask, order, data)); 107*4882a593Smuzhiyun struct dirty_throttle_control; 108*4882a593Smuzhiyun DECLARE_HOOK(android_vh_mm_dirty_limits, 109*4882a593Smuzhiyun TP_PROTO(struct dirty_throttle_control *const gdtc, bool strictlimit, 110*4882a593Smuzhiyun unsigned long dirty, unsigned long bg_thresh, 111*4882a593Smuzhiyun unsigned long nr_reclaimable, unsigned long pages_dirtied), 112*4882a593Smuzhiyun TP_ARGS(gdtc, strictlimit, dirty, bg_thresh, 113*4882a593Smuzhiyun nr_reclaimable, pages_dirtied)); 114*4882a593Smuzhiyun DECLARE_HOOK(android_vh_oom_check_panic, 115*4882a593Smuzhiyun TP_PROTO(struct oom_control *oc, int *ret), 116*4882a593Smuzhiyun TP_ARGS(oc, ret)); 117*4882a593Smuzhiyun DECLARE_HOOK(android_vh_save_vmalloc_stack, 118*4882a593Smuzhiyun TP_PROTO(unsigned long flags, struct vm_struct *vm), 119*4882a593Smuzhiyun TP_ARGS(flags, vm)); 120*4882a593Smuzhiyun DECLARE_HOOK(android_vh_show_stack_hash, 121*4882a593Smuzhiyun TP_PROTO(struct seq_file *m, struct vm_struct *v), 122*4882a593Smuzhiyun TP_ARGS(m, v)); 123*4882a593Smuzhiyun DECLARE_HOOK(android_vh_save_track_hash, 124*4882a593Smuzhiyun TP_PROTO(bool alloc, unsigned long p), 125*4882a593Smuzhiyun TP_ARGS(alloc, p)); 126*4882a593Smuzhiyun DECLARE_HOOK(android_vh_vmpressure, 127*4882a593Smuzhiyun TP_PROTO(struct mem_cgroup *memcg, bool *bypass), 128*4882a593Smuzhiyun TP_ARGS(memcg, bypass)); 129*4882a593Smuzhiyun DECLARE_HOOK(android_vh_mem_cgroup_alloc, 130*4882a593Smuzhiyun TP_PROTO(struct mem_cgroup *memcg), 131*4882a593Smuzhiyun TP_ARGS(memcg)); 132*4882a593Smuzhiyun DECLARE_HOOK(android_vh_mem_cgroup_free, 133*4882a593Smuzhiyun TP_PROTO(struct mem_cgroup *memcg), 134*4882a593Smuzhiyun TP_ARGS(memcg)); 135*4882a593Smuzhiyun DECLARE_HOOK(android_vh_mem_cgroup_id_remove, 136*4882a593Smuzhiyun TP_PROTO(struct mem_cgroup *memcg), 137*4882a593Smuzhiyun TP_ARGS(memcg)); 138*4882a593Smuzhiyun DECLARE_HOOK(android_vh_mem_cgroup_css_online, 139*4882a593Smuzhiyun TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg), 140*4882a593Smuzhiyun TP_ARGS(css, memcg)); 141*4882a593Smuzhiyun DECLARE_HOOK(android_vh_mem_cgroup_css_offline, 142*4882a593Smuzhiyun TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg), 143*4882a593Smuzhiyun TP_ARGS(css, memcg)); 144*4882a593Smuzhiyun DECLARE_HOOK(android_vh_kmalloc_slab, 145*4882a593Smuzhiyun TP_PROTO(unsigned int index, gfp_t flags, struct kmem_cache **s), 146*4882a593Smuzhiyun TP_ARGS(index, flags, s)); 147*4882a593Smuzhiyun DECLARE_HOOK(android_vh_mmap_region, 148*4882a593Smuzhiyun TP_PROTO(struct vm_area_struct *vma, unsigned long addr), 149*4882a593Smuzhiyun TP_ARGS(vma, addr)); 150*4882a593Smuzhiyun DECLARE_HOOK(android_vh_try_to_unmap_one, 151*4882a593Smuzhiyun TP_PROTO(struct vm_area_struct *vma, struct page *page, unsigned long addr, bool ret), 152*4882a593Smuzhiyun TP_ARGS(vma, page, addr, ret)); 153*4882a593Smuzhiyun DECLARE_HOOK(android_vh_do_page_trylock, 154*4882a593Smuzhiyun TP_PROTO(struct page *page, struct rw_semaphore *sem, 155*4882a593Smuzhiyun bool *got_lock, bool *success), 156*4882a593Smuzhiyun TP_ARGS(page, sem, got_lock, success)); 157*4882a593Smuzhiyun DECLARE_HOOK(android_vh_drain_all_pages_bypass, 158*4882a593Smuzhiyun TP_PROTO(gfp_t gfp_mask, unsigned int order, unsigned long alloc_flags, 159*4882a593Smuzhiyun int migratetype, unsigned long did_some_progress, 160*4882a593Smuzhiyun bool *bypass), 161*4882a593Smuzhiyun TP_ARGS(gfp_mask, order, alloc_flags, migratetype, did_some_progress, bypass)); 162*4882a593Smuzhiyun DECLARE_HOOK(android_vh_update_page_mapcount, 163*4882a593Smuzhiyun TP_PROTO(struct page *page, bool inc_size, bool compound, 164*4882a593Smuzhiyun bool *first_mapping, bool *success), 165*4882a593Smuzhiyun TP_ARGS(page, inc_size, compound, first_mapping, success)); 166*4882a593Smuzhiyun DECLARE_HOOK(android_vh_add_page_to_lrulist, 167*4882a593Smuzhiyun TP_PROTO(struct page *page, bool compound, enum lru_list lru), 168*4882a593Smuzhiyun TP_ARGS(page, compound, lru)); 169*4882a593Smuzhiyun DECLARE_HOOK(android_vh_del_page_from_lrulist, 170*4882a593Smuzhiyun TP_PROTO(struct page *page, bool compound, enum lru_list lru), 171*4882a593Smuzhiyun TP_ARGS(page, compound, lru)); 172*4882a593Smuzhiyun DECLARE_HOOK(android_vh_show_mapcount_pages, 173*4882a593Smuzhiyun TP_PROTO(void *unused), 174*4882a593Smuzhiyun TP_ARGS(unused)); 175*4882a593Smuzhiyun DECLARE_HOOK(android_vh_do_traversal_lruvec, 176*4882a593Smuzhiyun TP_PROTO(struct lruvec *lruvec), 177*4882a593Smuzhiyun TP_ARGS(lruvec)); 178*4882a593Smuzhiyun DECLARE_HOOK(android_vh_page_should_be_protected, 179*4882a593Smuzhiyun TP_PROTO(struct page *page, bool *should_protect), 180*4882a593Smuzhiyun TP_ARGS(page, should_protect)); 181*4882a593Smuzhiyun DECLARE_HOOK(android_vh_mark_page_accessed, 182*4882a593Smuzhiyun TP_PROTO(struct page *page), 183*4882a593Smuzhiyun TP_ARGS(page)); 184*4882a593Smuzhiyun DECLARE_HOOK(android_vh_cma_drain_all_pages_bypass, 185*4882a593Smuzhiyun TP_PROTO(unsigned int migratetype, bool *bypass), 186*4882a593Smuzhiyun TP_ARGS(migratetype, bypass)); 187*4882a593Smuzhiyun DECLARE_HOOK(android_vh_pcplist_add_cma_pages_bypass, 188*4882a593Smuzhiyun TP_PROTO(int migratetype, bool *bypass), 189*4882a593Smuzhiyun TP_ARGS(migratetype, bypass)); 190*4882a593Smuzhiyun DECLARE_HOOK(android_vh_subpage_dma_contig_alloc, 191*4882a593Smuzhiyun TP_PROTO(bool *allow_subpage_alloc, struct device *dev, size_t *size), 192*4882a593Smuzhiyun TP_ARGS(allow_subpage_alloc, dev, size)); 193*4882a593Smuzhiyun DECLARE_HOOK(android_vh_ra_tuning_max_page, 194*4882a593Smuzhiyun TP_PROTO(struct readahead_control *ractl, unsigned long *max_page), 195*4882a593Smuzhiyun TP_ARGS(ractl, max_page)); 196*4882a593Smuzhiyun DECLARE_RESTRICTED_HOOK(android_rvh_handle_pte_fault_end, 197*4882a593Smuzhiyun TP_PROTO(struct vm_fault *vmf, unsigned long highest_memmap_pfn), 198*4882a593Smuzhiyun TP_ARGS(vmf, highest_memmap_pfn), 1); 199*4882a593Smuzhiyun DECLARE_HOOK(android_vh_handle_pte_fault_end, 200*4882a593Smuzhiyun TP_PROTO(struct vm_fault *vmf, unsigned long highest_memmap_pfn), 201*4882a593Smuzhiyun TP_ARGS(vmf, highest_memmap_pfn)); 202*4882a593Smuzhiyun DECLARE_HOOK(android_vh_cow_user_page, 203*4882a593Smuzhiyun TP_PROTO(struct vm_fault *vmf, struct page *page), 204*4882a593Smuzhiyun TP_ARGS(vmf, page)); 205*4882a593Smuzhiyun DECLARE_HOOK(android_vh_swapin_add_anon_rmap, 206*4882a593Smuzhiyun TP_PROTO(struct vm_fault *vmf, struct page *page), 207*4882a593Smuzhiyun TP_ARGS(vmf, page)); 208*4882a593Smuzhiyun DECLARE_HOOK(android_vh_waiting_for_page_migration, 209*4882a593Smuzhiyun TP_PROTO(struct page *page), 210*4882a593Smuzhiyun TP_ARGS(page)); 211*4882a593Smuzhiyun DECLARE_HOOK(android_vh_migrate_page_states, 212*4882a593Smuzhiyun TP_PROTO(struct page *page, struct page *newpage), 213*4882a593Smuzhiyun TP_ARGS(page, newpage)); 214*4882a593Smuzhiyun DECLARE_HOOK(android_vh_page_referenced_one_end, 215*4882a593Smuzhiyun TP_PROTO(struct vm_area_struct *vma, struct page *page, int referenced), 216*4882a593Smuzhiyun TP_ARGS(vma, page, referenced)); 217*4882a593Smuzhiyun DECLARE_HOOK(android_vh_count_pswpin, 218*4882a593Smuzhiyun TP_PROTO(struct swap_info_struct *sis), 219*4882a593Smuzhiyun TP_ARGS(sis)); 220*4882a593Smuzhiyun DECLARE_HOOK(android_vh_count_pswpout, 221*4882a593Smuzhiyun TP_PROTO(struct swap_info_struct *sis), 222*4882a593Smuzhiyun TP_ARGS(sis)); 223*4882a593Smuzhiyun DECLARE_HOOK(android_vh_count_swpout_vm_event, 224*4882a593Smuzhiyun TP_PROTO(struct swap_info_struct *sis, struct page *page, bool *skip), 225*4882a593Smuzhiyun TP_ARGS(sis, page, skip)); 226*4882a593Smuzhiyun DECLARE_HOOK(android_vh_swap_slot_cache_active, 227*4882a593Smuzhiyun TP_PROTO(bool swap_slot_cache_active), 228*4882a593Smuzhiyun TP_ARGS(swap_slot_cache_active)); 229*4882a593Smuzhiyun DECLARE_RESTRICTED_HOOK(android_rvh_drain_slots_cache_cpu, 230*4882a593Smuzhiyun TP_PROTO(struct swap_slots_cache *cache, unsigned int type, 231*4882a593Smuzhiyun bool free_slots, bool *skip), 232*4882a593Smuzhiyun TP_ARGS(cache, type, free_slots, skip), 1); 233*4882a593Smuzhiyun DECLARE_HOOK(android_vh_drain_slots_cache_cpu, 234*4882a593Smuzhiyun TP_PROTO(struct swap_slots_cache *cache, unsigned int type, 235*4882a593Smuzhiyun bool free_slots, bool *skip), 236*4882a593Smuzhiyun TP_ARGS(cache, type, free_slots, skip)); 237*4882a593Smuzhiyun DECLARE_RESTRICTED_HOOK(android_rvh_alloc_swap_slot_cache, 238*4882a593Smuzhiyun TP_PROTO(struct swap_slots_cache *cache, int *ret, bool *skip), 239*4882a593Smuzhiyun TP_ARGS(cache, ret, skip), 1); 240*4882a593Smuzhiyun DECLARE_HOOK(android_vh_alloc_swap_slot_cache, 241*4882a593Smuzhiyun TP_PROTO(struct swap_slots_cache *cache, int *ret, bool *skip), 242*4882a593Smuzhiyun TP_ARGS(cache, ret, skip)); 243*4882a593Smuzhiyun DECLARE_RESTRICTED_HOOK(android_rvh_free_swap_slot, 244*4882a593Smuzhiyun TP_PROTO(swp_entry_t entry, struct swap_slots_cache *cache, bool *skip), 245*4882a593Smuzhiyun TP_ARGS(entry, cache, skip), 1); 246*4882a593Smuzhiyun DECLARE_HOOK(android_vh_free_swap_slot, 247*4882a593Smuzhiyun TP_PROTO(swp_entry_t entry, struct swap_slots_cache *cache, bool *skip), 248*4882a593Smuzhiyun TP_ARGS(entry, cache, skip)); 249*4882a593Smuzhiyun DECLARE_RESTRICTED_HOOK(android_rvh_get_swap_page, 250*4882a593Smuzhiyun TP_PROTO(struct page *page, swp_entry_t *entry, 251*4882a593Smuzhiyun struct swap_slots_cache *cache, bool *found), 252*4882a593Smuzhiyun TP_ARGS(page, entry, cache, found), 1); 253*4882a593Smuzhiyun DECLARE_HOOK(android_vh_get_swap_page, 254*4882a593Smuzhiyun TP_PROTO(struct page *page, swp_entry_t *entry, 255*4882a593Smuzhiyun struct swap_slots_cache *cache, bool *found), 256*4882a593Smuzhiyun TP_ARGS(page, entry, cache, found)); 257*4882a593Smuzhiyun DECLARE_HOOK(android_vh_madvise_cold_or_pageout, 258*4882a593Smuzhiyun TP_PROTO(struct vm_area_struct *vma, bool *allow_shared), 259*4882a593Smuzhiyun TP_ARGS(vma, allow_shared)); 260*4882a593Smuzhiyun DECLARE_HOOK(android_vh_page_isolated_for_reclaim, 261*4882a593Smuzhiyun TP_PROTO(struct mm_struct *mm, struct page *page), 262*4882a593Smuzhiyun TP_ARGS(mm, page)); 263*4882a593Smuzhiyun DECLARE_HOOK(android_vh_account_swap_pages, 264*4882a593Smuzhiyun TP_PROTO(struct swap_info_struct *si, bool *skip), 265*4882a593Smuzhiyun TP_ARGS(si, skip)); 266*4882a593Smuzhiyun DECLARE_HOOK(android_vh_unuse_swap_page, 267*4882a593Smuzhiyun TP_PROTO(struct swap_info_struct *si, struct page *page), 268*4882a593Smuzhiyun TP_ARGS(si, page)); 269*4882a593Smuzhiyun DECLARE_HOOK(android_vh_init_swap_info_struct, 270*4882a593Smuzhiyun TP_PROTO(struct swap_info_struct *p, struct plist_head *swap_avail_heads), 271*4882a593Smuzhiyun TP_ARGS(p, swap_avail_heads)); 272*4882a593Smuzhiyun DECLARE_HOOK(android_vh_si_swapinfo, 273*4882a593Smuzhiyun TP_PROTO(struct swap_info_struct *si, bool *skip), 274*4882a593Smuzhiyun TP_ARGS(si, skip)); 275*4882a593Smuzhiyun DECLARE_RESTRICTED_HOOK(android_rvh_alloc_si, 276*4882a593Smuzhiyun TP_PROTO(struct swap_info_struct **p, bool *skip), 277*4882a593Smuzhiyun TP_ARGS(p, skip), 1); 278*4882a593Smuzhiyun DECLARE_HOOK(android_vh_alloc_si, 279*4882a593Smuzhiyun TP_PROTO(struct swap_info_struct **p, bool *skip), 280*4882a593Smuzhiyun TP_ARGS(p, skip)); 281*4882a593Smuzhiyun DECLARE_HOOK(android_vh_free_pages, 282*4882a593Smuzhiyun TP_PROTO(struct page *page, unsigned int order), 283*4882a593Smuzhiyun TP_ARGS(page, order)); 284*4882a593Smuzhiyun DECLARE_HOOK(android_vh_set_shmem_page_flag, 285*4882a593Smuzhiyun TP_PROTO(struct page *page), 286*4882a593Smuzhiyun TP_ARGS(page)); 287*4882a593Smuzhiyun DECLARE_HOOK(android_vh_remove_vmalloc_stack, 288*4882a593Smuzhiyun TP_PROTO(struct vm_struct *vm), 289*4882a593Smuzhiyun TP_ARGS(vm)); 290*4882a593Smuzhiyun DECLARE_HOOK(android_vh_alloc_pages_reclaim_bypass, 291*4882a593Smuzhiyun TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags, 292*4882a593Smuzhiyun int migratetype, struct page **page), 293*4882a593Smuzhiyun TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page)); 294*4882a593Smuzhiyun DECLARE_HOOK(android_vh_alloc_pages_failure_bypass, 295*4882a593Smuzhiyun TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags, 296*4882a593Smuzhiyun int migratetype, struct page **page), 297*4882a593Smuzhiyun TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page)); 298*4882a593Smuzhiyun DECLARE_HOOK(android_vh_test_clear_look_around_ref, 299*4882a593Smuzhiyun TP_PROTO(struct page *page), 300*4882a593Smuzhiyun TP_ARGS(page)); 301*4882a593Smuzhiyun DECLARE_HOOK(android_vh_look_around_migrate_page, 302*4882a593Smuzhiyun TP_PROTO(struct page *old_page, struct page *new_page), 303*4882a593Smuzhiyun TP_ARGS(old_page, new_page)); 304*4882a593Smuzhiyun DECLARE_HOOK(android_vh_look_around, 305*4882a593Smuzhiyun TP_PROTO(struct page_vma_mapped_walk *pvmw, struct page *page, 306*4882a593Smuzhiyun struct vm_area_struct *vma, int *referenced), 307*4882a593Smuzhiyun TP_ARGS(pvmw, page, vma, referenced)); 308*4882a593Smuzhiyun /* macro versions of hooks are no longer required */ 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun #endif /* _TRACE_HOOK_MM_H */ 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun /* This part must be outside protection */ 313*4882a593Smuzhiyun #include <trace/define_trace.h> 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun #endif /* PROTECT_TRACE_INCLUDE_PATH */ 316