diff options
Diffstat (limited to 'drivers/base/node.c')
-rw-r--r-- | drivers/base/node.c | 69 |
1 files changed, 46 insertions, 23 deletions
diff --git a/drivers/base/node.c b/drivers/base/node.c index 5116b78c6325..f5207090885a 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/nodemask.h> | 13 | #include <linux/nodemask.h> |
14 | #include <linux/cpu.h> | 14 | #include <linux/cpu.h> |
15 | #include <linux/device.h> | 15 | #include <linux/device.h> |
16 | #include <linux/swap.h> | ||
16 | 17 | ||
17 | static struct sysdev_class node_class = { | 18 | static struct sysdev_class node_class = { |
18 | .name = "node", | 19 | .name = "node", |
@@ -61,34 +62,52 @@ static ssize_t node_read_meminfo(struct sys_device * dev, | |||
61 | si_meminfo_node(&i, nid); | 62 | si_meminfo_node(&i, nid); |
62 | 63 | ||
63 | n = sprintf(buf, "\n" | 64 | n = sprintf(buf, "\n" |
64 | "Node %d MemTotal: %8lu kB\n" | 65 | "Node %d MemTotal: %8lu kB\n" |
65 | "Node %d MemFree: %8lu kB\n" | 66 | "Node %d MemFree: %8lu kB\n" |
66 | "Node %d MemUsed: %8lu kB\n" | 67 | "Node %d MemUsed: %8lu kB\n" |
67 | "Node %d Active: %8lu kB\n" | 68 | "Node %d Active: %8lu kB\n" |
68 | "Node %d Inactive: %8lu kB\n" | 69 | "Node %d Inactive: %8lu kB\n" |
70 | "Node %d Active(anon): %8lu kB\n" | ||
71 | "Node %d Inactive(anon): %8lu kB\n" | ||
72 | "Node %d Active(file): %8lu kB\n" | ||
73 | "Node %d Inactive(file): %8lu kB\n" | ||
74 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
75 | "Node %d Unevictable: %8lu kB\n" | ||
76 | "Node %d Mlocked: %8lu kB\n" | ||
77 | #endif | ||
69 | #ifdef CONFIG_HIGHMEM | 78 | #ifdef CONFIG_HIGHMEM |
70 | "Node %d HighTotal: %8lu kB\n" | 79 | "Node %d HighTotal: %8lu kB\n" |
71 | "Node %d HighFree: %8lu kB\n" | 80 | "Node %d HighFree: %8lu kB\n" |
72 | "Node %d LowTotal: %8lu kB\n" | 81 | "Node %d LowTotal: %8lu kB\n" |
73 | "Node %d LowFree: %8lu kB\n" | 82 | "Node %d LowFree: %8lu kB\n" |
74 | #endif | 83 | #endif |
75 | "Node %d Dirty: %8lu kB\n" | 84 | "Node %d Dirty: %8lu kB\n" |
76 | "Node %d Writeback: %8lu kB\n" | 85 | "Node %d Writeback: %8lu kB\n" |
77 | "Node %d FilePages: %8lu kB\n" | 86 | "Node %d FilePages: %8lu kB\n" |
78 | "Node %d Mapped: %8lu kB\n" | 87 | "Node %d Mapped: %8lu kB\n" |
79 | "Node %d AnonPages: %8lu kB\n" | 88 | "Node %d AnonPages: %8lu kB\n" |
80 | "Node %d PageTables: %8lu kB\n" | 89 | "Node %d PageTables: %8lu kB\n" |
81 | "Node %d NFS_Unstable: %8lu kB\n" | 90 | "Node %d NFS_Unstable: %8lu kB\n" |
82 | "Node %d Bounce: %8lu kB\n" | 91 | "Node %d Bounce: %8lu kB\n" |
83 | "Node %d WritebackTmp: %8lu kB\n" | 92 | "Node %d WritebackTmp: %8lu kB\n" |
84 | "Node %d Slab: %8lu kB\n" | 93 | "Node %d Slab: %8lu kB\n" |
85 | "Node %d SReclaimable: %8lu kB\n" | 94 | "Node %d SReclaimable: %8lu kB\n" |
86 | "Node %d SUnreclaim: %8lu kB\n", | 95 | "Node %d SUnreclaim: %8lu kB\n", |
87 | nid, K(i.totalram), | 96 | nid, K(i.totalram), |
88 | nid, K(i.freeram), | 97 | nid, K(i.freeram), |
89 | nid, K(i.totalram - i.freeram), | 98 | nid, K(i.totalram - i.freeram), |
90 | nid, K(node_page_state(nid, NR_ACTIVE)), | 99 | nid, K(node_page_state(nid, NR_ACTIVE_ANON) + |
91 | nid, K(node_page_state(nid, NR_INACTIVE)), | 100 | node_page_state(nid, NR_ACTIVE_FILE)), |
101 | nid, K(node_page_state(nid, NR_INACTIVE_ANON) + | ||
102 | node_page_state(nid, NR_INACTIVE_FILE)), | ||
103 | nid, K(node_page_state(nid, NR_ACTIVE_ANON)), | ||
104 | nid, K(node_page_state(nid, NR_INACTIVE_ANON)), | ||
105 | nid, K(node_page_state(nid, NR_ACTIVE_FILE)), | ||
106 | nid, K(node_page_state(nid, NR_INACTIVE_FILE)), | ||
107 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
108 | nid, K(node_page_state(nid, NR_UNEVICTABLE)), | ||
109 | nid, K(node_page_state(nid, NR_MLOCK)), | ||
110 | #endif | ||
92 | #ifdef CONFIG_HIGHMEM | 111 | #ifdef CONFIG_HIGHMEM |
93 | nid, K(i.totalhigh), | 112 | nid, K(i.totalhigh), |
94 | nid, K(i.freehigh), | 113 | nid, K(i.freehigh), |
@@ -173,6 +192,8 @@ int register_node(struct node *node, int num, struct node *parent) | |||
173 | sysdev_create_file(&node->sysdev, &attr_meminfo); | 192 | sysdev_create_file(&node->sysdev, &attr_meminfo); |
174 | sysdev_create_file(&node->sysdev, &attr_numastat); | 193 | sysdev_create_file(&node->sysdev, &attr_numastat); |
175 | sysdev_create_file(&node->sysdev, &attr_distance); | 194 | sysdev_create_file(&node->sysdev, &attr_distance); |
195 | |||
196 | scan_unevictable_register_node(node); | ||
176 | } | 197 | } |
177 | return error; | 198 | return error; |
178 | } | 199 | } |
@@ -192,6 +213,8 @@ void unregister_node(struct node *node) | |||
192 | sysdev_remove_file(&node->sysdev, &attr_numastat); | 213 | sysdev_remove_file(&node->sysdev, &attr_numastat); |
193 | sysdev_remove_file(&node->sysdev, &attr_distance); | 214 | sysdev_remove_file(&node->sysdev, &attr_distance); |
194 | 215 | ||
216 | scan_unevictable_unregister_node(node); | ||
217 | |||
195 | sysdev_unregister(&node->sysdev); | 218 | sysdev_unregister(&node->sysdev); |
196 | } | 219 | } |
197 | 220 | ||