All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jim Cromie <jim.cromie@gmail.com>
To: jbaron@redhat.com
Cc: linux-kernel@vger.kernel.org, bvanassche@acm.org,
	joe@perches.com, gregkh@suse.de, gnb@fmeh.org,
	Jim Cromie <jim.cromie@gmail.com>
Subject: [PATCH 03/21] dynamic_debug: process multiple commands on a line
Date: Mon, 11 Jul 2011 01:46:38 -0600	[thread overview]
Message-ID: <1310370416-6322-4-git-send-email-jim.cromie@gmail.com> (raw)
In-Reply-To: <1310370416-6322-1-git-send-email-jim.cromie@gmail.com>

Process multiple commands per line, separated by ';'.  All commands are
processed, independent of errors, allowing individual commands to fail,
for example when a module is not installed.  Last error code is returned.
With this, extensive command sets can be given on the boot-line.

Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
 lib/dynamic_debug.c |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index 1597d5a..ae72402 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -423,6 +423,32 @@ static int ddebug_exec_query(char *query_string)
 	return 0;
 }
 
+/* handle multiple queries, continue on error, return last error */
+static int ddebug_exec_queries(char *query)
+{
+	char *split;
+	int i, errs = 0, exitcode = 0, rc;
+
+	for (i = 0; query; query = split, i++) {
+		split = strchr(query, ';');
+		if (split)
+			*split++ = '\0';
+
+		if (verbose)
+			pr_info("query %d: \"%s\"\n", i, query);
+
+		rc = ddebug_exec_query(query);
+		if (rc) {
+			errs++;
+			exitcode = rc;
+		}
+	}
+	if (verbose)
+		pr_info("processed %d queries, with %d errs\n", i, errs);
+
+	return exitcode;
+}
+
 static int dynamic_emit_prefix(const struct _ddebug *descriptor)
 {
 	char tid[sizeof(int) + sizeof(int)/2 + 4];
@@ -557,7 +583,7 @@ static ssize_t ddebug_proc_write(struct file *file, const char __user *ubuf,
 	if (verbose)
 		pr_info("read %d bytes from userspace\n", (int)len);
 
-	ret = ddebug_exec_query(tmpbuf);
+	ret = ddebug_exec_queries(tmpbuf);
 	if (ret)
 		return ret;
 
@@ -862,7 +888,7 @@ static int __init dynamic_debug_init(void)
 
 	/* ddebug_query boot param got passed -> set it up */
 	if (ddebug_setup_string[0] != '\0') {
-		ret = ddebug_exec_query(ddebug_setup_string);
+		ret = ddebug_exec_queries(ddebug_setup_string);
 		if (ret)
 			pr_warn("Invalid ddebug boot param %s",
 				ddebug_setup_string);
-- 
1.7.4.1


  parent reply	other threads:[~2011-07-11  7:47 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-28  7:09 [PATCH 0/11] dynamic_debug: allow multiple pending queries on boot-line Jim Cromie
2011-06-28  7:09 ` [PATCH 01/11] dynamic_debug: allow changing of dynamic_debug verbosity any time Jim Cromie
2011-06-29 10:41   ` Bart Van Assche
2011-07-01 21:57     ` Greg KH
2011-07-02  8:39       ` Jim Cromie
2011-06-28  7:09 ` [PATCH 02/11] dynamic_debug: trim source-path prefix from dynamic_debug/control Jim Cromie
2011-06-28 10:08   ` Bart Van Assche
2011-06-28 18:29     ` Jim Cromie
2011-06-28  7:09 ` [PATCH 03/11] dynamic_debug: process multiple commands on a line Jim Cromie
2011-06-29 10:50   ` Bart Van Assche
2011-07-05 16:12     ` Jim Cromie
2011-06-28  7:09 ` [PATCH 04/11] dynamic_debug: warn when >1 of each type of match-spec is given Jim Cromie
2011-06-28 10:17   ` Bart Van Assche
2011-06-28 15:21     ` Jim Cromie
2011-06-28  7:09 ` [PATCH 05/11] dynamic_debug: use pr_info instead of printk(KERN_INFO Jim Cromie
2011-06-28  7:09 ` [PATCH 06/11] dynamic_debug: KERN_ERR should not depend upon verbosity Jim Cromie
2011-06-28  7:09 ` [PATCH 07/11] dynamic_debug: dont kill entire facility on error parsing ddebug_query Jim Cromie
2011-06-28  7:09 ` [PATCH 08/11] dynamic_debug: return int from ddebug_change Jim Cromie
2011-06-28 10:24   ` Bart Van Assche
2011-06-28 14:54     ` Jason Baron
2011-06-28 17:48       ` Bart Van Assche
2011-06-28 18:24         ` Jim Cromie
2011-06-28  7:09 ` [PATCH 09/11] dynamic_debug: add_to_pending() saves non-matching queries for later Jim Cromie
2011-06-28 14:48   ` Jason Baron
2011-07-03  8:27     ` Bart Van Assche
2011-06-28 19:17   ` Jim Cromie
2011-07-03  8:24     ` Bart Van Assche
2011-07-03  8:32   ` Bart Van Assche
2011-06-28  7:09 ` [PATCH 10/11] dynamic_debug: call apply_pending_queries from ddebug_add_module Jim Cromie
2011-07-03  8:37   ` Bart Van Assche
2011-06-28  7:09 ` [PATCH 11/11] dynamic_debug: document use of pendinq queries at boot-time Jim Cromie
2011-07-03  8:19 ` [PATCH 0/11] dynamic_debug: allow multiple pending queries on boot-line Bart Van Assche
2011-07-11  7:46 ` Jim Cromie
2011-07-11  7:46   ` [PATCH 01/21] dynamic_debug: add pending flag 'a' to make pending queries explicit Jim Cromie
2011-07-11  7:46   ` [PATCH 02/21] dynamic_debug: allow changing of dynamic_debug verbosity any time Jim Cromie
2011-07-11  7:46   ` Jim Cromie [this message]
2011-07-12  5:54     ` [PATCH 03/21] dynamic_debug: process multiple commands on a line Bart Van Assche
2011-07-13  7:25       ` Jim Cromie
2011-07-13 17:44         ` Bart Van Assche
2011-07-11  7:46   ` [PATCH 04/21] dynamic_debug: warn when >1 of each type of match-spec is given Jim Cromie
2011-07-11  7:46   ` [PATCH 05/21] dynamic_debug: pr_err() call should not depend upon verbosity Jim Cromie
2011-07-11  7:46   ` [PATCH 06/21] dynamic_debug: dont kill entire facility on error parsing ddebug_query Jim Cromie
2011-07-11  7:46   ` [PATCH 07/21] dynamic_debug: return int from ddebug_change Jim Cromie
2011-07-11 18:39     ` Bart Van Assche
2011-07-11  7:46   ` [PATCH 08/21] dynamic_debug: factor show_ddebug_query out of ddebug_parse_query Jim Cromie
2011-07-11 18:36     ` Bart Van Assche
2011-07-16 21:32       ` Jim Cromie
2011-07-25 11:10         ` Bart Van Assche
2011-07-25 13:56           ` Jim Cromie
2011-07-11  7:46   ` [PATCH 09/21] dynamic_debug: save_pending() saves non-matching queries for later Jim Cromie
2011-07-11 18:32     ` Bart Van Assche
2011-07-12  5:55     ` Bart Van Assche
2011-07-11  7:46   ` [PATCH 10/21] dynamic_debug: call apply_pending_queries from ddebug_add_module Jim Cromie
2011-07-11  7:46   ` [PATCH 11/21] dynamic_debug: refactor query_matches_callsite out of ddebug_change Jim Cromie
2011-07-11  7:46   ` [PATCH 12/21] dynamic_debug: document use of pending queries at boot-time Jim Cromie
2011-07-11  7:46   ` [PATCH 13/21] dynamic_debug: require 'a' flag to explicitly mark pending queries Jim Cromie
2011-07-12  9:20     ` Bart Van Assche
2011-07-11  7:46   ` [PATCH 14/21] dynamic_debug: hoist locking in ddebug_change to callers Jim Cromie
2011-07-11  7:46   ` [PATCH 15/21] dynamic_debug: describe_flags with '=[ptmfl]*' Jim Cromie
2011-07-11  7:46   ` [PATCH 16/21] dynamic_debug: define several levels of verbosity Jim Cromie
2011-07-11  7:46   ` [PATCH 17/21] dynamic_debug: non-optimization - remove != NULL Jim Cromie
2011-07-11  7:46   ` [PATCH 18/21] dynamic_debug: trim source-path prefix from dynamic_debug/control Jim Cromie
2011-07-11  7:46   ` [PATCH 19/21] dynamic_debug: add flags filtering to flags spec handling Jim Cromie
2011-07-11  7:46   ` [PATCH 20/21] dynamic_debug: clear pending_queries list in remove_all_tables Jim Cromie
2011-07-11  7:46   ` [PATCH 21/21] dynamic_debug: delete pending queries Jim Cromie
2011-07-11 10:49     ` Bart Van Assche
2011-07-11 13:43       ` Jim Cromie
2011-07-12  0:25     ` Joe Perches
2011-07-12 20:50       ` Jason Baron
2011-07-20  5:39         ` Jim Cromie
2011-07-20 17:43       ` Jim Cromie
2011-07-20 22:08         ` Joe Perches

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=1310370416-6322-4-git-send-email-jim.cromie@gmail.com \
    --to=jim.cromie@gmail.com \
    --cc=bvanassche@acm.org \
    --cc=gnb@fmeh.org \
    --cc=gregkh@suse.de \
    --cc=jbaron@redhat.com \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.