1#ifndef LINUX_MM_INLINE_H
2#define LINUX_MM_INLINE_H
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17static inline int page_is_file_cache(struct page *page)
18{
19 return !PageSwapBacked(page);
20}
21
22static inline void
23add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l)
24{
25 list_add(&page->lru, &zone->lru[l].list);
26 __inc_zone_state(zone, NR_LRU_BASE + l);
27 mem_cgroup_add_lru_list(page, l);
28}
29
30static inline void
31del_page_from_lru_list(struct zone *zone, struct page *page, enum lru_list l)
32{
33 list_del(&page->lru);
34 __dec_zone_state(zone, NR_LRU_BASE + l);
35 mem_cgroup_del_lru_list(page, l);
36}
37
38
39
40
41
42
43
44
45
46static inline enum lru_list page_lru_base_type(struct page *page)
47{
48 if (page_is_file_cache(page))
49 return LRU_INACTIVE_FILE;
50 return LRU_INACTIVE_ANON;
51}
52
53static inline void
54del_page_from_lru(struct zone *zone, struct page *page)
55{
56 enum lru_list l;
57
58 list_del(&page->lru);
59 if (PageUnevictable(page)) {
60 __ClearPageUnevictable(page);
61 l = LRU_UNEVICTABLE;
62 } else {
63 l = page_lru_base_type(page);
64 if (PageActive(page)) {
65 __ClearPageActive(page);
66 l += LRU_ACTIVE;
67 }
68 }
69 __dec_zone_state(zone, NR_LRU_BASE + l);
70 mem_cgroup_del_lru_list(page, l);
71}
72
73
74
75
76
77
78
79
80static inline enum lru_list page_lru(struct page *page)
81{
82 enum lru_list lru;
83
84 if (PageUnevictable(page))
85 lru = LRU_UNEVICTABLE;
86 else {
87 lru = page_lru_base_type(page);
88 if (PageActive(page))
89 lru += LRU_ACTIVE;
90 }
91
92 return lru;
93}
94
95#endif
96