573ba7b6e6
Add vendors hooks for recording memory used Vendor modules allocate and manages the memory itself. These memories might not be included in kernel memory statistics. Also, detailed references and vendor-specific information are managed only inside modules. When various problems such as memory leaks occurs, these information should be showed in real-time. Bug: 182443489 Bug: 234407991 Bug: 277799025 Signed-off-by: Liujie Xie <xieliujie@oppo.com> Change-Id: I62d8bb2b6650d8b187b433f97eb833ef0b784df1 Signed-off-by: Hyesoo Yu <hyesoo.yu@samsung.com>
47 lines
1.2 KiB
C
47 lines
1.2 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* Generic show_mem() implementation
|
|
*
|
|
* Copyright (C) 2008 Johannes Weiner <hannes@saeurebad.de>
|
|
*/
|
|
|
|
#include <linux/mm.h>
|
|
#include <linux/cma.h>
|
|
#include <trace/hooks/mm.h>
|
|
|
|
void __show_mem(unsigned int filter, nodemask_t *nodemask, int max_zone_idx)
|
|
{
|
|
pg_data_t *pgdat;
|
|
unsigned long total = 0, reserved = 0, highmem = 0;
|
|
|
|
printk("Mem-Info:\n");
|
|
__show_free_areas(filter, nodemask, max_zone_idx);
|
|
|
|
for_each_online_pgdat(pgdat) {
|
|
int zoneid;
|
|
|
|
for (zoneid = 0; zoneid < MAX_NR_ZONES; zoneid++) {
|
|
struct zone *zone = &pgdat->node_zones[zoneid];
|
|
if (!populated_zone(zone))
|
|
continue;
|
|
|
|
total += zone->present_pages;
|
|
reserved += zone->present_pages - zone_managed_pages(zone);
|
|
|
|
if (is_highmem_idx(zoneid))
|
|
highmem += zone->present_pages;
|
|
}
|
|
}
|
|
|
|
printk("%lu pages RAM\n", total);
|
|
printk("%lu pages HighMem/MovableOnly\n", highmem);
|
|
printk("%lu pages reserved\n", reserved);
|
|
#ifdef CONFIG_CMA
|
|
printk("%lu pages cma reserved\n", totalcma_pages);
|
|
#endif
|
|
#ifdef CONFIG_MEMORY_FAILURE
|
|
printk("%lu pages hwpoisoned\n", atomic_long_read(&num_poisoned_pages));
|
|
#endif
|
|
trace_android_vh_show_mem(filter, nodemask);
|
|
}
|