mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	ftrace: provide an id file for each event
Since not every event has a format file to read the id from, expose it explicitly in a separate file. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: Steven Rostedt <rostedt@goodmis.org> LKML-Reference: <20090319194233.372534033@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
							parent
							
								
									44fc6ee923
								
							
						
					
					
						commit
						23725aeeab
					
				
					 1 changed files with 36 additions and 0 deletions
				
			
		|  | @ -412,6 +412,29 @@ event_format_read(struct file *filp, char __user *ubuf, size_t cnt, | |||
| 	return r; | ||||
| } | ||||
| 
 | ||||
| static ssize_t | ||||
| event_id_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos) | ||||
| { | ||||
| 	struct ftrace_event_call *call = filp->private_data; | ||||
| 	struct trace_seq *s; | ||||
| 	int r; | ||||
| 
 | ||||
| 	if (*ppos) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	s = kmalloc(sizeof(*s), GFP_KERNEL); | ||||
| 	if (!s) | ||||
| 		return -ENOMEM; | ||||
| 
 | ||||
| 	trace_seq_init(s); | ||||
| 	trace_seq_printf(s, "%d\n", call->id); | ||||
| 
 | ||||
| 	r = simple_read_from_buffer(ubuf, cnt, ppos, | ||||
| 				    s->buffer, s->len); | ||||
| 	kfree(s); | ||||
| 	return r; | ||||
| } | ||||
| 
 | ||||
| static const struct seq_operations show_event_seq_ops = { | ||||
| 	.start = t_start, | ||||
| 	.next = t_next, | ||||
|  | @ -452,6 +475,11 @@ static const struct file_operations ftrace_event_format_fops = { | |||
| 	.read = event_format_read, | ||||
| }; | ||||
| 
 | ||||
| static const struct file_operations ftrace_event_id_fops = { | ||||
| 	.open = tracing_open_generic, | ||||
| 	.read = event_id_read, | ||||
| }; | ||||
| 
 | ||||
| static struct dentry *event_trace_events_dir(void) | ||||
| { | ||||
| 	static struct dentry *d_tracer; | ||||
|  | @ -550,6 +578,14 @@ event_create_dir(struct ftrace_event_call *call, struct dentry *d_events) | |||
| 				   "'%s/enable' entry\n", call->name); | ||||
| 	} | ||||
| 
 | ||||
| 	if (call->id) { | ||||
| 		entry = debugfs_create_file("id", 0444, call->dir, call, | ||||
| 				&ftrace_event_id_fops); | ||||
| 		if (!entry) | ||||
| 			pr_warning("Could not create debugfs '%s/id' entry\n", | ||||
| 					call->name); | ||||
| 	} | ||||
| 
 | ||||
| 	/* A trace may not want to export its format */ | ||||
| 	if (!call->show_format) | ||||
| 		return 0; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Peter Zijlstra
						Peter Zijlstra