/* SPDX-License-Identifier: GPL-2.0 */ #ifdef PROTECT_TRACE_INCLUDE_PATH #undef PROTECT_TRACE_INCLUDE_PATH #include #include #include #else /* PROTECT_TRACE_INCLUDE_PATH */ #undef TRACE_SYSTEM #define TRACE_SYSTEM mm #define TRACE_INCLUDE_PATH trace/hooks #if !defined(_TRACE_HOOK_MM_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_HOOK_MM_H #include #include #ifdef __GENKSYMS__ #include #include #include #include #include <../mm/slab.h> #endif struct oom_control; struct slabinfo; struct track; struct address_space; DECLARE_RESTRICTED_HOOK(android_rvh_set_skip_swapcache_flags, TP_PROTO(gfp_t *flags), TP_ARGS(flags), 1); DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags, TP_PROTO(gfp_t *flags), TP_ARGS(flags), 1); DECLARE_RESTRICTED_HOOK(android_rvh_update_readahead_gfp_mask, TP_PROTO(struct address_space *mapping, gfp_t *flags), TP_ARGS(mapping, flags), 2); DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask, TP_PROTO(gfp_t *flags), TP_ARGS(flags), 1); DECLARE_RESTRICTED_HOOK(android_rvh_rmqueue_bulk, TP_PROTO(void *unused), TP_ARGS(unused), 1); DECLARE_HOOK(android_vh_meminfo_proc_show, TP_PROTO(struct seq_file *m), TP_ARGS(m)); DECLARE_HOOK(android_vh_exit_mm, TP_PROTO(struct mm_struct *mm), TP_ARGS(mm)); DECLARE_HOOK(android_vh_show_mem, TP_PROTO(unsigned int filter, nodemask_t *nodemask), TP_ARGS(filter, nodemask)); DECLARE_HOOK(android_vh_alloc_pages_slowpath, TP_PROTO(gfp_t gfp_mask, unsigned int order, unsigned long delta), TP_ARGS(gfp_mask, order, delta)); DECLARE_HOOK(android_vh_print_slabinfo_header, TP_PROTO(struct seq_file *m), TP_ARGS(m)); DECLARE_HOOK(android_vh_cache_show, TP_PROTO(struct seq_file *m, struct slabinfo *sinfo, struct kmem_cache *s), TP_ARGS(m, sinfo, s)); DECLARE_HOOK(android_vh_oom_check_panic, TP_PROTO(struct oom_control *oc, int *ret), TP_ARGS(oc, ret)); DECLARE_HOOK(android_vh_drain_all_pages_bypass, TP_PROTO(gfp_t gfp_mask, unsigned int order, unsigned long alloc_flags, int migratetype, unsigned long did_some_progress, bool *bypass), TP_ARGS(gfp_mask, order, alloc_flags, migratetype, did_some_progress, bypass)); DECLARE_HOOK(android_vh_cma_drain_all_pages_bypass, TP_PROTO(unsigned int migratetype, bool *bypass), TP_ARGS(migratetype, bypass)); DECLARE_HOOK(android_vh_pcplist_add_cma_pages_bypass, TP_PROTO(int migratetype, bool *bypass), TP_ARGS(migratetype, bypass)); DECLARE_HOOK(android_vh_mmap_region, TP_PROTO(struct vm_area_struct *vma, unsigned long addr), TP_ARGS(vma, addr)); DECLARE_HOOK(android_vh_try_to_unmap_one, TP_PROTO(struct vm_area_struct *vma, struct page *page, unsigned long addr, bool ret), TP_ARGS(vma, page, addr, ret)); DECLARE_HOOK(android_vh_cma_alloc_retry, TP_PROTO(char *name, int *retry), TP_ARGS(name, retry)); struct mem_cgroup; DECLARE_HOOK(android_vh_mem_cgroup_alloc, TP_PROTO(struct mem_cgroup *memcg), TP_ARGS(memcg)); DECLARE_HOOK(android_vh_mem_cgroup_free, TP_PROTO(struct mem_cgroup *memcg), TP_ARGS(memcg)); DECLARE_HOOK(android_vh_mem_cgroup_id_remove, TP_PROTO(struct mem_cgroup *memcg), TP_ARGS(memcg)); struct cgroup_subsys_state; DECLARE_HOOK(android_vh_mem_cgroup_css_online, TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg), TP_ARGS(css, memcg)); DECLARE_HOOK(android_vh_mem_cgroup_css_offline, TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg), TP_ARGS(css, memcg)); DECLARE_HOOK(android_vh_vmpressure, TP_PROTO(struct mem_cgroup *memcg, bool *bypass), TP_ARGS(memcg, bypass)); DECLARE_HOOK(android_vh_do_page_trylock, TP_PROTO(struct page *page, struct rw_semaphore *sem, bool *got_lock, bool *success), TP_ARGS(page, sem, got_lock, success)); DECLARE_HOOK(android_vh_update_page_mapcount, TP_PROTO(struct page *page, bool inc_size, bool compound, bool *first_mapping, bool *success), TP_ARGS(page, inc_size, compound, first_mapping, success)); DECLARE_HOOK(android_vh_add_page_to_lrulist, TP_PROTO(struct page *page, bool compound, enum lru_list lru), TP_ARGS(page, compound, lru)); DECLARE_HOOK(android_vh_del_page_from_lrulist, TP_PROTO(struct page *page, bool compound, enum lru_list lru), TP_ARGS(page, compound, lru)); DECLARE_HOOK(android_vh_show_mapcount_pages, TP_PROTO(void *unused), TP_ARGS(unused)); DECLARE_HOOK(android_vh_do_traversal_lruvec, TP_PROTO(struct lruvec *lruvec), TP_ARGS(lruvec)); DECLARE_HOOK(android_vh_page_should_be_protected, TP_PROTO(struct page *page, bool *should_protect), TP_ARGS(page, should_protect)); DECLARE_HOOK(android_vh_mark_page_accessed, TP_PROTO(struct page *page), TP_ARGS(page)); DECLARE_HOOK(android_vh_page_cache_forced_ra, TP_PROTO(struct readahead_control *ractl, unsigned long req_count, bool *do_forced_ra), TP_ARGS(ractl, req_count, do_forced_ra)); DECLARE_HOOK(android_vh_alloc_pages_reclaim_bypass, TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags, int migratetype, struct page **page), TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page)); DECLARE_HOOK(android_vh_alloc_pages_failure_bypass, TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags, int migratetype, struct page **page), TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page)); DECLARE_HOOK(android_vh_save_track_hash, TP_PROTO(bool alloc, struct track *p), TP_ARGS(alloc, p)); DECLARE_HOOK(android_vh_rmqueue, TP_PROTO(struct zone *preferred_zone, struct zone *zone, unsigned int order, gfp_t gfp_flags, unsigned int alloc_flags, int migratetype), TP_ARGS(preferred_zone, zone, order, gfp_flags, alloc_flags, migratetype)); DECLARE_HOOK(android_vh_kmalloc_slab, TP_PROTO(unsigned int index, gfp_t flags, struct kmem_cache **s), TP_ARGS(index, flags, s)); DECLARE_HOOK(android_vh_madvise_cold_or_pageout, TP_PROTO(struct vm_area_struct *vma, bool *allow_shared), TP_ARGS(vma, allow_shared)); DECLARE_RESTRICTED_HOOK(android_rvh_ctl_dirty_rate, TP_PROTO(void *unused), TP_ARGS(unused), 1); #endif /* _TRACE_HOOK_MM_H */ /* This part must be outside protection */ #include #endif /* PROTECT_TRACE_INCLUDE_PATH */