Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
lib
show_mem.c
Go to the documentation of this file.
1
/*
2
* Generic show_mem() implementation
3
*
4
* Copyright (C) 2008 Johannes Weiner <
[email protected]
>
5
* All code subject to the GPL version 2.
6
*/
7
8
#include <
linux/mm.h
>
9
#include <
linux/nmi.h
>
10
#include <
linux/quicklist.h
>
11
12
void
show_mem
(
unsigned
int
filter
)
13
{
14
pg_data_t
*pgdat;
15
unsigned
long
total = 0,
reserved
= 0,
shared
= 0,
16
nonshared = 0,
highmem
= 0;
17
18
printk
(
"Mem-Info:\n"
);
19
show_free_areas
(filter);
20
21
for_each_online_pgdat
(pgdat) {
22
unsigned
long
i
,
flags
;
23
24
pgdat_resize_lock(pgdat, &flags);
25
for
(i = 0; i < pgdat->
node_spanned_pages
; i++) {
26
struct
page
*
page
;
27
unsigned
long
pfn = pgdat->
node_start_pfn
+
i
;
28
29
if
(
unlikely
(!(i %
MAX_ORDER_NR_PAGES
)))
30
touch_nmi_watchdog
();
31
32
if
(!
pfn_valid
(pfn))
33
continue
;
34
35
page =
pfn_to_page
(pfn);
36
37
if
(PageHighMem(page))
38
highmem
++;
39
40
if
(PageReserved(page))
41
reserved
++;
42
else
if
(page_count(page) == 1)
43
nonshared++;
44
else
if
(page_count(page) > 1)
45
shared
+= page_count(page) - 1;
46
47
total++;
48
}
49
pgdat_resize_unlock(pgdat, &flags);
50
}
51
52
printk
(
"%lu pages RAM\n"
, total);
53
#ifdef CONFIG_HIGHMEM
54
printk
(
"%lu pages HighMem\n"
,
highmem
);
55
#endif
56
printk
(
"%lu pages reserved\n"
,
reserved
);
57
printk
(
"%lu pages shared\n"
,
shared
);
58
printk
(
"%lu pages non-shared\n"
, nonshared);
59
#ifdef CONFIG_QUICKLIST
60
printk
(
"%lu pages in pagetable cache\n"
,
61
quicklist_total_size
());
62
#endif
63
}
Generated on Thu Jan 10 2013 14:55:53 for Linux Kernel by
1.8.2