Commit 20344c54 authored by Yordan Karadzhov (VMware)'s avatar Yordan Karadzhov (VMware) Committed by Steven Rostedt (VMware)
Browse files

tracing: Add "last_func_repeats" to struct trace_array

The field is used to keep track of the consecutive (on the same CPU) calls
of a single function. This information is needed in order to consolidate
the function tracing record in the cases when a single function is called
number of times.

Link: https://lkml.kernel.org/r/20210415181854.147448-4-y.karadz@gmail.com



Signed-off-by: default avatarYordan Karadzhov (VMware) <y.karadz@gmail.com>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent f689e4f2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -9104,6 +9104,7 @@ static int __remove_instance(struct trace_array *tr)
	ftrace_clear_pids(tr);
	ftrace_destroy_function_files(tr);
	tracefs_remove(tr->dir);
	free_percpu(tr->last_func_repeats);
	free_trace_buffers(tr);

	for (i = 0; i < tr->nr_topts; i++) {
+12 −0
Original line number Diff line number Diff line
@@ -262,6 +262,17 @@ struct cond_snapshot {
	cond_update_fn_t		update;
};

/*
 * struct trace_func_repeats - used to keep track of the consecutive
 * (on the same CPU) calls of a single function.
 */
struct trace_func_repeats {
	unsigned long	ip;
	unsigned long	parent_ip;
	unsigned long	count;
	u64		ts_last_call;
};

/*
 * The trace array - an array of per-CPU trace arrays. This is the
 * highest level data structure that individual tracers deal with.
@@ -358,6 +369,7 @@ struct trace_array {
#ifdef CONFIG_TRACER_SNAPSHOT
	struct cond_snapshot	*cond_snapshot;
#endif
	struct trace_func_repeats	__percpu *last_func_repeats;
};

enum {