Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Steven Rostedt and committed by
Steven Rostedt
92edca07 d1a29143

+5 -19
+2 -2
kernel/trace/trace.h
··· 887 887 888 888 struct ftrace_event_field { 889 889 struct list_head link; 890 - char *name; 891 - char *type; 890 + const char *name; 891 + const char *type; 892 892 int filter_type; 893 893 int offset; 894 894 int size;
+3 -17
kernel/trace/trace_events.c
··· 72 72 if (!field) 73 73 goto err; 74 74 75 - field->name = kstrdup(name, GFP_KERNEL); 76 - if (!field->name) 77 - goto err; 78 - 79 - field->type = kstrdup(type, GFP_KERNEL); 80 - if (!field->type) 81 - goto err; 75 + field->name = name; 76 + field->type = type; 82 77 83 78 if (filter_type == FILTER_OTHER) 84 79 field->filter_type = filter_assign_type(type); ··· 89 94 return 0; 90 95 91 96 err: 92 - if (field) 93 - kfree(field->name); 94 97 kmem_cache_free(field_cachep, field); 95 98 96 99 return -ENOMEM; ··· 139 146 head = trace_get_fields(call); 140 147 list_for_each_entry_safe(field, next, head, link) { 141 148 list_del(&field->link); 142 - kfree(field->type); 143 - kfree(field->name); 144 149 kmem_cache_free(field_cachep, field); 145 150 } 146 151 } ··· 277 286 kfree(filter->filter_string); 278 287 kfree(filter); 279 288 } 280 - kfree(system->name); 281 289 kfree(system); 282 290 } 283 291 ··· 1192 1202 return NULL; 1193 1203 1194 1204 system->ref_count = 1; 1195 - system->name = kstrdup(name, GFP_KERNEL); 1196 - 1197 - if (!system->name) 1198 - goto out_free; 1205 + system->name = name; 1199 1206 1200 1207 system->filter = NULL; 1201 1208 ··· 1205 1218 return system; 1206 1219 1207 1220 out_free: 1208 - kfree(system->name); 1209 1221 kfree(system); 1210 1222 return NULL; 1211 1223 }