[PATCH v4 00/17] dynamic_debug cleanups, query features, export

From: Jim Cromie
Date: Sat Jun 20 2020 - 14:08:05 EST


this is v4, changes from previous:
- dropped flags extensions, one internal optimization kept
- export ddebug_exec_queries() - done previously, but warrants attention
- add ^anchor to format matching

v3: https://lore.kernel.org/lkml/20200617162536.611386-1-jim.cromie@xxxxxxxxx/
v2: https://lore.kernel.org/lkml/20200613155738.2249399-1-jim.cromie@xxxxxxxxx/
v1: https://lore.kernel.org/lkml/20200605162645.289174-1-jim.cromie@xxxxxxxxx/


Jim Cromie (17):

Patchset starts with 11 cleanups;
- change section name from vague "__verbose" to "__dyndbg"
- cleaner docs, drop obsolete comment & useless debug prints,
refine verbosity, fix a BUG_ON, ram reporting miscounts. etc..

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

accept combined file:line & file:func forms
file inode.c:100-200 # file & line-range
file inode.c:start_* # file & function

dyndbg: refactor parse_linerange out of ddebug_parse_query
dyndbg: accept 'file foo.c:func1' and 'file foo.c:10-100'

accept keyword=value, not just "keyword value" (and not keyword:value)
dyndbg: accept query terms like file=bar and module=foo

dyndbg: export ddebug_exec_queries

This will afford module authors complete run-time control over all the
*pr_debug* callsites theyve coded. They can attach a callback to
their existing debug interface (drm.debug for example), and map bits,
bytes, or strings to particular queries.

dyndbg: allow anchored match on format query term

This makes "format=^PCI" work, which is far more specific than just
"format=PCI". It is ideal for the most common convention in logging;
a string prefix which classifies the log-entry in some way.

dyndbg: combine flags & mask into a struct, simplify with it
1 less parameter on the stack.


.../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 | 263 ++++++++++--------
5 files changed, 169 insertions(+), 135 deletions(-)

--
2.26.2