[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1bf51283e26e6dd5f3c3e017d15cbb50dd84e507.camel@perches.com>
Date: Mon, 24 Aug 2020 12:09:55 -0700
From: Joe Perches <joe@...ches.com>
To: Jim Cromie <jim.cromie@...il.com>, jbaron@...mai.com,
gregkh@...uxfoundation.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/3] dyndbg: refine export, rename to
dynamic_debug_exec_queries()
On Mon, 2020-08-24 at 12:54 -0600, Jim Cromie wrote:
> commit 59cf47e7df31 dyndbg: export ddebug_exec_queries
> left a few configs broken, fix them with ifdef-stubs.
>
> Rename the export to dynamic_debug_exec_queries(). This is a more
> canonical function name, instead of exposing the 'ddebug' internal
> name prefix. Do this now, before export hits v5.9.0
>
> Implement as new function wrapping ddebug_exec_queries(now static
> again), which copies the query-string, preserving ddebug_exec_queries'
> in-place parsing, while allowing users to pass "const strings".
[]
> diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
[]
> @@ -210,6 +215,13 @@ static inline int ddebug_dyndbg_module_param_cb(char *param, char *val,
> print_hex_dump(KERN_DEBUG, prefix_str, prefix_type, \
> rowsize, groupsize, buf, len, ascii); \
> } while (0)
> -#endif
> +
> +static inline int dynamic_debug_exec_queries(const char *query, const char *modname)
> +{
> + printk(KERN_WARNING "kernel not built w CONFIG_DYNAMIC_DEBUG_CORE\n");
pr_warn and w should be with
> diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
[]
> @@ -557,7 +557,27 @@ int ddebug_exec_queries(char *query, const char *modname)
> return exitcode;
> return nfound;
> }
> -EXPORT_SYMBOL_GPL(ddebug_exec_queries);
> +
> +/**
> + * dynamic_debug_exec_queries - apply changes to selected dynamic-debug prints
> + * @query: string with callsite-selectors +enablement+decorations
> + * @modname: string containing module name
> + *
> + * This implements the >/proc/dynamic_debug/control reader, allowing
> + * module authors to modify their dynamic-debug callsites. The modname
> + * is canonically struct module.mod_name, but can also be null or a
> + * module-wildcard, for example: "drm*".
> + */
> +int dynamic_debug_exec_queries(const char *query, const char *modname)
> +{
> + char *qry = kmalloc(PAGE_SIZE, GFP_KERNEL);
> + int rc;
> + strncpy(qry, query, PAGE_SIZE);
kstrndup?
Powered by blists - more mailing lists