Cleanup: Move wrapper/ headers to include/wrapper/
[lttng-modules.git] / include / wrapper / writeback.h
diff --git a/include/wrapper/writeback.h b/include/wrapper/writeback.h
new file mode 100644 (file)
index 0000000..e5f36c2
--- /dev/null
@@ -0,0 +1,71 @@
+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
+ *
+ * wrapper/writeback.h
+ *
+ * wrapper around global_dirty_limit read. Using KALLSYMS with KALLSYMS_ALL
+ * to get its address when available, else we need to have a kernel that
+ * exports this variable to GPL modules.
+ *
+ * Copyright (C) 2013 Mentor Graphics Corp.
+ */
+
+#ifndef _LTTNG_WRAPPER_WRITEBACK_H
+#define _LTTNG_WRAPPER_WRITEBACK_H
+
+#include <lttng/kernel-version.h>
+
+#ifdef CONFIG_KALLSYMS_ALL
+#include <linux/kallsyms.h>
+#include <wrapper/kallsyms.h>
+
+
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
+
+static struct wb_domain *global_wb_domain_sym;
+
+static inline
+unsigned long wrapper_global_dirty_limit(void)
+{
+       if (!global_wb_domain_sym)
+               global_wb_domain_sym =
+                       (void *) kallsyms_lookup_dataptr("global_wb_domain");
+       if (global_wb_domain_sym) {
+               return global_wb_domain_sym->dirty_limit;
+       } else {
+               printk_once(KERN_WARNING "LTTng: global_wb_domain symbol lookup failed.\n");
+               return 0;
+       }
+}
+#else
+
+static unsigned long *global_dirty_limit_sym;
+
+static inline
+unsigned long wrapper_global_dirty_limit(void)
+{
+       if (!global_dirty_limit_sym)
+               global_dirty_limit_sym =
+                       (void *) kallsyms_lookup_dataptr("global_dirty_limit");
+       if (global_dirty_limit_sym) {
+               return *global_dirty_limit_sym;
+       } else {
+               printk_once(KERN_WARNING "LTTng: global_dirty_limit symbol lookup failed.\n");
+               return 0;
+       }
+}
+#endif
+
+#else /* CONFIG_KALLSYMS_ALL */
+
+#include <linux/writeback.h>
+
+static inline
+unsigned long wrapper_global_dirty_limit(void)
+{
+       return global_dirty_limit;
+}
+
+#endif
+
+#endif /* _LTTNG_WRAPPER_WRITEBACK_H */
This page took 0.025 seconds and 4 git commands to generate.