X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=include%2Fwrapper%2Fwriteback.h;fp=include%2Fwrapper%2Fwriteback.h;h=e5f36c258534a211ba76d8b3a316c2dc4bdb3ce1;hb=117ab60f69a98dcbc365de8008ab93e6699d153a;hp=0000000000000000000000000000000000000000;hpb=7c6d929d62a6e24fb1dbeaee5cd2c8afe77720b7;p=lttng-modules.git diff --git a/include/wrapper/writeback.h b/include/wrapper/writeback.h new file mode 100644 index 00000000..e5f36c25 --- /dev/null +++ b/include/wrapper/writeback.h @@ -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 + +#ifdef CONFIG_KALLSYMS_ALL +#include +#include + + + +#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 + +static inline +unsigned long wrapper_global_dirty_limit(void) +{ + return global_dirty_limit; +} + +#endif + +#endif /* _LTTNG_WRAPPER_WRITEBACK_H */