Blame view

lib/show_mem.c 1.32 KB
454c63b02   Johannes Weiner   lib: generic show...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  /*
   * Generic show_mem() implementation
   *
   * Copyright (C) 2008 Johannes Weiner <hannes@saeurebad.de>
   * All code subject to the GPL version 2.
   */
  
  #include <linux/mm.h>
  #include <linux/nmi.h>
  #include <linux/quicklist.h>
  
  void show_mem(void)
  {
  	pg_data_t *pgdat;
  	unsigned long total = 0, reserved = 0, shared = 0,
  		nonshared = 0, highmem = 0;
f047f4f37   Amerigo Wang   mm: use the same ...
17
18
  	printk("Mem-Info:
  ");
454c63b02   Johannes Weiner   lib: generic show...
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
47
48
49
50
  	show_free_areas();
  
  	for_each_online_pgdat(pgdat) {
  		unsigned long i, flags;
  
  		pgdat_resize_lock(pgdat, &flags);
  		for (i = 0; i < pgdat->node_spanned_pages; i++) {
  			struct page *page;
  			unsigned long pfn = pgdat->node_start_pfn + i;
  
  			if (unlikely(!(i % MAX_ORDER_NR_PAGES)))
  				touch_nmi_watchdog();
  
  			if (!pfn_valid(pfn))
  				continue;
  
  			page = pfn_to_page(pfn);
  
  			if (PageHighMem(page))
  				highmem++;
  
  			if (PageReserved(page))
  				reserved++;
  			else if (page_count(page) == 1)
  				nonshared++;
  			else if (page_count(page) > 1)
  				shared += page_count(page) - 1;
  
  			total++;
  		}
  		pgdat_resize_unlock(pgdat, &flags);
  	}
f047f4f37   Amerigo Wang   mm: use the same ...
51
52
  	printk("%lu pages RAM
  ", total);
454c63b02   Johannes Weiner   lib: generic show...
53
  #ifdef CONFIG_HIGHMEM
f047f4f37   Amerigo Wang   mm: use the same ...
54
55
  	printk("%lu pages HighMem
  ", highmem);
454c63b02   Johannes Weiner   lib: generic show...
56
  #endif
f047f4f37   Amerigo Wang   mm: use the same ...
57
58
59
60
61
62
  	printk("%lu pages reserved
  ", reserved);
  	printk("%lu pages shared
  ", shared);
  	printk("%lu pages non-shared
  ", nonshared);
454c63b02   Johannes Weiner   lib: generic show...
63
  #ifdef CONFIG_QUICKLIST
f047f4f37   Amerigo Wang   mm: use the same ...
64
65
  	printk("%lu pages in pagetable cache
  ",
454c63b02   Johannes Weiner   lib: generic show...
66
67
68
  		quicklist_total_size());
  #endif
  }