[PATCH 21/25] dynamic_debug: handle $module.dyndbg="+mfp" boot-line args

From: jim . cromie
Date: Wed Nov 30 2011 - 14:59:08 EST


From: Jim Cromie <jim.cromie@xxxxxxxxx>

Handle explicit flag-arg given on boot-line, defaulting to "+p"
otherwize. Note that the operator char is required in the flag-arg,
so these are legal, and the same (the latter being slightly odd):

$module.dyndbg="=p" # set p flag, clear others
$module.dyndbg==p # same

Note that modprobed modules will receive flag-args from the boot-line
*after* those given in /etc/modprobe.d/*. This may be surprising;
boot-line args can alter previous flag settings, but is defensible, as
former are invocation specific, whereas latter are system-wide.
Options given on modprobe invocation are last, and correctly override
all previous flag settings.

Signed-off-by: Jim Cromie <jim.cromie@xxxxxxxxx>
---
Documentation/dynamic-debug-howto.txt | 11 ++++++-----
lib/dynamic_debug.c | 6 ++++--
2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/Documentation/dynamic-debug-howto.txt b/Documentation/dynamic-debug-howto.txt
index 8363a56..56e496a 100644
--- a/Documentation/dynamic-debug-howto.txt
+++ b/Documentation/dynamic-debug-howto.txt
@@ -250,8 +250,9 @@ lost. Instead, a "dyndbg" module parameter can be passed:
module.dyndbg=+mfp
module.dyndbg # defaults to +p

- - as an ordinary module parameter via modprobe modprobe module
- $> modprobe module dyndbg +pmfl # defaults to +p
+ - as an ordinary module parameter via modprobe
+ modprobe module dyndbg=+pmfl
+ modprobe module dyndbg # defaults to +p

- or the parameter can be used permanently via modprobe.conf(.local)
options module dyndbg=+pmflt
@@ -261,8 +262,8 @@ The $modname.dyndbg="value" should exclude "module $modname", as the
$modname is taken from the param-name, and only 1 spec of each type is
allowed.

-The ddebug option is not implemented as an ordinary module parameter
-and thus will not show up in /sys/module/module_name/parameters/ddebug
+The dyndbg option is not implemented as an ordinary module parameter
+and thus will not show up in /sys/module/module_name/parameters/dyndbg
The settings can be reverted later via the sysfs interface if the
debug messages are no longer needed:

@@ -272,7 +273,7 @@ $module.dyndbg="..." on boot-line works on built-in modules as well as
those loaded by modprobe (from either early or normal userspace), and
somewhat overlaps debug_query functionality.

-Modprobed modules get ddebug flags given on boot-line after those
+Modprobed modules get dyndbg flags given on boot-line after those
given via modprobe (either explicitly, or from /etc/modprobe.d/*).
This can surprise if boot-line arg subtracts flags.

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index afc9bd3..9dcbb61 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -913,7 +913,8 @@ void ddebug_module_parse_args(const char *modname, char* modargs,
if (verbose)
pr_info("Param: %s, val: %s\n", param, val);

- snprintf(ddebug, DDEBUG_STRING_SIZE, "module %s +p", modname);
+ snprintf(ddebug, DDEBUG_STRING_SIZE, "module %s %s",
+ modname, (val ? val : "+p"));
ddebug_exec_queries(ddebug);
}
kfree(arg_dup_ptr);
@@ -944,7 +945,8 @@ static __init void ddebug_boot_parse_args(void)
if (verbose)
pr_info("Param: %s, val: %s\n", param, val);

- snprintf(ddebug, DDEBUG_STRING_SIZE, "module %s +p", module);
+ snprintf(ddebug, DDEBUG_STRING_SIZE, "module %s %s",
+ module, (val ? val : "+p"));
ddebug_exec_queries(ddebug);
}
}
--
1.7.7.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/