From: "Mars.Cao" <caobingbu@gmail.com>
To: Mark Wu <wudxw@linux.vnet.ibm.com>
Cc: stefanha@linux.vnet.ibm.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Add wildcard trace event support
Date: Fri, 21 Oct 2011 09:37:49 +0800 [thread overview]
Message-ID: <4EA0CCED.5080305@gmail.com> (raw)
In-Reply-To: <1319103503-12634-1-git-send-email-wudxw@linux.vnet.ibm.com>
On 10/20/2011 05:38 PM, Mark Wu wrote:
> A basic wildcard matching is supported in both the monitor command
> "trace-event" and the events list file. That means you can enable/disable the
> events having a common prefix in a batch. For example, virtio-blk trace events
> could be enabled using:
> trace-event virtio_blk_* on
>
> Signed-off-by: Mark Wu<wudxw@linux.vnet.ibm.com>
> ---
> docs/tracing.txt | 9 ++++++++-
> trace/simple.c | 19 +++++++++++++++++--
> trace/stderr.c | 17 ++++++++++++++++-
> 3 files changed, 41 insertions(+), 4 deletions(-)
>
> diff --git a/docs/tracing.txt b/docs/tracing.txt
> index 95ca16c..ea29f2c 100644
> --- a/docs/tracing.txt
> +++ b/docs/tracing.txt
> @@ -132,12 +132,19 @@ This functionality is also provided through monitor commands:
> means disabled.
>
> * trace-event NAME on|off
> - Enable/disable a given trace event.
> + Enable/disable a given trace event or a group of events having common prefix
> + through wildcard.
>
> The "-trace events=<file>" command line argument can be used to enable the
> events listed in<file> from the very beginning of the program. This file must
> contain one event name per line.
>
> +A basic wildcard matching is supported in both the monitor command "trace
> +-event" and the events list file. That means you can enable/disable the events
> +having a common prefix in a batch. For example, virtio-blk trace events could
> +be enabled using:
> + trace-event virtio_blk_* on
> +
> == Trace backends ==
>
> The "tracetool" script automates tedious trace event code generation and also
> diff --git a/trace/simple.c b/trace/simple.c
> index b639dda..869e315 100644
> --- a/trace/simple.c
> +++ b/trace/simple.c
> @@ -324,14 +324,29 @@ void trace_print_events(FILE *stream, fprintf_function stream_printf)
> bool trace_event_set_state(const char *name, bool state)
> {
> unsigned int i;
> -
> + unsigned int len;
> + bool wildcard = false;
> + bool matched = false;
> +
> + len = strlen(name);
> + if (name[len-1] == '*') {
> + wildcard = true;
> + len -= 1;
> + }
> for (i = 0; i< NR_TRACE_EVENTS; i++) {
> + if (wildcard) {
> + if (!strncmp(trace_list[i].tp_name, name, len)) {
> + trace_list[i].state = state;
> + matched = true;
> + }
> + continue;
> + }
> if (!strcmp(trace_list[i].tp_name, name)) {
> trace_list[i].state = state;
> return true;
> }
> }
> - return false;
> + return matched;
> }
>
> /* Helper function to create a thread with signals blocked. Use glib's
> diff --git a/trace/stderr.c b/trace/stderr.c
> index 7107c4a..6a12977 100644
> --- a/trace/stderr.c
> +++ b/trace/stderr.c
> @@ -15,14 +15,29 @@ void trace_print_events(FILE *stream, fprintf_function stream_printf)
> bool trace_event_set_state(const char *name, bool state)
> {
> unsigned int i;
> + unsigned int len;
> + bool wildcard = false;
> + bool matched = false;
>
> + len = strlen(name);
> + if (name[len-1] == '*') {
> + wildcard = true;
> + len -= 1;
> + }
> for (i = 0; i< NR_TRACE_EVENTS; i++) {
> + if (wildcard) {
> + if (!strncmp(trace_list[i].tp_name, name, len)) {
> + trace_list[i].state = state;
> + matched = true;
> + }
> + continue;
> + }
> if (!strcmp(trace_list[i].tp_name, name)) {
> trace_list[i].state = state;
> return true;
> }
> }
> - return false;
> + return matched;
> }
>
> bool trace_backend_init(const char *events, const char *file)
I do think this idea of using wildcard (from Stefanha) is smarter than
trace groups.
I did not find anything wrong with the code although it does not support
events with wildcard like "virtio_*_init".
Reviewed-by: Cao,Bing Bu <mars@linux.vnet.ibm.com>
Tested-by: Cao,Bing Bu <mars@linux.vnet.ibm.com>
next prev parent reply other threads:[~2011-10-21 1:38 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-20 9:38 [Qemu-devel] [PATCH] Add wildcard trace event support Mark Wu
2011-10-21 1:37 ` Mars.Cao [this message]
2011-10-28 9:47 ` Stefan Hajnoczi
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=4EA0CCED.5080305@gmail.com \
--to=caobingbu@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.ibm.com \
--cc=wudxw@linux.vnet.ibm.com \
/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.