On Thu, Jan 10, 2013 at 08:23:19PM +0100, Lluís Vilanova wrote: > Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> > --- > 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(). Stefan