Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8861dd30 authored by Namhyung Kim's avatar Namhyung Kim Committed by Steven Rostedt
Browse files

ftrace: Access ret_stack->subtime only in the function profiler

The subtime is used only for function profiler with function graph
tracer enabled.  Move the definition of subtime under
CONFIG_FUNCTION_PROFILER to reduce the memory usage.  Also move the
initialization of subtime into the graph entry callback.

Link: http://lkml.kernel.org/r/20160831025529.24018-1-namhyung@kernel.org



Cc: Ingo Molnar <mingo@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 613dccdf
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -858,11 +858,11 @@ x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6]
	       When enabled, it will account time the task has been
	       scheduled out as part of the function call.

  graph-time - When running function graph tracer, to include the
  	       time to call nested functions. When this is not set,
	       the time reported for the function will only include
	       the time the function itself executed for, not the time
	       for functions that it called.
  graph-time - When running function profiler with function graph tracer,
	       to include the time to call nested functions. When this is
	       not set, the time reported for the function will only
	       include the time the function itself executed for, not the
	       time for functions that it called.

  record-cmd - When any event or tracer is enabled, a hook is enabled
  	       in the sched_switch trace point to fill comm cache
+2 −0
Original line number Diff line number Diff line
@@ -794,7 +794,9 @@ struct ftrace_ret_stack {
	unsigned long ret;
	unsigned long func;
	unsigned long long calltime;
#ifdef CONFIG_FUNCTION_PROFILER
	unsigned long long subtime;
#endif
	unsigned long fp;
};

+6 −0
Original line number Diff line number Diff line
@@ -872,7 +872,13 @@ function_profile_call(unsigned long ip, unsigned long parent_ip,
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
static int profile_graph_entry(struct ftrace_graph_ent *trace)
{
	int index = trace->depth;

	function_profile_call(trace->func, 0, NULL, NULL);

	if (index >= 0 && index < FTRACE_RETFUNC_DEPTH)
		current->ret_stack[index].subtime = 0;

	return 1;
}

+0 −1
Original line number Diff line number Diff line
@@ -170,7 +170,6 @@ ftrace_push_return_trace(unsigned long ret, unsigned long func, int *depth,
	current->ret_stack[index].ret = ret;
	current->ret_stack[index].func = func;
	current->ret_stack[index].calltime = calltime;
	current->ret_stack[index].subtime = 0;
	current->ret_stack[index].fp = frame_pointer;
	*depth = current->curr_ret_stack;