Skip to content

Commit

Permalink
tracing: Use direct field, type and system names
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Steven Rostedt authored and Steven Rostedt committed Mar 15, 2013
1 parent d1a2914 commit 92edca0
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 19 deletions.
4 changes: 2 additions & 2 deletions kernel/trace/trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
20 changes: 3 additions & 17 deletions kernel/trace/trace_events.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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;
Expand Down Expand Up @@ -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);
}
}
Expand Down Expand Up @@ -286,7 +277,6 @@ static void __put_system(struct event_subsystem *system)
kfree(filter->filter_string);
kfree(filter);
}
kfree(system->name);
kfree(system);
}

Expand Down Expand Up @@ -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;

Expand All @@ -1218,7 +1205,6 @@ create_new_subsystem(const char *name)
return system;

out_free:
kfree(system->name);
kfree(system);
return NULL;
}
Expand Down

0 comments on commit 92edca0

Please sign in to comment.