tracing: Add __find_event_file() to find event files without restrictions
By adding the function __find_event_file() that can search for files without restrictions, such as if the event associated with the file has a reg function, or if it has the "ignore" flag set, the files that are associated to ftrace internal events (like trace_marker and function events) can be found and used. find_event_file() still returns a "filtered" file, as most callers need a valid trace event file. One created by the trace_events.h macros and not one created for parsing ftrace specific events. Reviewed-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
		
							parent
							
								
									c94e45bc38
								
							
						
					
					
						commit
						3c96529c07
					
				| @ -1454,6 +1454,9 @@ extern void trace_event_enable_tgid_record(bool enable); | ||||
| extern int event_trace_add_tracer(struct dentry *parent, struct trace_array *tr); | ||||
| extern int event_trace_del_tracer(struct trace_array *tr); | ||||
| 
 | ||||
| extern struct trace_event_file *__find_event_file(struct trace_array *tr, | ||||
| 						  const char *system, | ||||
| 						  const char *event); | ||||
| extern struct trace_event_file *find_event_file(struct trace_array *tr, | ||||
| 						const char *system, | ||||
| 						const char *event); | ||||
|  | ||||
| @ -2473,8 +2473,9 @@ __trace_add_event_dirs(struct trace_array *tr) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| /* Returns any file that matches the system and event */ | ||||
| struct trace_event_file * | ||||
| find_event_file(struct trace_array *tr, const char *system,  const char *event) | ||||
| __find_event_file(struct trace_array *tr, const char *system, const char *event) | ||||
| { | ||||
| 	struct trace_event_file *file; | ||||
| 	struct trace_event_call *call; | ||||
| @ -2485,10 +2486,7 @@ find_event_file(struct trace_array *tr, const char *system,  const char *event) | ||||
| 		call = file->event_call; | ||||
| 		name = trace_event_name(call); | ||||
| 
 | ||||
| 		if (!name || !call->class || !call->class->reg) | ||||
| 			continue; | ||||
| 
 | ||||
| 		if (call->flags & TRACE_EVENT_FL_IGNORE_ENABLE) | ||||
| 		if (!name || !call->class) | ||||
| 			continue; | ||||
| 
 | ||||
| 		if (strcmp(event, name) == 0 && | ||||
| @ -2498,6 +2496,20 @@ find_event_file(struct trace_array *tr, const char *system,  const char *event) | ||||
| 	return NULL; | ||||
| } | ||||
| 
 | ||||
| /* Returns valid trace event files that match system and event */ | ||||
| struct trace_event_file * | ||||
| find_event_file(struct trace_array *tr, const char *system, const char *event) | ||||
| { | ||||
| 	struct trace_event_file *file; | ||||
| 
 | ||||
| 	file = __find_event_file(tr, system, event); | ||||
| 	if (!file || !file->event_call->class->reg || | ||||
| 	    file->event_call->flags & TRACE_EVENT_FL_IGNORE_ENABLE) | ||||
| 		return NULL; | ||||
| 
 | ||||
| 	return file; | ||||
| } | ||||
| 
 | ||||
| #ifdef CONFIG_DYNAMIC_FTRACE | ||||
| 
 | ||||
| /* Avoid typos */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user