diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/show_mem.c | 39 |
1 files changed, 11 insertions, 28 deletions
diff --git a/lib/show_mem.c b/lib/show_mem.c index b7c72311ad0c..5847a4921b8e 100644 --- a/lib/show_mem.c +++ b/lib/show_mem.c | |||
@@ -12,8 +12,7 @@ | |||
12 | void show_mem(unsigned int filter) | 12 | void show_mem(unsigned int filter) |
13 | { | 13 | { |
14 | pg_data_t *pgdat; | 14 | pg_data_t *pgdat; |
15 | unsigned long total = 0, reserved = 0, shared = 0, | 15 | unsigned long total = 0, reserved = 0, highmem = 0; |
16 | nonshared = 0, highmem = 0; | ||
17 | 16 | ||
18 | printk("Mem-Info:\n"); | 17 | printk("Mem-Info:\n"); |
19 | show_free_areas(filter); | 18 | show_free_areas(filter); |
@@ -22,43 +21,27 @@ void show_mem(unsigned int filter) | |||
22 | return; | 21 | return; |
23 | 22 | ||
24 | for_each_online_pgdat(pgdat) { | 23 | for_each_online_pgdat(pgdat) { |
25 | unsigned long i, flags; | 24 | unsigned long flags; |
25 | int zoneid; | ||
26 | 26 | ||
27 | pgdat_resize_lock(pgdat, &flags); | 27 | pgdat_resize_lock(pgdat, &flags); |
28 | for (i = 0; i < pgdat->node_spanned_pages; i++) { | 28 | for (zoneid = 0; zoneid < MAX_NR_ZONES; zoneid++) { |
29 | struct page *page; | 29 | struct zone *zone = &pgdat->node_zones[zoneid]; |
30 | unsigned long pfn = pgdat->node_start_pfn + i; | 30 | if (!populated_zone(zone)) |
31 | |||
32 | if (unlikely(!(i % MAX_ORDER_NR_PAGES))) | ||
33 | touch_nmi_watchdog(); | ||
34 | |||
35 | if (!pfn_valid(pfn)) | ||
36 | continue; | 31 | continue; |
37 | 32 | ||
38 | page = pfn_to_page(pfn); | 33 | total += zone->present_pages; |
39 | 34 | reserved = zone->present_pages - zone->managed_pages; | |
40 | if (PageHighMem(page)) | ||
41 | highmem++; | ||
42 | 35 | ||
43 | if (PageReserved(page)) | 36 | if (is_highmem_idx(zoneid)) |
44 | reserved++; | 37 | highmem += zone->present_pages; |
45 | else if (page_count(page) == 1) | ||
46 | nonshared++; | ||
47 | else if (page_count(page) > 1) | ||
48 | shared += page_count(page) - 1; | ||
49 | |||
50 | total++; | ||
51 | } | 38 | } |
52 | pgdat_resize_unlock(pgdat, &flags); | 39 | pgdat_resize_unlock(pgdat, &flags); |
53 | } | 40 | } |
54 | 41 | ||
55 | printk("%lu pages RAM\n", total); | 42 | printk("%lu pages RAM\n", total); |
56 | #ifdef CONFIG_HIGHMEM | 43 | printk("%lu pages HighMem/MovableOnly\n", highmem); |
57 | printk("%lu pages HighMem\n", highmem); | ||
58 | #endif | ||
59 | printk("%lu pages reserved\n", reserved); | 44 | printk("%lu pages reserved\n", reserved); |
60 | printk("%lu pages shared\n", shared); | ||
61 | printk("%lu pages non-shared\n", nonshared); | ||
62 | #ifdef CONFIG_QUICKLIST | 45 | #ifdef CONFIG_QUICKLIST |
63 | printk("%lu pages in pagetable cache\n", | 46 | printk("%lu pages in pagetable cache\n", |
64 | quicklist_total_size()); | 47 | quicklist_total_size()); |