hc
2023-12-06 d38611ca164021d018c1b23eee65bbebc09c63e0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 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)
{
   pg_data_t *pgdat;
   unsigned long total = 0, reserved = 0, highmem = 0;
 
   printk("Mem-Info:\n");
   show_free_areas(filter, nodemask);
 
   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);
}
EXPORT_SYMBOL_GPL(show_mem);