Messages in this thread | | | Date | Mon, 26 Nov 2018 20:30:49 +0900 | From | Masami Hiramatsu <> | Subject | Re: [RFC][PATCH 07/14] fgraph: Add new fgraph_ops structure to enable function graph hooks |
| |
On Wed, 21 Nov 2018 20:27:15 -0500 Steven Rostedt <rostedt@goodmis.org> wrote:
> From: "Steven Rostedt (VMware)" <rostedt@goodmis.org> > > Currently the registering of function graph is to pass in a entry and return > function. We need to have a way to associate those functions together where > the entry can determine to run the return hook. Having a structure that > contains both functions will facilitate the process of converting the code > to be able to do such. > > This is similar to the way function hooks are enabled (it passes in > ftrace_ops). Instead of passing in the functions to use, a single structure > is passed in to the registering function. > > The unregister function is now passed in the fgraph_ops handle. When we > allow more than one callback to the function graph hooks, this will let the > system know which one to remove. > > Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > --- > include/linux/ftrace.h | 24 +++++++++++++++++------- > kernel/trace/fgraph.c | 9 ++++----- > kernel/trace/ftrace.c | 10 +++++++--- > kernel/trace/trace_functions_graph.c | 21 ++++++++++++++++----- > kernel/trace/trace_irqsoff.c | 10 +++++++--- > kernel/trace/trace_sched_wakeup.c | 10 +++++++--- > kernel/trace/trace_selftest.c | 8 ++++++-- > 7 files changed, 64 insertions(+), 28 deletions(-) > > diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h > index f98063e273e5..477ff9412d26 100644 > --- a/include/linux/ftrace.h > +++ b/include/linux/ftrace.h > @@ -749,6 +749,18 @@ typedef int (*trace_func_graph_ent_t)(struct ftrace_graph_ent *); /* entry */ > > #ifdef CONFIG_FUNCTION_GRAPH_TRACER > > +struct fgraph_ops { > + trace_func_graph_ent_t entryfunc; > + trace_func_graph_ret_t retfunc;
> + struct fgraph_ops __rcu *next; > + unsigned long flags; > + void *private; > +#ifdef CONFIG_DYNAMIC_FTRACE > + struct ftrace_ops_hash local_hash; > + struct ftrace_ops_hash *func_hash; > +#endif
Hmm, can we introduce these fields when we actually use it?
BTW, would you have any idea for using private field?
Thank you,
-- Masami Hiramatsu <mhiramat@kernel.org>
| |