2008-10-19 03:26:14 +00:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2005-04-16 22:20:36 +00:00
|
|
|
static inline void
|
|
|
|
add_page_to_active_list(struct zone *zone, struct page *page)
|
|
|
|
{
|
2008-10-19 03:26:14 +00:00
|
|
|
add_page_to_lru_list(zone, page, LRU_ACTIVE);
|
2005-04-16 22:20:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
|
|
|
add_page_to_inactive_list(struct zone *zone, struct page *page)
|
|
|
|
{
|
2008-10-19 03:26:14 +00:00
|
|
|
add_page_to_lru_list(zone, page, LRU_INACTIVE);
|
2005-04-16 22:20:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
|
|
|
del_page_from_active_list(struct zone *zone, struct page *page)
|
|
|
|
{
|
2008-10-19 03:26:14 +00:00
|
|
|
del_page_from_lru_list(zone, page, LRU_ACTIVE);
|
2005-04-16 22:20:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
|
|
|
del_page_from_inactive_list(struct zone *zone, struct page *page)
|
|
|
|
{
|
2008-10-19 03:26:14 +00:00
|
|
|
del_page_from_lru_list(zone, page, LRU_INACTIVE);
|
2005-04-16 22:20:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
|
|
|
del_page_from_lru(struct zone *zone, struct page *page)
|
|
|
|
{
|
2008-10-19 03:26:14 +00:00
|
|
|
enum lru_list l = LRU_INACTIVE;
|
|
|
|
|
2005-04-16 22:20:36 +00:00
|
|
|
list_del(&page->lru);
|
|
|
|
if (PageActive(page)) {
|
2006-03-22 08:08:00 +00:00
|
|
|
__ClearPageActive(page);
|
2008-10-19 03:26:14 +00:00
|
|
|
l = LRU_ACTIVE;
|
2005-04-16 22:20:36 +00:00
|
|
|
}
|
2008-10-19 03:26:14 +00:00
|
|
|
__dec_zone_state(zone, NR_LRU_BASE + l);
|
2005-04-16 22:20:36 +00:00
|
|
|
}
|
2006-01-08 09:00:45 +00:00
|
|
|
|
2008-10-19 03:26:14 +00:00
|
|
|
/**
|
|
|
|
* 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;
|
|
|
|
}
|