forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 <[email protected]> Signed-off-by: Lee Schermerhorn <[email protected]> Signed-off-by: Christoph Lameter <[email protected]> Signed-off-by: KOSAKI Motohiro <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
- Loading branch information
Showing
8 changed files
with
171 additions
and
170 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,67 @@ | ||
static inline void | ||
add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l) | ||
{ | ||
list_add(&page->lru, &zone->lru[l].list); | ||
__inc_zone_state(zone, NR_LRU_BASE + l); | ||
} | ||
|
||
static inline void | ||
del_page_from_lru_list(struct zone *zone, struct page *page, enum lru_list l) | ||
{ | ||
list_del(&page->lru); | ||
__dec_zone_state(zone, NR_LRU_BASE + l); | ||
} | ||
|
||
static inline void | ||
add_page_to_active_list(struct zone *zone, struct page *page) | ||
{ | ||
list_add(&page->lru, &zone->active_list); | ||
__inc_zone_state(zone, NR_ACTIVE); | ||
add_page_to_lru_list(zone, page, LRU_ACTIVE); | ||
} | ||
|
||
static inline void | ||
add_page_to_inactive_list(struct zone *zone, struct page *page) | ||
{ | ||
list_add(&page->lru, &zone->inactive_list); | ||
__inc_zone_state(zone, NR_INACTIVE); | ||
add_page_to_lru_list(zone, page, LRU_INACTIVE); | ||
} | ||
|
||
static inline void | ||
del_page_from_active_list(struct zone *zone, struct page *page) | ||
{ | ||
list_del(&page->lru); | ||
__dec_zone_state(zone, NR_ACTIVE); | ||
del_page_from_lru_list(zone, page, LRU_ACTIVE); | ||
} | ||
|
||
static inline void | ||
del_page_from_inactive_list(struct zone *zone, struct page *page) | ||
{ | ||
list_del(&page->lru); | ||
__dec_zone_state(zone, NR_INACTIVE); | ||
del_page_from_lru_list(zone, page, LRU_INACTIVE); | ||
} | ||
|
||
static inline void | ||
del_page_from_lru(struct zone *zone, struct page *page) | ||
{ | ||
enum lru_list l = LRU_INACTIVE; | ||
|
||
list_del(&page->lru); | ||
if (PageActive(page)) { | ||
__ClearPageActive(page); | ||
__dec_zone_state(zone, NR_ACTIVE); | ||
} else { | ||
__dec_zone_state(zone, NR_INACTIVE); | ||
l = LRU_ACTIVE; | ||
} | ||
__dec_zone_state(zone, NR_LRU_BASE + l); | ||
} | ||
|
||
/** | ||
* page_lru - which LRU list should a page be on? | ||
* @page: the page to test | ||
* | ||
* Returns the LRU list a page should be on, as an index | ||
* into the array of LRU lists. | ||
*/ | ||
static inline enum lru_list page_lru(struct page *page) | ||
{ | ||
enum lru_list lru = LRU_BASE; | ||
|
||
if (PageActive(page)) | ||
lru += LRU_ACTIVE; | ||
|
||
return lru; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.