1 2 static inline void 3 add_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 9 static inline void 10 add_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 16 static inline void 17 del_page_from_active_list(struct zone *zone, struct page *page) 18 { 19 list_del(&page->lru); 20 zone->nr_active--; 21 } 22 23 static inline void 24 del_page_from_inactive_list(struct zone *zone, struct page *page) 25 { 26 list_del(&page->lru); 27 zone->nr_inactive--; 28 } 29 30 static inline void 31 del_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 */ 47 static 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 } 63