mm.h 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM mm
  4. #define TRACE_INCLUDE_PATH trace/hooks
  5. #if !defined(_TRACE_HOOK_MM_H) || defined(TRACE_HEADER_MULTI_READ)
  6. #define _TRACE_HOOK_MM_H
  7. #include <trace/hooks/vendor_hooks.h>
  8. struct shmem_inode_info;
  9. struct folio;
  10. struct page_vma_mapped_walk;
  11. struct compact_control;
  12. DECLARE_RESTRICTED_HOOK(android_rvh_shmem_get_folio,
  13. TP_PROTO(struct shmem_inode_info *info, struct folio **folio),
  14. TP_ARGS(info, folio), 2);
  15. DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags,
  16. TP_PROTO(unsigned int *flags), /* gfp_t *flags */
  17. TP_ARGS(flags), 1);
  18. DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask,
  19. TP_PROTO(unsigned int *flags), /* gfp_t *flags */
  20. TP_ARGS(flags), 1);
  21. DECLARE_HOOK(android_vh_dm_bufio_shrink_scan_bypass,
  22. TP_PROTO(unsigned long dm_bufio_current_allocated, bool *bypass),
  23. TP_ARGS(dm_bufio_current_allocated, bypass));
  24. DECLARE_HOOK(android_vh_cleanup_old_buffers_bypass,
  25. TP_PROTO(unsigned long dm_bufio_current_allocated,
  26. unsigned long *max_age_hz,
  27. bool *bypass),
  28. TP_ARGS(dm_bufio_current_allocated, max_age_hz, bypass));
  29. DECLARE_HOOK(android_vh_mmap_region,
  30. TP_PROTO(struct vm_area_struct *vma, unsigned long addr),
  31. TP_ARGS(vma, addr));
  32. DECLARE_HOOK(android_vh_try_to_unmap_one,
  33. TP_PROTO(struct folio *folio, struct vm_area_struct *vma,
  34. unsigned long addr, void *arg, bool ret),
  35. TP_ARGS(folio, vma, addr, arg, ret));
  36. DECLARE_HOOK(android_vh_get_page_wmark,
  37. TP_PROTO(unsigned int alloc_flags, unsigned long *page_wmark),
  38. TP_ARGS(alloc_flags, page_wmark));
  39. DECLARE_HOOK(android_vh_page_add_new_anon_rmap,
  40. TP_PROTO(struct page *page, struct vm_area_struct *vma,
  41. unsigned long address),
  42. TP_ARGS(page, vma, address));
  43. DECLARE_HOOK(android_vh_rmqueue,
  44. TP_PROTO(struct zone *preferred_zone, struct zone *zone,
  45. unsigned int order, gfp_t gfp_flags,
  46. unsigned int alloc_flags, int migratetype),
  47. TP_ARGS(preferred_zone, zone, order,
  48. gfp_flags, alloc_flags, migratetype));
  49. DECLARE_HOOK(android_vh_filemap_get_folio,
  50. TP_PROTO(struct address_space *mapping, pgoff_t index,
  51. int fgp_flags, gfp_t gfp_mask, struct folio *folio),
  52. TP_ARGS(mapping, index, fgp_flags, gfp_mask, folio));
  53. DECLARE_HOOK(android_vh_meminfo_proc_show,
  54. TP_PROTO(struct seq_file *m),
  55. TP_ARGS(m));
  56. DECLARE_HOOK(android_vh_exit_mm,
  57. TP_PROTO(struct mm_struct *mm),
  58. TP_ARGS(mm));
  59. DECLARE_HOOK(android_vh_show_mem,
  60. TP_PROTO(unsigned int filter, nodemask_t *nodemask),
  61. TP_ARGS(filter, nodemask));
  62. DECLARE_HOOK(android_vh_alloc_pages_slowpath,
  63. TP_PROTO(gfp_t gfp_mask, unsigned int order, unsigned long delta),
  64. TP_ARGS(gfp_mask, order, delta));
  65. DECLARE_HOOK(android_vh_print_slabinfo_header,
  66. TP_PROTO(struct seq_file *m),
  67. TP_ARGS(m));
  68. struct slabinfo;
  69. DECLARE_HOOK(android_vh_cache_show,
  70. TP_PROTO(struct seq_file *m, struct slabinfo *sinfo, struct kmem_cache *s),
  71. TP_ARGS(m, sinfo, s));
  72. DECLARE_HOOK(android_vh_read_pages,
  73. TP_PROTO(struct readahead_control *ractl),
  74. TP_ARGS(ractl));
  75. DECLARE_HOOK(android_vh_alloc_pages_reclaim_bypass,
  76. TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags,
  77. int migratetype, struct page **page),
  78. TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page));
  79. DECLARE_HOOK(android_vh_alloc_pages_failure_bypass,
  80. TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags,
  81. int migratetype, struct page **page),
  82. TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page));
  83. DECLARE_HOOK(android_vh_madvise_pageout_swap_entry,
  84. TP_PROTO(swp_entry_t entry, int swapcount),
  85. TP_ARGS(entry, swapcount));
  86. DECLARE_HOOK(android_vh_madvise_swapin_walk_pmd_entry,
  87. TP_PROTO(swp_entry_t entry),
  88. TP_ARGS(entry));
  89. DECLARE_HOOK(android_vh_process_madvise_end,
  90. TP_PROTO(int behavior, ssize_t *ret),
  91. TP_ARGS(behavior, ret));
  92. DECLARE_HOOK(android_vh_smaps_pte_entry,
  93. TP_PROTO(swp_entry_t entry, unsigned long *writeback,
  94. unsigned long *same, unsigned long *huge),
  95. TP_ARGS(entry, writeback, same, huge));
  96. DECLARE_HOOK(android_vh_show_smap,
  97. TP_PROTO(struct seq_file *m, unsigned long writeback,
  98. unsigned long same, unsigned long huge),
  99. TP_ARGS(m, writeback, same, huge));
  100. DECLARE_HOOK(android_vh_meminfo_cache_adjust,
  101. TP_PROTO(unsigned long *cached),
  102. TP_ARGS(cached));
  103. DECLARE_HOOK(android_vh_si_mem_available_adjust,
  104. TP_PROTO(unsigned long *available),
  105. TP_ARGS(available));
  106. DECLARE_HOOK(android_vh_si_meminfo_adjust,
  107. TP_PROTO(unsigned long *totalram, unsigned long *freeram),
  108. TP_ARGS(totalram, freeram));
  109. DECLARE_RESTRICTED_HOOK(android_rvh_ctl_dirty_rate,
  110. TP_PROTO(void *unused),
  111. TP_ARGS(unused), 1);
  112. DECLARE_HOOK(android_vh_madvise_cold_pageout_skip,
  113. TP_PROTO(struct vm_area_struct *vma, struct page *page, bool pageout, bool *need_skip),
  114. TP_ARGS(vma, page, pageout, need_skip));
  115. DECLARE_HOOK(android_vh_mm_compaction_begin,
  116. TP_PROTO(struct compact_control *cc, long *vendor_ret),
  117. TP_ARGS(cc, vendor_ret));
  118. DECLARE_HOOK(android_vh_mm_compaction_end,
  119. TP_PROTO(struct compact_control *cc, long vendor_ret),
  120. TP_ARGS(cc, vendor_ret));
  121. DECLARE_HOOK(android_vh_free_unref_page_bypass,
  122. TP_PROTO(struct page *page, int order, int migratetype, bool *bypass),
  123. TP_ARGS(page, order, migratetype, bypass));
  124. DECLARE_HOOK(android_vh_kvmalloc_node_use_vmalloc,
  125. TP_PROTO(size_t size, gfp_t *kmalloc_flags, bool *use_vmalloc),
  126. TP_ARGS(size, kmalloc_flags, use_vmalloc));
  127. DECLARE_HOOK(android_vh_should_alloc_pages_retry,
  128. TP_PROTO(gfp_t gfp_mask, int order, int *alloc_flags,
  129. int migratetype, struct zone *preferred_zone, struct page **page, bool *should_alloc_retry),
  130. TP_ARGS(gfp_mask, order, alloc_flags,
  131. migratetype, preferred_zone, page, should_alloc_retry));
  132. DECLARE_HOOK(android_vh_unreserve_highatomic_bypass,
  133. TP_PROTO(bool force, struct zone *zone, bool *skip_unreserve_highatomic),
  134. TP_ARGS(force, zone, skip_unreserve_highatomic));
  135. DECLARE_HOOK(android_vh_rmqueue_bulk_bypass,
  136. TP_PROTO(unsigned int order, struct per_cpu_pages *pcp, int migratetype,
  137. struct list_head *list),
  138. TP_ARGS(order, pcp, migratetype, list));
  139. DECLARE_HOOK(android_vh_ra_tuning_max_page,
  140. TP_PROTO(struct readahead_control *ractl, unsigned long *max_page),
  141. TP_ARGS(ractl, max_page));
  142. DECLARE_HOOK(android_vh_tune_mmap_readaround,
  143. TP_PROTO(unsigned int ra_pages, pgoff_t pgoff,
  144. pgoff_t *start, unsigned int *size, unsigned int *async_size),
  145. TP_ARGS(ra_pages, pgoff, start, size, async_size));
  146. struct mem_cgroup;
  147. DECLARE_HOOK(android_vh_mem_cgroup_alloc,
  148. TP_PROTO(struct mem_cgroup *memcg),
  149. TP_ARGS(memcg));
  150. DECLARE_HOOK(android_vh_mem_cgroup_free,
  151. TP_PROTO(struct mem_cgroup *memcg),
  152. TP_ARGS(memcg));
  153. DECLARE_HOOK(android_vh_mem_cgroup_id_remove,
  154. TP_PROTO(struct mem_cgroup *memcg),
  155. TP_ARGS(memcg));
  156. struct cgroup_subsys_state;
  157. DECLARE_HOOK(android_vh_mem_cgroup_css_online,
  158. TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
  159. TP_ARGS(css, memcg));
  160. DECLARE_HOOK(android_vh_mem_cgroup_css_offline,
  161. TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
  162. TP_ARGS(css, memcg));
  163. DECLARE_HOOK(android_vh_rmqueue_smallest_bypass,
  164. TP_PROTO(struct page **page, struct zone *zone, int order, int migratetype),
  165. TP_ARGS(page, zone, order, migratetype));
  166. DECLARE_HOOK(android_vh_free_one_page_bypass,
  167. TP_PROTO(struct page *page, struct zone *zone, int order, int migratetype,
  168. int fpi_flags, bool *bypass),
  169. TP_ARGS(page, zone, order, migratetype, fpi_flags, bypass));
  170. DECLARE_HOOK(android_vh_test_clear_look_around_ref,
  171. TP_PROTO(struct page *page),
  172. TP_ARGS(page));
  173. DECLARE_HOOK(android_vh_look_around_migrate_folio,
  174. TP_PROTO(struct folio *old_folio, struct folio *new_folio),
  175. TP_ARGS(old_folio, new_folio));
  176. DECLARE_HOOK(android_vh_look_around,
  177. TP_PROTO(struct page_vma_mapped_walk *pvmw, struct folio *folio,
  178. struct vm_area_struct *vma, int *referenced),
  179. TP_ARGS(pvmw, folio, vma, referenced));
  180. DECLARE_HOOK(android_vh_mm_alloc_pages_direct_reclaim_enter,
  181. TP_PROTO(unsigned int order),
  182. TP_ARGS(order));
  183. DECLARE_HOOK(android_vh_mm_alloc_pages_direct_reclaim_exit,
  184. TP_PROTO(unsigned long did_some_progress, int retry_times),
  185. TP_ARGS(did_some_progress, retry_times));
  186. struct oom_control;
  187. DECLARE_HOOK(android_vh_mm_alloc_pages_may_oom_exit,
  188. TP_PROTO(struct oom_control *oc, unsigned long did_some_progress),
  189. TP_ARGS(oc, did_some_progress));
  190. DECLARE_HOOK(android_vh_adjust_kvmalloc_flags,
  191. TP_PROTO(unsigned int order, gfp_t *alloc_flags),
  192. TP_ARGS(order, alloc_flags));
  193. DECLARE_HOOK(android_vh_slab_folio_alloced,
  194. TP_PROTO(unsigned int order, gfp_t flags),
  195. TP_ARGS(order, flags));
  196. DECLARE_HOOK(android_vh_kmalloc_large_alloced,
  197. TP_PROTO(struct page *page, unsigned int order, gfp_t flags),
  198. TP_ARGS(page, order, flags));
  199. #endif /* _TRACE_HOOK_MM_H */
  200. /* This part must be outside protection */
  201. #include <trace/define_trace.h>