Root/
1 | #ifndef LINUX_MM_INLINE_H |
2 | #define LINUX_MM_INLINE_H |
3 | |
4 | /** |
5 | * page_is_file_cache - should the page be on a file LRU or anon LRU? |
6 | * @page: the page to test |
7 | * |
8 | * Returns 1 if @page is page cache page backed by a regular filesystem, |
9 | * or 0 if @page is anonymous, tmpfs or otherwise ram or swap backed. |
10 | * Used by functions that manipulate the LRU lists, to sort a page |
11 | * onto the right LRU list. |
12 | * |
13 | * We would like to get this info without a page flag, but the state |
14 | * needs to survive until the page is last deleted from the LRU, which |
15 | * could be as far down as __page_cache_release. |
16 | */ |
17 | static inline int page_is_file_cache(struct page *page) |
18 | { |
19 | return !PageSwapBacked(page); |
20 | } |
21 | |
22 | static inline void |
23 | add_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 | |
30 | static inline void |
31 | del_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 | * page_lru_base_type - which LRU list type should a page be on? |
40 | * @page: the page to test |
41 | * |
42 | * Used for LRU list index arithmetic. |
43 | * |
44 | * Returns the base LRU type - file or anon - @page should be on. |
45 | */ |
46 | static 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 | |
53 | static inline void |
54 | del_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 | * page_lru - which LRU list should a page be on? |
75 | * @page: the page to test |
76 | * |
77 | * Returns the LRU list a page should be on, as an index |
78 | * into the array of LRU lists. |
79 | */ |
80 | static 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 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9