diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index edb963ad6d42..1df1f21fb156 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -118,6 +118,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_ftrace_oops_enter); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check); diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c index 52a7c129ee6d..24a133eb3576 100644 --- a/fs/proc/meminfo.c +++ b/fs/proc/meminfo.c @@ -16,6 +16,7 @@ #ifdef CONFIG_CMA #include #endif +#include #include #include "internal.h" #include @@ -46,6 +47,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 047b4144426f..9ce2592b3c2e 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -89,6 +89,15 @@ DECLARE_HOOK(android_vh_show_smap, TP_PROTO(struct seq_file *m, unsigned long writeback, unsigned long same, unsigned long huge), TP_ARGS(m, writeback, same, huge)); +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_RESTRICTED_HOOK(android_rvh_ctl_dirty_rate, TP_PROTO(void *unused), diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 42d316550572..856b0009b21f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -6065,6 +6065,7 @@ long si_mem_available(void) reclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B) + global_node_page_state(NR_KERNEL_MISC_RECLAIMABLE); available += reclaimable - min(reclaimable / 2, wmark_low); + trace_android_vh_si_mem_available_adjust(&available); if (available < 0) available = 0; @@ -6081,6 +6082,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);