summaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 4b5c4ff68f18..eb2027892ef9 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -16,6 +16,7 @@
16 16
17#include <linux/stddef.h> 17#include <linux/stddef.h>
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/highmem.h>
19#include <linux/swap.h> 20#include <linux/swap.h>
20#include <linux/interrupt.h> 21#include <linux/interrupt.h>
21#include <linux/pagemap.h> 22#include <linux/pagemap.h>
@@ -124,7 +125,8 @@ EXPORT_SYMBOL(node_states);
124/* Protect totalram_pages and zone->managed_pages */ 125/* Protect totalram_pages and zone->managed_pages */
125static DEFINE_SPINLOCK(managed_page_count_lock); 126static DEFINE_SPINLOCK(managed_page_count_lock);
126 127
127unsigned long totalram_pages __read_mostly; 128atomic_long_t _totalram_pages __read_mostly;
129EXPORT_SYMBOL(_totalram_pages);
128unsigned long totalreserve_pages __read_mostly; 130unsigned long totalreserve_pages __read_mostly;
129unsigned long totalcma_pages __read_mostly; 131unsigned long totalcma_pages __read_mostly;
130 132
@@ -4747,11 +4749,11 @@ EXPORT_SYMBOL_GPL(si_mem_available);
4747 4749
4748void si_meminfo(struct sysinfo *val) 4750void si_meminfo(struct sysinfo *val)
4749{ 4751{
4750 val->totalram = totalram_pages; 4752 val->totalram = totalram_pages();
4751 val->sharedram = global_node_page_state(NR_SHMEM); 4753 val->sharedram = global_node_page_state(NR_SHMEM);
4752 val->freeram = global_zone_page_state(NR_FREE_PAGES); 4754 val->freeram = global_zone_page_state(NR_FREE_PAGES);
4753 val->bufferram = nr_blockdev_pages(); 4755 val->bufferram = nr_blockdev_pages();
4754 val->totalhigh = totalhigh_pages; 4756 val->totalhigh = totalhigh_pages();
4755 val->freehigh = nr_free_highpages(); 4757 val->freehigh = nr_free_highpages();
4756 val->mem_unit = PAGE_SIZE; 4758 val->mem_unit = PAGE_SIZE;
4757} 4759}
@@ -7077,10 +7079,10 @@ void adjust_managed_page_count(struct page *page, long count)
7077{ 7079{
7078 spin_lock(&managed_page_count_lock); 7080 spin_lock(&managed_page_count_lock);
7079 atomic_long_add(count, &page_zone(page)->managed_pages); 7081 atomic_long_add(count, &page_zone(page)->managed_pages);
7080 totalram_pages += count; 7082 totalram_pages_add(count);
7081#ifdef CONFIG_HIGHMEM 7083#ifdef CONFIG_HIGHMEM
7082 if (PageHighMem(page)) 7084 if (PageHighMem(page))
7083 totalhigh_pages += count; 7085 totalhigh_pages_add(count);
7084#endif 7086#endif
7085 spin_unlock(&managed_page_count_lock); 7087 spin_unlock(&managed_page_count_lock);
7086} 7088}
@@ -7123,9 +7125,9 @@ EXPORT_SYMBOL(free_reserved_area);
7123void free_highmem_page(struct page *page) 7125void free_highmem_page(struct page *page)
7124{ 7126{
7125 __free_reserved_page(page); 7127 __free_reserved_page(page);
7126 totalram_pages++; 7128 totalram_pages_inc();
7127 atomic_long_inc(&page_zone(page)->managed_pages); 7129 atomic_long_inc(&page_zone(page)->managed_pages);
7128 totalhigh_pages++; 7130 totalhigh_pages_inc();
7129} 7131}
7130#endif 7132#endif
7131 7133
@@ -7174,10 +7176,10 @@ void __init mem_init_print_info(const char *str)
7174 physpages << (PAGE_SHIFT - 10), 7176 physpages << (PAGE_SHIFT - 10),
7175 codesize >> 10, datasize >> 10, rosize >> 10, 7177 codesize >> 10, datasize >> 10, rosize >> 10,
7176 (init_data_size + init_code_size) >> 10, bss_size >> 10, 7178 (init_data_size + init_code_size) >> 10, bss_size >> 10,
7177 (physpages - totalram_pages - totalcma_pages) << (PAGE_SHIFT - 10), 7179 (physpages - totalram_pages() - totalcma_pages) << (PAGE_SHIFT - 10),
7178 totalcma_pages << (PAGE_SHIFT - 10), 7180 totalcma_pages << (PAGE_SHIFT - 10),
7179#ifdef CONFIG_HIGHMEM 7181#ifdef CONFIG_HIGHMEM
7180 totalhigh_pages << (PAGE_SHIFT - 10), 7182 totalhigh_pages() << (PAGE_SHIFT - 10),
7181#endif 7183#endif
7182 str ? ", " : "", str ? str : ""); 7184 str ? ", " : "", str ? str : "");
7183} 7185}