blob: 49cc68af01f8e6d971d870fd952d229d31810628 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001
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}
Christoph Lameter21eac812006-01-08 01:00:45 -080041
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}