Page MenuHomeFreeBSD

D58763.1794680684.diff
No OneTemporary

Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None

D58763.1794680684.diff

Index: sys/compat/linuxkpi/common/include/linux/mm.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/mm.h
+++ sys/compat/linuxkpi/common/include/linux/mm.h
@@ -517,4 +517,14 @@
return (page_address(&folio->page));
}
+static inline bool
+folio_mapped(struct folio *folio)
+{
+#ifdef PAGE_IS_LKPI_PAGE
+ return (pmap_page_is_mapped(folio->page.vm_page));
+#else
+ return (pmap_page_is_mapped(&folio->page));
+#endif
+}
+
#endif /* _LINUXKPI_LINUX_MM_H_ */
Index: sys/compat/linuxkpi/common/include/linux/page-flags.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/page-flags.h
+++ sys/compat/linuxkpi/common/include/linux/page-flags.h
@@ -38,4 +38,12 @@
const struct page *: (const struct folio *)(p), \
struct page *: (struct folio *)(p)))
+static inline struct page *
+folio_page(struct folio *folio, int n)
+{
+ KASSERT(n == 0, ("%s: n = %d but only n = 0 supported\n", __func__, n));
+
+ return (&folio->page);
+}
+
#endif /* _LINUXKPI_LINUX_PAGEFLAGS_H_ */
Index: sys/compat/linuxkpi/common/include/linux/pagemap.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/pagemap.h
+++ sys/compat/linuxkpi/common/include/linux/pagemap.h
@@ -35,6 +35,34 @@
struct folio_batch;
+static inline struct page *
+folio_file_page(struct folio *folio, pgoff_t index)
+{
+ return (folio_page(folio, index & (folio_nr_pages(folio) - 1)));
+}
+
+static inline void
+folio_lock(struct folio *folio)
+{
+#ifdef PAGE_IS_LKPI_PAGE
+ if (!vm_page_tryxbusy(folio->page.vm_page))
+ vm_page_busy_sleep(folio->page.vm_page, __func__, 0);
+#else
+ if (!vm_page_tryxbusy(&folio->page))
+ vm_page_busy_sleep(&folio->page, __func__, 0);
+#endif
+}
+
+static inline void
+folio_unlock(struct folio *folio)
+{
+#ifdef PAGE_IS_LKPI_PAGE
+ vm_page_xunbusy(folio->page.vm_page);
+#else
+ vm_page_xunbusy(&folio->page);
+#endif
+}
+
#define invalidate_mapping_pages(...) \
linux_invalidate_mapping_pages(__VA_ARGS__)

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 14, 6:24 PM (3 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41725457
Default Alt Text
D58763.1794680684.diff (2 KB)

Event Timeline