diff options
Diffstat (limited to 'lib/show_mem.c')
| -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()); |
