diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 1994236441c8..c7495c0cfdee 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -101,6 +101,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_disable); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_enable); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_cgroup_attach); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_cgroup_online); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_meminfo_cache_adjust); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_mem_available_adjust); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_meminfo_adjust); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs); diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c index 245171d9164b..ec902fc9dcc6 100644 --- a/fs/proc/meminfo.c +++ b/fs/proc/meminfo.c @@ -18,6 +18,7 @@ #include #endif #include +#include #include #include "internal.h" @@ -47,6 +48,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v) cached = global_node_page_state(NR_FILE_PAGES) - total_swapcache_pages() - i.bufferram; + trace_android_vh_meminfo_cache_adjust(&cached); if (cached < 0) cached = 0; diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index af9d31b36dc1..79d8ef425f9b 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -81,6 +81,15 @@ DECLARE_HOOK(android_vh_process_madvise_begin, DECLARE_HOOK(android_vh_process_madvise_iter, TP_PROTO(struct task_struct *task, int behavior, ssize_t *ret), TP_ARGS(task, behavior, ret)); +DECLARE_HOOK(android_vh_meminfo_cache_adjust, + TP_PROTO(unsigned long *cached), + TP_ARGS(cached)); +DECLARE_HOOK(android_vh_si_mem_available_adjust, + TP_PROTO(unsigned long *available), + TP_ARGS(available)); +DECLARE_HOOK(android_vh_si_meminfo_adjust, + TP_PROTO(unsigned long *totalram, unsigned long *freeram), + TP_ARGS(totalram, freeram)); DECLARE_HOOK(android_vh_test_clear_look_around_ref, TP_PROTO(struct page *page), TP_ARGS(page)); diff --git a/mm/show_mem.c b/mm/show_mem.c index 4efeb2bf6c81..2a84db109705 100644 --- a/mm/show_mem.c +++ b/mm/show_mem.c @@ -15,6 +15,9 @@ #include #include +#undef CREATE_TRACE_POINTS +#include + #include "internal.h" #include "swap.h" @@ -65,6 +68,7 @@ long si_mem_available(void) global_node_page_state(NR_KERNEL_MISC_RECLAIMABLE); reclaimable -= min(reclaimable / 2, wmark_low); available += reclaimable; + trace_android_vh_si_mem_available_adjust(&available); if (available < 0) available = 0; @@ -81,6 +85,7 @@ void si_meminfo(struct sysinfo *val) val->totalhigh = totalhigh_pages(); val->freehigh = nr_free_highpages(); val->mem_unit = PAGE_SIZE; + trace_android_vh_si_meminfo_adjust(&val->totalram, &val->freeram); } EXPORT_SYMBOL(si_meminfo);