Lines Matching refs:folio

270 	const struct page *:	(const struct folio *)_compound_head(p), \
271 struct page *: (struct folio *)_compound_head(p)))
282 #define folio_page(folio, n) nth_page(&(folio)->page, n) argument
309 static unsigned long *folio_flags(struct folio *folio, unsigned n) in folio_flags() argument
311 struct page *page = &folio->page; in folio_flags()
374 static __always_inline bool folio_test_##lname(struct folio *folio) \
375 { return test_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \
381 void folio_set_##lname(struct folio *folio) \
382 { set_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \
388 void folio_clear_##lname(struct folio *folio) \
389 { clear_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \
395 void __folio_set_##lname(struct folio *folio) \
396 { __set_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \
402 void __folio_clear_##lname(struct folio *folio) \
403 { __clear_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \
409 bool folio_test_set_##lname(struct folio *folio) \
410 { return test_and_set_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \
416 bool folio_test_clear_##lname(struct folio *folio) \
417 { return test_and_clear_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \
436 static inline bool folio_test_##lname(const struct folio *folio) { return false; } \
440 static inline void folio_set_##lname(struct folio *folio) { } \
444 static inline void folio_clear_##lname(struct folio *folio) { } \
448 static inline void __folio_clear_##lname(struct folio *folio) { } \
452 static inline bool folio_test_set_##lname(struct folio *folio) \
457 static inline bool folio_test_clear_##lname(struct folio *folio) \
535 static __always_inline bool folio_test_swapcache(struct folio *folio) in PAGEFLAG()
537 return folio_test_swapbacked(folio) && in PAGEFLAG()
538 test_bit(PG_swapcache, folio_flags(folio, 0)); in PAGEFLAG()
640 static __always_inline bool folio_mapping_flags(struct folio *folio) in TESTPAGEFLAG()
642 return ((unsigned long)folio->mapping & PAGE_MAPPING_FLAGS) != 0; in TESTPAGEFLAG()
650 static __always_inline bool folio_test_anon(struct folio *folio) in folio_test_anon() argument
652 return ((unsigned long)folio->mapping & PAGE_MAPPING_ANON) != 0; in folio_test_anon()
660 static __always_inline bool __folio_test_movable(const struct folio *folio) in __folio_test_movable() argument
662 return ((unsigned long)folio->mapping & PAGE_MAPPING_FLAGS) == in __folio_test_movable()
679 static __always_inline bool folio_test_ksm(struct folio *folio) in folio_test_ksm() argument
681 return ((unsigned long)folio->mapping & PAGE_MAPPING_FLAGS) == in folio_test_ksm()
705 static inline bool folio_test_uptodate(struct folio *folio) in folio_test_uptodate() argument
707 bool ret = test_bit(PG_uptodate, folio_flags(folio, 0)); in folio_test_uptodate()
727 static __always_inline void __folio_mark_uptodate(struct folio *folio) in __folio_mark_uptodate() argument
730 __set_bit(PG_uptodate, folio_flags(folio, 0)); in __folio_mark_uptodate()
733 static __always_inline void folio_mark_uptodate(struct folio *folio) in folio_mark_uptodate() argument
741 set_bit(PG_uptodate, folio_flags(folio, 0)); in folio_mark_uptodate()
746 __folio_mark_uptodate((struct folio *)page); in __SetPageUptodate()
751 folio_mark_uptodate((struct folio *)page); in SetPageUptodate()
756 bool __folio_start_writeback(struct folio *folio, bool keep_write);
759 #define folio_start_writeback(folio) \ argument
760 __folio_start_writeback(folio, false)
761 #define folio_start_writeback_keepwrite(folio) \ argument
762 __folio_start_writeback(folio, true)
769 static __always_inline bool folio_test_head(struct folio *folio) in folio_test_head() argument
771 return test_bit(PG_head, folio_flags(folio, FOLIO_PF_ANY)); in folio_test_head()
790 static inline bool folio_test_large(struct folio *folio) in __SETPAGEFLAG()
792 return folio_test_head(folio); in __SETPAGEFLAG()
832 static inline bool folio_test_hugetlb(struct folio *folio) in SETPAGEFLAG()
834 return folio_test_large(folio) && in SETPAGEFLAG()
835 test_bit(PG_hugetlb, folio_flags(folio, 1)); in SETPAGEFLAG()
927 #define folio_test_type(folio, flag) \ argument
928 ((folio->page.page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE)
945 static __always_inline int folio_test_##fname(const struct folio *folio)\
947 return folio_test_type(folio, PG_##lname); \
954 static __always_inline void __folio_set_##fname(struct folio *folio) \
956 VM_BUG_ON_FOLIO(!folio_test_type(folio, 0), folio); \
957 folio->page.page_type &= ~PG_##lname; \
964 static __always_inline void __folio_clear_##fname(struct folio *folio) \
966 VM_BUG_ON_FOLIO(!folio_test_##fname(folio), folio); \
967 folio->page.page_type |= PG_##lname; \
1097 static inline bool folio_has_private(struct folio *folio) in folio_has_private() argument
1099 return page_has_private(&folio->page); in folio_has_private()