Messages in this thread | | | Date | Mon, 2 May 2016 22:42:44 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH] tracing: Don't display trigger file for events that don't have register func |
| |
On Mon, 2 May 2016 22:14:14 +0800 Chunyu Hu <chuhu@redhat.com> wrote:
> Currently register function of the event will be called > through the 'reg' field of event class directly without > any check when seting up triggers. > > Triggers for events that don't support register through > debug fs (events under events/ftrace are for perf to
Actually, they were created for trace-cmd. I'm not even sure if perf uses the ftrace event formats.
> read event format, and most of them don't have regisgter > function except events/ftrace/function.) can't be enabled > at all, and an oops will be hit when setting up trigger > for those events, so just not showing them is an easy way > to avoid the oops. > > Signed-off-by: Chunyu Hu <chuhu@redhat.com> > --- > kernel/trace/trace_events.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c > index da1eeb6..9fb99fd 100644 > --- a/kernel/trace/trace_events.c > +++ b/kernel/trace/trace_events.c > @@ -2138,9 +2138,10 @@ event_create_dir(struct dentry *parent, struct trace_event_file *file) > trace_create_file("filter", 0644, file->dir, file, > &ftrace_event_filter_fops); > > - trace_create_file("trigger", 0644, file->dir, file, > - &event_trigger_fops); > - > + if (call->class->reg) { > + trace_create_file("trigger", 0644, file->dir, file, > + &event_trigger_fops); > + }
As you stated, reg is there for function tracing, and is not a good value to use as a check. Use the following check instead:
if (!(call->flags & TRACE_EVENT_FL_IGNORE_ENABLE)) trace_create_file("trigger", 0644, file->dir, file, &event_trigger_fops);
And add a comment that states that only event directories that can be enabled should have triggers.
-- Steve
> #ifdef CONFIG_HIST_TRIGGERS > trace_create_file("hist", 0444, file->dir, file, > &event_hist_fops);
| |