Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32c0edae authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt
Browse files

tracing: Remove duplicate id information in event structure



Now that the trace_event structure is embedded in the ftrace_event_call
structure, there is no need for the ftrace_event_call id field.
The id field is the same as the trace_event type field.

Removing the id and re-arranging the structure brings down the tracepoint
footprint by another 5K.

   text	   data	    bss	    dec	    hex	filename
4913961	1088356	 861512	6863829	 68bbd5	vmlinux.orig
4895024	1023812	 861512	6780348	 6775bc	vmlinux.print
4894944	1018052	 861512	6774508	 675eec	vmlinux.id

Acked-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Acked-by: default avatarMasami Hiramatsu <mhiramat@redhat.com>
Acked-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 80decc70
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -149,14 +149,13 @@ struct ftrace_event_call {
	char			*name;
	struct dentry		*dir;
	struct trace_event	event;
	int			enabled;
	int			id;
	const char		*print_fmt;
	int			filter_active;
	struct event_filter	*filter;
	void			*mod;
	void			*data;

	int			enabled;
	int			filter_active;
	int			perf_refcount;
};

+6 −6
Original line number Diff line number Diff line
@@ -150,7 +150,7 @@
 *
 *	entry = iter->ent;
 *
 *	if (entry->type != event_<call>.id) {
 *	if (entry->type != event_<call>->event.type) {
 *		WARN_ON_ONCE(1);
 *		return TRACE_TYPE_UNHANDLED;
 *	}
@@ -221,7 +221,7 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags, \
									\
	entry = iter->ent;						\
									\
	if (entry->type != event->id) {					\
	if (entry->type != event->event.type) {				\
		WARN_ON_ONCE(1);					\
		return TRACE_TYPE_UNHANDLED;				\
	}								\
@@ -257,7 +257,7 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags, \
									\
	entry = iter->ent;						\
									\
	if (entry->type != event_##call.id) {				\
	if (entry->type != event_##call.event.type) {			\
		WARN_ON_ONCE(1);					\
		return TRACE_TYPE_UNHANDLED;				\
	}								\
@@ -409,7 +409,7 @@ static inline notrace int ftrace_get_offsets_##call( \
 *	__data_size = ftrace_get_offsets_<call>(&__data_offsets, args);
 *
 *	event = trace_current_buffer_lock_reserve(&buffer,
 *				  event_<call>.id,
 *				  event_<call>->event.type,
 *				  sizeof(*entry) + __data_size,
 *				  irq_flags, pc);
 *	if (!event)
@@ -510,7 +510,7 @@ ftrace_raw_event_##call(void *__data, proto) \
	__data_size = ftrace_get_offsets_##call(&__data_offsets, args); \
									\
	event = trace_current_buffer_lock_reserve(&buffer,		\
				 event_call->id,			\
				 event_call->event.type,		\
				 sizeof(*entry) + __data_size,		\
				 irq_flags, pc);			\
	if (!event)							\
@@ -711,7 +711,7 @@ perf_trace_##call(void *__data, proto) \
		      "profile buffer not large enough"))		\
		return;							\
	entry = (struct ftrace_raw_##call *)perf_trace_buf_prepare(	\
		__entry_size, event_call->id, &rctx, &irq_flags);	\
		__entry_size, event_call->event.type, &rctx, &irq_flags); \
	if (!entry)							\
		return;							\
	tstruct								\
+2 −2
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ int perf_trace_enable(int event_id)

	mutex_lock(&event_mutex);
	list_for_each_entry(event, &ftrace_events, list) {
		if (event->id == event_id &&
		if (event->event.type == event_id &&
		    event->class && event->class->perf_probe &&
		    try_module_get(event->mod)) {
			ret = perf_trace_event_enable(event);
@@ -128,7 +128,7 @@ void perf_trace_disable(int event_id)

	mutex_lock(&event_mutex);
	list_for_each_entry(event, &ftrace_events, list) {
		if (event->id == event_id) {
		if (event->event.type == event_id) {
			perf_trace_event_disable(event);
			module_put(event->mod);
			break;
+3 −4
Original line number Diff line number Diff line
@@ -125,7 +125,6 @@ int trace_event_raw_init(struct ftrace_event_call *call)
	id = register_ftrace_event(&call->event);
	if (!id)
		return -ENODEV;
	call->id = id;

	return 0;
}
@@ -567,7 +566,7 @@ event_format_read(struct file *filp, char __user *ubuf, size_t cnt,
	trace_seq_init(s);

	trace_seq_printf(s, "name: %s\n", call->name);
	trace_seq_printf(s, "ID: %d\n", call->id);
	trace_seq_printf(s, "ID: %d\n", call->event.type);
	trace_seq_printf(s, "format:\n");

	head = trace_get_fields(call);
@@ -641,7 +640,7 @@ event_id_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos)
		return -ENOMEM;

	trace_seq_init(s);
	trace_seq_printf(s, "%d\n", call->id);
	trace_seq_printf(s, "%d\n", call->event.type);

	r = simple_read_from_buffer(ubuf, cnt, ppos,
				    s->buffer, s->len);
@@ -969,7 +968,7 @@ event_create_dir(struct ftrace_event_call *call, struct dentry *d_events,
				  enable);

#ifdef CONFIG_PERF_EVENTS
	if (call->id && (call->class->perf_probe || call->class->reg))
	if (call->event.type && (call->class->perf_probe || call->class->reg))
		trace_create_file("id", 0444, call->dir, call,
		 		  id);
#endif
+1 −1
Original line number Diff line number Diff line
@@ -1395,7 +1395,7 @@ int ftrace_profile_set_filter(struct perf_event *event, int event_id,
	mutex_lock(&event_mutex);

	list_for_each_entry(call, &ftrace_events, list) {
		if (call->id == event_id)
		if (call->event.type == event_id)
			break;
	}

Loading