this is v5, changes from previous: - moved a chunk from patch 13 to 12, per Jason - shorten logging prefix to "dyndbg", drop __func__ - now with more commit-log advocacy - shuffle EXPORT_GPL(ddebug_exec_queries) last. - v4+ series Acked-by: jba...@akamai.com
v4: https://lore.kernel.org/lkml/20200620180643.887546-1-jim.cro...@gmail.com/ v3: https://lore.kernel.org/lkml/20200617162536.611386-1-jim.cro...@gmail.com/ v2: https://lore.kernel.org/lkml/20200613155738.2249399-1-jim.cro...@gmail.com/ v1: https://lore.kernel.org/lkml/20200605162645.289174-1-jim.cro...@gmail.com/ Patchset starts with cleanups; - change section name from vague "__verbose" to specific "__dyndbg" - cleaner docs, drop obsolete comment & useless debug prints, - refine verbose/debug logging - fix a BUG_ON, ram reporting miscounts. etc.. Then adds query parsing conveniences - allow "file inode.c:100-200" # combined file & line-range - allow "file inode.c:start_*" # file & function - accept "module=foo" query form internal improvement - combine flags & mask in a struct, clean 3 func interfaces with it. make precise format queries easier - accept "format=^ClassString" anchored query finally, EXPORT_GPL(ddebug_exec_queries) This gives module authors complete run-time control over all their *pr_debug* callsites (when CONFIG_DYNAMIC_DEBUG=y). Following the drm.debug UI model, drm.debug_chan2 could be wired to a callback which invokes ddebug_exec_queries to toggle arbitary groups of pr_debug callsites. Useful callsite groups would exploit existing message-prefix classifcation schemes: "format=^[IF_TRACE]: +p; format=^[SURFACE]: +p" >control Jim Cromie (18): dyndbg-docs: eschew file /full/path query in docs dyndbg-docs: initialization is done early, not arch dyndbg: drop obsolete comment on ddebug_proc_open dyndbg: refine debug verbosity; 1 is basic, 2 more chatty dyndbg: rename __verbose section to __dyndbg dyndbg: fix overcounting of ram used by dyndbg dyndbg: fix a BUG_ON in ddebug_describe_flags dyndbg: fix pr_err with empty string dyndbg: prefer declarative init in caller, to memset in callee dyndbg: make ddebug_tables list LIFO for add/remove_module dyndbg: use gcc ?: to reduce word count dyndbg: refactor parse_linerange out of ddebug_parse_query dyndbg: accept 'file foo.c:func1' and 'file foo.c:10-100' dyndbg: accept query terms like file=bar and module=foo dyndbg: combine flags & mask into a struct, simplify with it dyndbg: allow anchored match on format query term dyndbg: shorten our logging prefix, drop __func__ dyndbg: export ddebug_exec_queries .../admin-guide/dynamic-debug-howto.rst | 29 +- include/asm-generic/vmlinux.lds.h | 6 +- include/linux/dynamic_debug.h | 4 +- kernel/module.c | 2 +- lib/dynamic_debug.c | 269 ++++++++++-------- 5 files changed, 173 insertions(+), 137 deletions(-) -- 2.26.2