-/* 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 */