X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=wrapper%2Fwriteback.h;h=e5f36c258534a211ba76d8b3a316c2dc4bdb3ce1;hb=2df37e95fa4303ecc0db41334452665491533641;hp=492cb75f94a5ac7a2e15c670ff33b559ed5c6dbe;hpb=42d9070d001d2e641a3f1c27b1d613cdaeec3d58;p=lttng-modules.git diff --git a/wrapper/writeback.h b/wrapper/writeback.h index 492cb75f..e5f36c25 100644 --- a/wrapper/writeback.h +++ b/wrapper/writeback.h @@ -1,7 +1,5 @@ -#ifndef _LTTNG_WRAPPER_WRITEBACK_H -#define _LTTNG_WRAPPER_WRITEBACK_H - -/* +/* 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 @@ -9,26 +7,37 @@ * exports this variable to GPL modules. * * Copyright (C) 2013 Mentor Graphics Corp. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; only - * version 2.1 of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifdef CONFIG_KALLSYMS_ALL +#ifndef _LTTNG_WRAPPER_WRITEBACK_H +#define _LTTNG_WRAPPER_WRITEBACK_H + +#include +#ifdef CONFIG_KALLSYMS_ALL #include -#include "kallsyms.h" +#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; @@ -41,12 +50,13 @@ unsigned long wrapper_global_dirty_limit(void) if (global_dirty_limit_sym) { return *global_dirty_limit_sym; } else { - printk(KERN_WARNING "LTTng: global_dirty_limit symbol lookup failed.\n"); + printk_once(KERN_WARNING "LTTng: global_dirty_limit symbol lookup failed.\n"); return 0; } } +#endif -#else +#else /* CONFIG_KALLSYMS_ALL */ #include