mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	tracing: Add trace options for core options to instances
Allow instances to have their own options, at least for the core options (non tracer specific ones). There are a few global options that should not be added to instances, like enabling of trace_printk, and the sched comm recording, which do not have a specific trace instance associated to them. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
		
							parent
							
								
									2d34f48955
								
							
						
					
					
						commit
						16270145ce
					
				
					 1 changed files with 14 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -258,6 +258,11 @@ unsigned long long ns2usecs(cycle_t nsec)
 | 
			
		|||
	 TRACE_ITER_RECORD_CMD | TRACE_ITER_OVERWRITE |			\
 | 
			
		||||
	 TRACE_ITER_IRQ_INFO | TRACE_ITER_MARKERS)
 | 
			
		||||
 | 
			
		||||
/* trace_options that are only supported by global_trace */
 | 
			
		||||
#define TOP_LEVEL_TRACE_FLAGS (TRACE_ITER_PRINTK |			\
 | 
			
		||||
	       TRACE_ITER_PRINTK_MSGONLY | TRACE_ITER_RECORD_CMD)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The global_trace is the descriptor that holds the tracing
 | 
			
		||||
 * buffers for the live tracing. For each CPU, it contains
 | 
			
		||||
| 
						 | 
				
			
			@ -6387,18 +6392,22 @@ create_trace_option_core_file(struct trace_array *tr,
 | 
			
		|||
				 &trace_options_core_fops);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static __init void create_trace_options_dir(struct trace_array *tr)
 | 
			
		||||
static void create_trace_options_dir(struct trace_array *tr)
 | 
			
		||||
{
 | 
			
		||||
	struct dentry *t_options;
 | 
			
		||||
	bool top_level = tr == &global_trace;
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	t_options = trace_options_init_dentry(tr);
 | 
			
		||||
	if (!t_options)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; trace_options[i]; i++)
 | 
			
		||||
	for (i = 0; trace_options[i]; i++) {
 | 
			
		||||
		if (top_level ||
 | 
			
		||||
		    !((1 << i) & TOP_LEVEL_TRACE_FLAGS))
 | 
			
		||||
			create_trace_option_core_file(tr, trace_options[i], i);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static ssize_t
 | 
			
		||||
rb_simple_read(struct file *filp, char __user *ubuf,
 | 
			
		||||
| 
						 | 
				
			
			@ -6707,6 +6716,8 @@ init_tracer_tracefs(struct trace_array *tr, struct dentry *d_tracer)
 | 
			
		|||
	trace_create_file("tracing_on", 0644, d_tracer,
 | 
			
		||||
			  tr, &rb_simple_fops);
 | 
			
		||||
 | 
			
		||||
	create_trace_options_dir(tr);
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_TRACER_MAX_TRACE
 | 
			
		||||
	trace_create_file("tracing_max_latency", 0644, d_tracer,
 | 
			
		||||
			&tr->max_latency, &tracing_max_lat_fops);
 | 
			
		||||
| 
						 | 
				
			
			@ -6903,8 +6914,6 @@ static __init int tracer_init_tracefs(void)
 | 
			
		|||
 | 
			
		||||
	create_trace_instances(d_tracer);
 | 
			
		||||
 | 
			
		||||
	create_trace_options_dir(&global_trace);
 | 
			
		||||
 | 
			
		||||
	mutex_lock(&trace_types_lock);
 | 
			
		||||
	for (t = trace_types; t; t = t->next)
 | 
			
		||||
		add_tracer_options(&global_trace, t);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue