[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v9 4/7] trace: [monitor] Use new event control i
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH v9 4/7] trace: [monitor] Use new event control interface |
Date: |
Thu, 24 Jan 2013 10:37:27 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Jan 23, 2013 at 06:01:29PM +0100, Lluís Vilanova wrote:
> Stefan Hajnoczi writes:
>
> > On Thu, Jan 10, 2013 at 08:23:19PM +0100, Lluís Vilanova wrote:
> >> Signed-off-by: Lluís Vilanova <address@hidden>
> >> ---
> >> monitor.c | 20 +++++++++++++++++---
> >> 1 file changed, 17 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/monitor.c b/monitor.c
> >> index 9cf419b..4c40541 100644
> >> --- a/monitor.c
> >> +++ b/monitor.c
> >> @@ -735,10 +735,24 @@ static void do_trace_event_set_state(Monitor *mon,
> >> const QDict *qdict)
> >> {
> >> const char *tp_name = qdict_get_str(qdict, "name");
> >> bool new_state = qdict_get_bool(qdict, "option");
> >> - int ret = trace_event_set_state(tp_name, new_state);
> >>
> >> - if (!ret) {
> >> - monitor_printf(mon, "unknown event name \"%s\"\n", tp_name);
> >> + if (trace_event_is_pattern(tp_name)) {
> >> + TraceEvent *ev = NULL;
> >> + while ((ev = trace_event_pattern(tp_name, ev)) != NULL) {
> >> + if (!trace_event_get_state_static(ev)) {
> >> + monitor_printf(mon, "event \"%s\" is not traceable\n",
> >> tp_name);
> >> + }
> >> + trace_event_set_state_dynamic(ev, new_state);
> >> + }
> >> + } else {
> >> + TraceEvent *ev = trace_event_name(tp_name);
> >> + if (ev == NULL) {
> >> + monitor_printf(mon, "unknown event name \"%s\"\n", tp_name);
> >> + } else if (!trace_event_get_state_static(ev)) {
> >> + monitor_printf(mon, "event \"%s\" is not traceable\n",
> >> tp_name);
> >> + } else {
> >> + trace_event_set_state_dynamic(ev, new_state);
> >> + }
>
> > Do we need to duplicate the pattern vs not-a-pattern case?
>
> > We can loop with trace_event_pattern() and print the "unknown event
> > name" only if !trace_event_is_pattern().
>
> You mean something like this?
>
>
> #v+
> bool found = false;
> TraceEvent *ev = NULL;
> while ((ev = trace_event_pattern(tp_name, ev)) != NULL) {
> found = true;
> if (!trace_event_get_state_static(ev)) {
> monitor_printf(mon, "event \"%s\" is not traceable\n", tp_name);
> } else {
> trace_event_set_state_dynamic(ev, new_state);
> }
> }
> if (!trace_event_is_pattern(tp_name) && !found) {
> monitor_printf(mon, "unknown event name \"%s\"\n", tp_name);
> }
> #v-
Yes, exactly. It's nice to have a single code path.
Stefan
[Qemu-devel] [PATCH v9 5/7] trace: [default] Port to generic event information and new control interface, Lluís Vilanova, 2013/01/10
[Qemu-devel] [PATCH v9 6/7] trace: [simple] Port to generic event information and new control interface, Lluís Vilanova, 2013/01/10
[Qemu-devel] [PATCH v9 7/7] trace: [stderr] Port to generic event information and new control interface, Lluís Vilanova, 2013/01/10