ftrace: ensure every event gets an id
Impact: widen user-space visibe event IDs to all events Previously only TRACE_EVENT events got ids, because only they generated raw output which needs to be demuxed from the trace. In order to provide a unique ID for each event, register everybody, regardless. 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.464914218@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
							parent
							
								
									23725aeeab
								
							
						
					
					
						commit
						28bea271e5
					
				| @ -130,7 +130,19 @@ static void ftrace_unreg_event_##call(void)				\ | ||||
| {									\ | ||||
| 	unregister_trace_##call(ftrace_event_##call);			\ | ||||
| }									\ | ||||
| 
 | ||||
| 									\ | ||||
| static struct ftrace_event_call event_##call;				\ | ||||
| 									\ | ||||
| static int ftrace_init_event_##call(void)				\ | ||||
| {									\ | ||||
| 	int id;								\ | ||||
| 									\ | ||||
| 	id = register_ftrace_event(NULL);				\ | ||||
| 	if (!id)							\ | ||||
| 		return -ENODEV;						\ | ||||
| 	event_##call.id = id;						\ | ||||
| 	return 0;							\ | ||||
| } | ||||
| 
 | ||||
| #undef TRACE_FORMAT | ||||
| #define TRACE_FORMAT(call, proto, args, fmt)				\ | ||||
| @ -140,6 +152,7 @@ __attribute__((__aligned__(4)))						\ | ||||
| __attribute__((section("_ftrace_events"))) event_##call = {		\ | ||||
| 	.name			= #call,				\ | ||||
| 	.system			= __stringify(TRACE_SYSTEM),		\ | ||||
| 	.raw_init		= ftrace_init_event_##call,		\ | ||||
| 	.regfunc		= ftrace_reg_event_##call,		\ | ||||
| 	.unregfunc		= ftrace_unreg_event_##call,		\ | ||||
| } | ||||
|  | ||||
| @ -481,6 +481,11 @@ int register_ftrace_event(struct trace_event *event) | ||||
| 
 | ||||
| 	mutex_lock(&trace_event_mutex); | ||||
| 
 | ||||
| 	if (!event) { | ||||
| 		ret = next_event_type++; | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
| 	if (!event->type) | ||||
| 		event->type = next_event_type++; | ||||
| 	else if (event->type > __TRACE_LAST_TYPE) { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user