Message ID | 20200219131410.447103-1-tz.stoyanov@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2,1/2] trace-cmd: Clear synthetic events on reset subcommand | expand |
On Wed, 19 Feb 2020 15:14:10 +0200 "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote: > The "trace-cmd reset" command is supposed to set the ftrace state to default. > However, the ftrace error logs are not reseted. > A logic is added to delete the content of "error_log" file when "trace-cmd reset" is executed. > > Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> > --- > tracecmd/trace-record.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c > index b6a412e..3e0d066 100644 > --- a/tracecmd/trace-record.c > +++ b/tracecmd/trace-record.c > @@ -4638,6 +4638,25 @@ static void clear_triggers(void) > clear_instance_triggers(instance); > } > > +static void clear_instance_error_log(struct buffer_instance *instance) > +{ > + char *file; > + > + file = tracefs_instance_get_file(instance->tracefs, "error_log"); > + if (!file) > + return; > + write_file(file, " "); > + tracefs_put_tracing_file(file); > +} The error_log file is not guaranteed to exist. Please add a check for existence via stat() (hmm, perhaps we should make a file_exists() helper function). Otherwise I get this: # trace-cmd reset trace-cmd: No such file or directory opening to '/debug/tracing/error_log' > + > +static void clear_error_log(void) > +{ > + struct buffer_instance *instance; > + > + for_all_instances(instance) > + clear_instance_error_log(instance); > +} > + > static void clear_all_synth_events(void) > { > char sevent[BUFSIZ]; > @@ -5382,6 +5401,7 @@ void trace_reset(int argc, char **argv) > clear_filters(); > clear_triggers(); > clear_all_synth_events(); > + clear_error_log(); > /* set clock to "local" */ > reset_clock(); > reset_event_pid();
diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c index b6a412e..3e0d066 100644 --- a/tracecmd/trace-record.c +++ b/tracecmd/trace-record.c @@ -4638,6 +4638,25 @@ static void clear_triggers(void) clear_instance_triggers(instance); } +static void clear_instance_error_log(struct buffer_instance *instance) +{ + char *file; + + file = tracefs_instance_get_file(instance->tracefs, "error_log"); + if (!file) + return; + write_file(file, " "); + tracefs_put_tracing_file(file); +} + +static void clear_error_log(void) +{ + struct buffer_instance *instance; + + for_all_instances(instance) + clear_instance_error_log(instance); +} + static void clear_all_synth_events(void) { char sevent[BUFSIZ]; @@ -5382,6 +5401,7 @@ void trace_reset(int argc, char **argv) clear_filters(); clear_triggers(); clear_all_synth_events(); + clear_error_log(); /* set clock to "local" */ reset_clock(); reset_event_pid();
The "trace-cmd reset" command is supposed to set the ftrace state to default. However, the ftrace error logs are not reseted. A logic is added to delete the content of "error_log" file when "trace-cmd reset" is executed. Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- tracecmd/trace-record.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)