mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-30 23:50:07 +00:00 
			
		
		
		
	 3ce83aea86
			
		
	
	
		3ce83aea86
		
	
	
	
	
		
			
			To avoid further confusion between the ftrace infrastructure and the function tracer. This patch renames the "ftrace" function tracer to "function". Now in available_tracers, instead of "ftrace" there will be "function". This makes more sense, since people will not know exactly what the "ftrace" tracer does. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
		
			
				
	
	
		
			82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * ring buffer based function tracer
 | |
|  *
 | |
|  * Copyright (C) 2007-2008 Steven Rostedt <srostedt@redhat.com>
 | |
|  * Copyright (C) 2008 Ingo Molnar <mingo@redhat.com>
 | |
|  *
 | |
|  * Based on code from the latency_tracer, that is:
 | |
|  *
 | |
|  *  Copyright (C) 2004-2006 Ingo Molnar
 | |
|  *  Copyright (C) 2004 William Lee Irwin III
 | |
|  */
 | |
| #include <linux/debugfs.h>
 | |
| #include <linux/uaccess.h>
 | |
| #include <linux/ftrace.h>
 | |
| #include <linux/fs.h>
 | |
| 
 | |
| #include "trace.h"
 | |
| 
 | |
| static void function_reset(struct trace_array *tr)
 | |
| {
 | |
| 	int cpu;
 | |
| 
 | |
| 	tr->time_start = ftrace_now(tr->cpu);
 | |
| 
 | |
| 	for_each_online_cpu(cpu)
 | |
| 		tracing_reset(tr, cpu);
 | |
| }
 | |
| 
 | |
| static void start_function_trace(struct trace_array *tr)
 | |
| {
 | |
| 	tr->cpu = get_cpu();
 | |
| 	function_reset(tr);
 | |
| 	put_cpu();
 | |
| 
 | |
| 	tracing_start_cmdline_record();
 | |
| 	tracing_start_function_trace();
 | |
| }
 | |
| 
 | |
| static void stop_function_trace(struct trace_array *tr)
 | |
| {
 | |
| 	tracing_stop_function_trace();
 | |
| 	tracing_stop_cmdline_record();
 | |
| }
 | |
| 
 | |
| static void function_trace_init(struct trace_array *tr)
 | |
| {
 | |
| 	if (tr->ctrl)
 | |
| 		start_function_trace(tr);
 | |
| }
 | |
| 
 | |
| static void function_trace_reset(struct trace_array *tr)
 | |
| {
 | |
| 	if (tr->ctrl)
 | |
| 		stop_function_trace(tr);
 | |
| }
 | |
| 
 | |
| static void function_trace_ctrl_update(struct trace_array *tr)
 | |
| {
 | |
| 	if (tr->ctrl)
 | |
| 		start_function_trace(tr);
 | |
| 	else
 | |
| 		stop_function_trace(tr);
 | |
| }
 | |
| 
 | |
| static struct tracer function_trace __read_mostly =
 | |
| {
 | |
| 	.name	     = "function",
 | |
| 	.init	     = function_trace_init,
 | |
| 	.reset	     = function_trace_reset,
 | |
| 	.ctrl_update = function_trace_ctrl_update,
 | |
| #ifdef CONFIG_FTRACE_SELFTEST
 | |
| 	.selftest    = trace_selftest_startup_function,
 | |
| #endif
 | |
| };
 | |
| 
 | |
| static __init int init_function_trace(void)
 | |
| {
 | |
| 	return register_tracer(&function_trace);
 | |
| }
 | |
| 
 | |
| device_initcall(init_function_trace);
 |