mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	tracing: Use direct field, type and system names
The names used to display the field and type in the event format files are copied, as well as the system name that is displayed. All these names are created by constant values passed in. If one of theses values were to be removed by a module, the module would also be required to remove any event it created. By using the strings directly, we can save over 100K of memory. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
		
							parent
							
								
									d1a291437f
								
							
						
					
					
						commit
						92edca073c
					
				
					 2 changed files with 5 additions and 19 deletions
				
			
		|  | @ -887,8 +887,8 @@ enum { | |||
| 
 | ||||
| struct ftrace_event_field { | ||||
| 	struct list_head	link; | ||||
| 	char			*name; | ||||
| 	char			*type; | ||||
| 	const char		*name; | ||||
| 	const char		*type; | ||||
| 	int			filter_type; | ||||
| 	int			offset; | ||||
| 	int			size; | ||||
|  |  | |||
|  | @ -72,13 +72,8 @@ static int __trace_define_field(struct list_head *head, const char *type, | |||
| 	if (!field) | ||||
| 		goto err; | ||||
| 
 | ||||
| 	field->name = kstrdup(name, GFP_KERNEL); | ||||
| 	if (!field->name) | ||||
| 		goto err; | ||||
| 
 | ||||
| 	field->type = kstrdup(type, GFP_KERNEL); | ||||
| 	if (!field->type) | ||||
| 		goto err; | ||||
| 	field->name = name; | ||||
| 	field->type = type; | ||||
| 
 | ||||
| 	if (filter_type == FILTER_OTHER) | ||||
| 		field->filter_type = filter_assign_type(type); | ||||
|  | @ -94,8 +89,6 @@ static int __trace_define_field(struct list_head *head, const char *type, | |||
| 	return 0; | ||||
| 
 | ||||
| err: | ||||
| 	if (field) | ||||
| 		kfree(field->name); | ||||
| 	kmem_cache_free(field_cachep, field); | ||||
| 
 | ||||
| 	return -ENOMEM; | ||||
|  | @ -146,8 +139,6 @@ void trace_destroy_fields(struct ftrace_event_call *call) | |||
| 	head = trace_get_fields(call); | ||||
| 	list_for_each_entry_safe(field, next, head, link) { | ||||
| 		list_del(&field->link); | ||||
| 		kfree(field->type); | ||||
| 		kfree(field->name); | ||||
| 		kmem_cache_free(field_cachep, field); | ||||
| 	} | ||||
| } | ||||
|  | @ -286,7 +277,6 @@ static void __put_system(struct event_subsystem *system) | |||
| 		kfree(filter->filter_string); | ||||
| 		kfree(filter); | ||||
| 	} | ||||
| 	kfree(system->name); | ||||
| 	kfree(system); | ||||
| } | ||||
| 
 | ||||
|  | @ -1202,10 +1192,7 @@ create_new_subsystem(const char *name) | |||
| 		return NULL; | ||||
| 
 | ||||
| 	system->ref_count = 1; | ||||
| 	system->name = kstrdup(name, GFP_KERNEL); | ||||
| 
 | ||||
| 	if (!system->name) | ||||
| 		goto out_free; | ||||
| 	system->name = name; | ||||
| 
 | ||||
| 	system->filter = NULL; | ||||
| 
 | ||||
|  | @ -1218,7 +1205,6 @@ create_new_subsystem(const char *name) | |||
| 	return system; | ||||
| 
 | ||||
|  out_free: | ||||
| 	kfree(system->name); | ||||
| 	kfree(system); | ||||
| 	return NULL; | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Steven Rostedt
						Steven Rostedt