|
@@ -108,6 +108,47 @@ enum pageflags {
|
|
|
|
|
|
#ifndef __GENERATING_BOUNDS_H
|
|
|
|
|
|
+/*
|
|
|
+ * Macros to create function definitions for page flags
|
|
|
+ */
|
|
|
+#define TESTPAGEFLAG(uname, lname) \
|
|
|
+static inline int Page##uname(struct page *page) \
|
|
|
+ { return test_bit(PG_##lname, &page->flags); }
|
|
|
+
|
|
|
+#define SETPAGEFLAG(uname, lname) \
|
|
|
+static inline void SetPage##uname(struct page *page) \
|
|
|
+ { set_bit(PG_##lname, &page->flags); }
|
|
|
+
|
|
|
+#define CLEARPAGEFLAG(uname, lname) \
|
|
|
+static inline void ClearPage##uname(struct page *page) \
|
|
|
+ { clear_bit(PG_##lname, &page->flags); }
|
|
|
+
|
|
|
+#define __SETPAGEFLAG(uname, lname) \
|
|
|
+static inline void __SetPage##uname(struct page *page) \
|
|
|
+ { __set_bit(PG_##lname, &page->flags); }
|
|
|
+
|
|
|
+#define __CLEARPAGEFLAG(uname, lname) \
|
|
|
+static inline void __ClearPage##uname(struct page *page) \
|
|
|
+ { __clear_bit(PG_##lname, &page->flags); }
|
|
|
+
|
|
|
+#define TESTSETFLAG(uname, lname) \
|
|
|
+static inline int TestSetPage##uname(struct page *page) \
|
|
|
+ { return test_and_set_bit(PG_##lname, &page->flags); }
|
|
|
+
|
|
|
+#define TESTCLEARFLAG(uname, lname) \
|
|
|
+static inline int TestClearPage##uname(struct page *page) \
|
|
|
+ { return test_and_clear_bit(PG_##lname, &page->flags); }
|
|
|
+
|
|
|
+
|
|
|
+#define PAGEFLAG(uname, lname) TESTPAGEFLAG(uname, lname) \
|
|
|
+ SETPAGEFLAG(uname, lname) CLEARPAGEFLAG(uname, lname)
|
|
|
+
|
|
|
+#define __PAGEFLAG(uname, lname) TESTPAGEFLAG(uname, lname) \
|
|
|
+ __SETPAGEFLAG(uname, lname) __CLEARPAGEFLAG(uname, lname)
|
|
|
+
|
|
|
+#define TESTSCFLAG(uname, lname) \
|
|
|
+ TESTSETFLAG(uname, lname) TESTCLEARFLAG(uname, lname)
|
|
|
+
|
|
|
/*
|
|
|
* Manipulation of page state flags
|
|
|
*/
|