From: Jim Cromie <jim.cromie@gmail.com>
To: jbaron@akamai.com, gregkh@linuxfoundation.org,
linux-kernel@vger.kernel.org
Cc: linux@rasmusvillemoes.dk, Jim Cromie <jim.cromie@gmail.com>,
Jonathan Corbet <corbet@lwn.net>,
linux-doc@vger.kernel.org
Subject: [PATCH 08/18] dyndbg: accept 'file foo.c:func1' and 'file foo.c:10-100'
Date: Thu, 5 Dec 2019 14:51:39 -0700 [thread overview]
Message-ID: <20191205215151.421926-9-jim.cromie@gmail.com> (raw)
In-Reply-To: <20191205215151.421926-1-jim.cromie@gmail.com>
Accept these additional query forms:
echo "file $filestr +_" > control
path/to/file.c:100 # as from control, column 1
path/to/file.c:1-100 # or any legal line-range
path/to/file.c:func_A # as from an editor/browser
path/to/file.c:drm_\* # wildcards still work
path/to/file.c:*_foo # lead wildcard too
1st 2 examples are treated as line-ranges, 3,4 are treated as func's
Doc these changes, and sprinkle in a few extra wild-card examples and
trailing # explanation texts.
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
.../admin-guide/dynamic-debug-howto.rst | 5 +++++
lib/dynamic_debug.c | 20 ++++++++++++++++++-
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/Documentation/admin-guide/dynamic-debug-howto.rst b/Documentation/admin-guide/dynamic-debug-howto.rst
index e011f8907116..689a30316589 100644
--- a/Documentation/admin-guide/dynamic-debug-howto.rst
+++ b/Documentation/admin-guide/dynamic-debug-howto.rst
@@ -156,6 +156,7 @@ func
of each callsite. Example::
func svc_tcp_accept
+ func *recv* # in rfcomm, bluetooth, ping, tcp
file
The given string is compared against either the src-root relative
@@ -164,6 +165,9 @@ file
file svcsock.c
file kernel/freezer.c # ie column 1 of control file
+ file drivers/usb/* # all callsites under it
+ file inode.c:start_* # parse :tail as a func (above)
+ file inode.c:1-100 # parse :tail as a line-range (above)
module
The given string is compared against the module name
@@ -173,6 +177,7 @@ module
module sunrpc
module nfsd
+ module drm* # both drm, drm_kms_helper
format
The given string is searched for in the dynamic debug format
diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index f0cf90e672b8..9fa6d4eeae5c 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -322,6 +322,8 @@ static int parse_linerange(struct ddebug_query *query, const char *first)
} else {
query->last_lineno = query->first_lineno;
}
+ vpr_info("parsed line %d-%d\n", query->first_lineno,
+ query->last_lineno);
return 0;
}
@@ -358,6 +360,7 @@ static int ddebug_parse_query(char *words[], int nwords,
{
unsigned int i;
int rc = 0;
+ char *fline;
/* check we have an even number of words */
if (nwords % 2 != 0) {
@@ -374,7 +377,22 @@ static int ddebug_parse_query(char *words[], int nwords,
if (!strcmp(words[i], "func")) {
rc = check_set(&query->function, words[i+1], "func");
} else if (!strcmp(words[i], "file")) {
- rc = check_set(&query->filename, words[i+1], "file");
+ if (check_set(&query->filename, words[i+1], "file"))
+ return -EINVAL;
+
+ /* tail :$info is function or line-range */
+ fline = strchr(query->filename, ':');
+ if (!fline)
+ break;
+ *fline++ = '\0';
+ if (isalpha(*fline) || *fline == '*' || *fline == '?') {
+ /* take as function name */
+ if (check_set(&query->function, fline, "func"))
+ return -EINVAL;
+ } else
+ if (parse_linerange(query, fline))
+ return -EINVAL;
+
} else if (!strcmp(words[i], "module")) {
rc = check_set(&query->module, words[i+1], "module");
} else if (!strcmp(words[i], "format")) {
--
2.23.0
next prev parent reply other threads:[~2019-12-05 21:52 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-05 21:51 [PATCH v3 00/18] dynamic-debug cleanups, 2 new features Jim Cromie
2019-12-05 21:51 ` [PATCH 01/18] dyndbg-docs: eschew file /full/path query in docs Jim Cromie
2019-12-05 21:51 ` [PATCH 02/18] dyndbg: drop obsolete comment on ddebug_proc_open Jim Cromie
2019-12-05 21:51 ` [PATCH 03/18] dyndbg: raise verbosity needed to enable ddebug_proc_* logging Jim Cromie
2019-12-05 21:51 ` [PATCH 04/18] dyndbg: rename __verbose section to __dyndbg Jim Cromie
2019-12-05 21:51 ` [PATCH 05/18] dyndbg: fix overcounting of ram used by dyndbg Jim Cromie
2019-12-05 21:51 ` [PATCH 06/18] dyndbg: fix a BUG_ON in ddebug_describe_flags Jim Cromie
2019-12-05 21:51 ` [PATCH 07/18] dyndbg: refactor parse_linerange out of ddebug_parse_query Jim Cromie
2019-12-05 21:51 ` Jim Cromie [this message]
2019-12-05 21:51 ` [PATCH 09/18] dyndbg: refactor ddebug_read_flags out of ddebug_parse_flags Jim Cromie
2019-12-05 21:51 ` [PATCH 10/18] dyndbg: combine flags & mask into a struct, use that Jim Cromie
2019-12-05 21:51 ` [PATCH 11/18] dyndbg: add filter parameter to ddebug_parse_flags Jim Cromie
2019-12-05 21:51 ` [PATCH 12/18] dyndbg: extend ddebug_parse_flags to accept optional filter-flags Jim Cromie
2019-12-05 21:51 ` [PATCH 13/18] dyndbg: prefer declarative init in caller, to memset in callee Jim Cromie
2019-12-05 21:51 ` [PATCH 14/16] dyndbg: add inverted-flags, implement filtering on flags Jim Cromie
2019-12-05 21:51 ` [PATCH 14/18] dyndbg: add user-flag, negating-flags, and " Jim Cromie
2019-12-05 21:51 ` [PATCH 15/16] dyndbg: allow inverted-flag-chars in modflags Jim Cromie
2019-12-05 21:51 ` [PATCH 15/18] dyndbg: allow negating flag-chars " Jim Cromie
2019-12-05 21:51 ` [PATCH 16/18] dyndbg: make ddebug_tables list LIFO for add/remove_module Jim Cromie
2019-12-05 21:51 ` [PATCH 17/18] dyndbg: rename dynamic_debug to dyndbg Jim Cromie
2019-12-05 22:24 ` Andy Shevchenko
2019-12-06 7:49 ` Rasmus Villemoes
2019-12-06 17:33 ` jim.cromie
2019-12-05 21:51 ` [PATCH 18/18] dyndbg-docs: normalize comments in examples Jim Cromie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191205215151.421926-9-jim.cromie@gmail.com \
--to=jim.cromie@gmail.com \
--cc=corbet@lwn.net \
--cc=gregkh@linuxfoundation.org \
--cc=jbaron@akamai.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).