Version 2.12.17
[lttng-modules.git] / wrapper / page_alloc.c
index baa8603f2898bc58de87393fad666f8d4ce0dace..3353eed7cf975d345e8063619be80b0720439095 100644 (file)
 #include <lttng-kernel-version.h>
 
 #if (defined(CONFIG_KALLSYMS) \
-       && (LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,2)        \
+       && (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,19,2)    \
                || LTTNG_KERNEL_RANGE(3,14,36, 3,15,0)          \
                || LTTNG_KERNEL_RANGE(3,18,10, 3,19,0)          \
                || LTTNG_DEBIAN_KERNEL_RANGE(3,16,7,9,0,0, 3,17,0,0,0,0) \
                || LTTNG_UBUNTU_KERNEL_RANGE(3,16,7,34, 3,17,0,0)))
 
+/* Include page_alloc wrapper before pageblock-flags.h. */
+#include <wrapper/page_alloc.h>
+
+#include <linux/pageblock-flags.h>
 #include <linux/kallsyms.h>
 #include <linux/mm_types.h>
 #include <linux/module.h>
 #include <wrapper/kallsyms.h>
-#include <wrapper/page_alloc.h>
+#include <lttng-kernel-version.h>
+
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,14,0))
+static
+unsigned long (*get_pfnblock_flags_mask_sym)(const struct page *page,
+               unsigned long pfn,
+               unsigned long mask);
+
+unsigned long wrapper_get_pfnblock_flags_mask(const struct page *page,
+               unsigned long pfn,
+               unsigned long mask)
+{
+       WARN_ON_ONCE(!get_pfnblock_flags_mask_sym);
+       if (get_pfnblock_flags_mask_sym) {
+               return get_pfnblock_flags_mask_sym(page, pfn, mask);
+       } else {
+               return -ENOSYS;
+       }
+}
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,9,0))
+static
+unsigned long (*get_pfnblock_flags_mask_sym)(struct page *page,
+               unsigned long pfn,
+               unsigned long mask);
 
+unsigned long wrapper_get_pfnblock_flags_mask(struct page *page,
+               unsigned long pfn,
+               unsigned long mask)
+{
+       WARN_ON_ONCE(!get_pfnblock_flags_mask_sym);
+       if (get_pfnblock_flags_mask_sym) {
+               return get_pfnblock_flags_mask_sym(page, pfn, mask);
+       } else {
+               return -ENOSYS;
+       }
+}
+#else  /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,9,0)) */
 static
 unsigned long (*get_pfnblock_flags_mask_sym)(struct page *page,
                unsigned long pfn,
@@ -42,6 +81,8 @@ unsigned long wrapper_get_pfnblock_flags_mask(struct page *page,
                return -ENOSYS;
        }
 }
+#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,9,0)) */
+
 EXPORT_SYMBOL_GPL(wrapper_get_pfnblock_flags_mask);
 
 int wrapper_get_pfnblock_flags_mask_init(void)
@@ -52,6 +93,7 @@ int wrapper_get_pfnblock_flags_mask_init(void)
                return -1;
        return 0;
 }
+EXPORT_SYMBOL_GPL(wrapper_get_pfnblock_flags_mask_init);
 
 #else
 
@@ -94,6 +136,7 @@ int wrapper_get_pageblock_flags_mask_init(void)
                return -1;
        return 0;
 }
+EXPORT_SYMBOL_GPL(wrapper_get_pfnblock_flags_mask_init);
 
 #else
 
This page took 0.026606 seconds and 4 git commands to generate.