[PATCH v5 2/3] dynamic_debug: add wildcard support to filter files/functions/modules

2013-11-16 Thread Du, Changbin
From: "Du, Changbin" 

Add wildcard '*'(matches zero or more characters) and '?'
(matches one character) support when qurying debug flags.

Now we can open debug messages using keywords. eg:
1. open debug logs in all usb drivers
echo "file drivers/usb/* +p" > /dynamic_debug/control
2.  open debug logs for usb xhci code
echo "file *xhci* +p" > /dynamic_debug/control

Signed-off-by: Du, Changbin 
---
 lib/dynamic_debug.c | 15 ++-
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index c37aeac..600ac57 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -8,6 +8,7 @@
  * By Greg Banks 
  * Copyright (c) 2008 Silicon Graphics Inc.  All Rights Reserved.
  * Copyright (C) 2011 Bart Van Assche.  All Rights Reserved.
+ * Copyright (C) 2013 Du, Changbin 
  */
 
 #define pr_fmt(fmt) KBUILD_MODNAME ":%s: " fmt, __func__
@@ -24,6 +25,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -147,7 +149,8 @@ static int ddebug_change(const struct ddebug_query *query,
list_for_each_entry(dt, _tables, link) {
 
/* match against the module name */
-   if (query->module && strcmp(query->module, dt->mod_name))
+   if (query->module &&
+   !match_wildcard(query->module, dt->mod_name))
continue;
 
for (i = 0; i < dt->num_ddebugs; i++) {
@@ -155,14 +158,16 @@ static int ddebug_change(const struct ddebug_query *query,
 
/* match against the source filename */
if (query->filename &&
-   strcmp(query->filename, dp->filename) &&
-   strcmp(query->filename, kbasename(dp->filename)) &&
-   strcmp(query->filename, trim_prefix(dp->filename)))
+   !match_wildcard(query->filename, dp->filename) &&
+   !match_wildcard(query->filename,
+  kbasename(dp->filename)) &&
+   !match_wildcard(query->filename,
+  trim_prefix(dp->filename)))
continue;
 
/* match against the function */
if (query->function &&
-   strcmp(query->function, dp->function))
+   !match_wildcard(query->function, dp->function))
continue;
 
/* match against the format */
-- 
1.8.3.2

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


[PATCH v5 2/3] dynamic_debug: add wildcard support to filter files/functions/modules

2013-11-16 Thread Du, Changbin
From: Du, Changbin changbin...@gmail.com

Add wildcard '*'(matches zero or more characters) and '?'
(matches one character) support when qurying debug flags.

Now we can open debug messages using keywords. eg:
1. open debug logs in all usb drivers
echo file drivers/usb/* +p  debugfs/dynamic_debug/control
2.  open debug logs for usb xhci code
echo file *xhci* +p  debugfs/dynamic_debug/control

Signed-off-by: Du, Changbin changbin...@gmail.com
---
 lib/dynamic_debug.c | 15 ++-
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index c37aeac..600ac57 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -8,6 +8,7 @@
  * By Greg Banks g...@melbourne.sgi.com
  * Copyright (c) 2008 Silicon Graphics Inc.  All Rights Reserved.
  * Copyright (C) 2011 Bart Van Assche.  All Rights Reserved.
+ * Copyright (C) 2013 Du, Changbin changbin...@gmail.com
  */
 
 #define pr_fmt(fmt) KBUILD_MODNAME :%s:  fmt, __func__
@@ -24,6 +25,7 @@
 #include linux/sysctl.h
 #include linux/ctype.h
 #include linux/string.h
+#include linux/parser.h
 #include linux/string_helpers.h
 #include linux/uaccess.h
 #include linux/dynamic_debug.h
@@ -147,7 +149,8 @@ static int ddebug_change(const struct ddebug_query *query,
list_for_each_entry(dt, ddebug_tables, link) {
 
/* match against the module name */
-   if (query-module  strcmp(query-module, dt-mod_name))
+   if (query-module 
+   !match_wildcard(query-module, dt-mod_name))
continue;
 
for (i = 0; i  dt-num_ddebugs; i++) {
@@ -155,14 +158,16 @@ static int ddebug_change(const struct ddebug_query *query,
 
/* match against the source filename */
if (query-filename 
-   strcmp(query-filename, dp-filename) 
-   strcmp(query-filename, kbasename(dp-filename)) 
-   strcmp(query-filename, trim_prefix(dp-filename)))
+   !match_wildcard(query-filename, dp-filename) 
+   !match_wildcard(query-filename,
+  kbasename(dp-filename)) 
+   !match_wildcard(query-filename,
+  trim_prefix(dp-filename)))
continue;
 
/* match against the function */
if (query-function 
-   strcmp(query-function, dp-function))
+   !match_wildcard(query-function, dp-function))
continue;
 
/* match against the format */
-- 
1.8.3.2

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