aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mmzone.h
diff options
context:
space:
mode:
authorChristoph Lameter <cl@linux-foundation.org>2008-10-18 23:26:14 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-20 11:50:25 -0400
commitb69408e88bd86b98feb7b9a38fd865e1ddb29827 (patch)
treeb19277c29fe624870ba776cc6ada59928cd2796d /include/linux/mmzone.h
parent62695a84eb8f2e718bf4dfb21700afaa7a08e0ea (diff)
vmscan: Use an indexed array for LRU variables
Currently we are defining explicit variables for the inactive and active list. An indexed array can be more generic and avoid repeating similar code in several places in the reclaim code. We are saving a few bytes in terms of code size: Before: text data bss dec hex filename 4097753 573120 4092484 8763357 85b7dd vmlinux After: text data bss dec hex filename 4097729 573120 4092484 8763333 85b7c5 vmlinux Having an easy way to add new lru lists may ease future work on the reclaim code. Signed-off-by: Rik van Riel <riel@redhat.com> Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com> Signed-off-by: Christoph Lameter <cl@linux-foundation.org> Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/mmzone.h')
-rw-r--r--include/linux/mmzone.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 428328a05fa1..156e18f3919b 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -81,8 +81,9 @@ struct zone_padding {
81enum zone_stat_item { 81enum zone_stat_item {
82 /* First 128 byte cacheline (assuming 64 bit words) */ 82 /* First 128 byte cacheline (assuming 64 bit words) */
83 NR_FREE_PAGES, 83 NR_FREE_PAGES,
84 NR_INACTIVE, 84 NR_LRU_BASE,
85 NR_ACTIVE, 85 NR_INACTIVE = NR_LRU_BASE, /* must match order of LRU_[IN]ACTIVE */
86 NR_ACTIVE, /* " " " " " */
86 NR_ANON_PAGES, /* Mapped anonymous pages */ 87 NR_ANON_PAGES, /* Mapped anonymous pages */
87 NR_FILE_MAPPED, /* pagecache pages mapped into pagetables. 88 NR_FILE_MAPPED, /* pagecache pages mapped into pagetables.
88 only modified from process context */ 89 only modified from process context */
@@ -107,6 +108,19 @@ enum zone_stat_item {
107#endif 108#endif
108 NR_VM_ZONE_STAT_ITEMS }; 109 NR_VM_ZONE_STAT_ITEMS };
109 110
111enum lru_list {
112 LRU_BASE,
113 LRU_INACTIVE=LRU_BASE, /* must match order of NR_[IN]ACTIVE */
114 LRU_ACTIVE, /* " " " " " */
115 NR_LRU_LISTS };
116
117#define for_each_lru(l) for (l = 0; l < NR_LRU_LISTS; l++)
118
119static inline int is_active_lru(enum lru_list l)
120{
121 return (l == LRU_ACTIVE);
122}
123
110struct per_cpu_pages { 124struct per_cpu_pages {
111 int count; /* number of pages in the list */ 125 int count; /* number of pages in the list */
112 int high; /* high watermark, emptying needed */ 126 int high; /* high watermark, emptying needed */
@@ -251,10 +265,10 @@ struct zone {
251 265
252 /* Fields commonly accessed by the page reclaim scanner */ 266 /* Fields commonly accessed by the page reclaim scanner */
253 spinlock_t lru_lock; 267 spinlock_t lru_lock;
254 struct list_head active_list; 268 struct {
255 struct list_head inactive_list; 269 struct list_head list;
256 unsigned long nr_scan_active; 270 unsigned long nr_scan;
257 unsigned long nr_scan_inactive; 271 } lru[NR_LRU_LISTS];
258 unsigned long pages_scanned; /* since last reclaim */ 272 unsigned long pages_scanned; /* since last reclaim */
259 unsigned long flags; /* zone flags, see below */ 273 unsigned long flags; /* zone flags, see below */
260 274