1 2static inline void 3add_page_to_active_list(struct zone *zone, struct page *page) 4{ 5 list_add(&page->lru, &zone->active_list); 6 zone->nr_active++; 7} 8 9static inline void 10add_page_to_inactive_list(struct zone *zone, struct page *page) 11{ 12 list_add(&page->lru, &zone->inactive_list); 13 zone->nr_inactive++; 14} 15 16static inline void 17del_page_from_active_list(struct zone *zone, struct page *page) 18{ 19 list_del(&page->lru); 20 zone->nr_active--; 21} 22 23static inline void 24del_page_from_inactive_list(struct zone *zone, struct page *page) 25{ 26 list_del(&page->lru); 27 zone->nr_inactive--; 28} 29 30static inline void 31del_page_from_lru(struct zone *zone, struct page *page) 32{ 33 list_del(&page->lru); 34 if (PageActive(page)) { 35 ClearPageActive(page); 36 zone->nr_active--; 37 } else { 38 zone->nr_inactive--; 39 } 40} 41 42/* 43 * Isolate one page from the LRU lists. 44 * 45 * - zone->lru_lock must be held 46 */ 47static inline int __isolate_lru_page(struct page *page) 48{ 49 if (unlikely(!TestClearPageLRU(page))) 50 return 0; 51 52 if (get_page_testone(page)) { 53 /* 54 * It is being freed elsewhere 55 */ 56 __put_page(page); 57 SetPageLRU(page); 58 return -ENOENT; 59 } 60 61 return 1; 62}