Re: [PATCHv3 0/2] tracing: function graph output for preempt/irqs-off tracers

Frederic Weisbecker
2010-03-31T08:01:56Z

On Wed, Mar 31, 2010 at 09:37:38AM +0200, Jiri Olsa wrote:
> On Mon, Mar 29, 2010 at 11:41:39AM -0400, Steven Rostedt wrote:
> > On Mon, 2010-03-29 at 17:21 +0200, Jiri Olsa wrote:
> >
> > > > Understand what I'm trying to ask?
> > >
> > > ok, so what you mean is:
> > > - dont clear the max_tr and
> > > - add function graph events.
> > >
> > > So when the tracing_enabled and display-graph are disabled we will
> > > get events output rather than 'unknown event' output... right?
> >
> > Right, although when the display-graph is disabled, we lose the /* */
> > but that's fine.
>
> ok, I have it done, but found another issue..
>
> It's the tracer_flags which governs the tracer output. As I'm using
> the function_graph tracer output functions, they follow function_graph
> tracer's flags settings..
>
> My first idea was a change that would allow tracer using flags
> of other tracers.. so, when enabling irqsoff tracer the function_graph
> tracer's options would become available.
>
> I made the patch but got to the set_flag function which can be overloaded
> by tracer. So I'd need to remember the flags's tracer, and it does
> not seem right.. :)
>
> any ideas?
>
> thanks,
> jirka

Hehe :)

I don't think we need such a feature. I doubt anybody
is going to play with the options granularity of the function
graph tracer there.

We should rather focus on what is useful to display for irqsoff
tracing, which means we need every function graph options set except
funcgraph-overrun that is only there to debug the tracer
itself (I haven't tried it for a while BTW).

What you can do is to save the function graph tracer options
when the irqsoff tracer starts, then overwrite them, and eventually
restore the previous values when the irqsoff reset callback is called.

Or preferably...

Another solution, a bit more proper, is to sanitize a bit the function
graph tracer printing helpers by pushing the options as a parameter to
them.

So the function graph tracer can call them by passing the function graph
tracer options, and the irqsoff tracer or any other tracer can call them
with its own options.