1 #ifndef _LINUX_FRONTSWAP_H
2 #define _LINUX_FRONTSWAP_H
4 #include <linux/swap.h>
6 #include <linux/bitops.h>
9 void (*init)(unsigned);
10 int (*put_page)(unsigned, pgoff_t, struct page *);
11 int (*get_page)(unsigned, pgoff_t, struct page *);
12 void (*invalidate_page)(unsigned, pgoff_t);
13 void (*invalidate_area)(unsigned);
16 extern int frontswap_enabled;
17 extern struct frontswap_ops
18 frontswap_register_ops(struct frontswap_ops *ops);
19 extern void frontswap_shrink(unsigned long);
20 extern unsigned long frontswap_curr_pages(void);
22 extern void __frontswap_init(unsigned type);
23 extern int __frontswap_put_page(struct page *page);
24 extern int __frontswap_get_page(struct page *page);
25 extern void __frontswap_invalidate_page(unsigned, pgoff_t);
26 extern void __frontswap_invalidate_area(unsigned);
28 #ifdef CONFIG_FRONTSWAP
30 static inline int frontswap_test(struct swap_info_struct *sis, pgoff_t offset)
34 if (frontswap_enabled && sis->frontswap_map)
35 ret = test_bit(offset, sis->frontswap_map);
39 static inline void frontswap_set(struct swap_info_struct *sis, pgoff_t offset)
41 if (frontswap_enabled && sis->frontswap_map)
42 set_bit(offset, sis->frontswap_map);
45 static inline void frontswap_clear(struct swap_info_struct *sis, pgoff_t offset)
47 if (frontswap_enabled && sis->frontswap_map)
48 clear_bit(offset, sis->frontswap_map);
51 static inline void frontswap_map_set(struct swap_info_struct *p,
54 p->frontswap_map = map;
57 static inline unsigned long *frontswap_map_get(struct swap_info_struct *p)
59 return p->frontswap_map;
62 /* all inline routines become no-ops and all externs are ignored */
64 #define frontswap_enabled (0)
66 static inline int frontswap_test(struct swap_info_struct *sis, pgoff_t offset)
71 static inline void frontswap_set(struct swap_info_struct *sis, pgoff_t offset)
75 static inline void frontswap_clear(struct swap_info_struct *sis, pgoff_t offset)
79 static inline void frontswap_map_set(struct swap_info_struct *p,
84 static inline unsigned long *frontswap_map_get(struct swap_info_struct *p)
90 static inline int frontswap_put_page(struct page *page)
94 if (frontswap_enabled)
95 ret = __frontswap_put_page(page);
99 static inline int frontswap_get_page(struct page *page)
103 if (frontswap_enabled)
104 ret = __frontswap_get_page(page);
108 static inline void frontswap_invalidate_page(unsigned type, pgoff_t offset)
110 if (frontswap_enabled)
111 __frontswap_invalidate_page(type, offset);
114 static inline void frontswap_invalidate_area(unsigned type)
116 if (frontswap_enabled)
117 __frontswap_invalidate_area(type);
120 static inline void frontswap_init(unsigned type)
122 if (frontswap_enabled)
123 __frontswap_init(type);
126 #endif /* _LINUX_FRONTSWAP_H */