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

Commit e45f2e2b authored by Tom Zanussi's avatar Tom Zanussi Committed by Ingo Molnar
Browse files

tracing/filters: add TRACE_EVENT_FORMAT_NOFILTER event macro



Frederic Weisbecker suggested that the trace_special event shouldn't be
filterable; this patch adds a TRACE_EVENT_FORMAT_NOFILTER event macro
that allows an event format to be exported without having a filter
attached, and removes filtering from the trace_special event.

Signed-off-by: default avatarTom Zanussi <tzanussi@gmail.com>
Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent e1112b4d
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -1064,7 +1064,6 @@ ftrace_trace_special(void *__tr,
		     unsigned long arg1, unsigned long arg2, unsigned long arg3,
		     unsigned long arg1, unsigned long arg2, unsigned long arg3,
		     int pc)
		     int pc)
{
{
	struct ftrace_event_call *call = &event_special;
	struct ring_buffer_event *event;
	struct ring_buffer_event *event;
	struct trace_array *tr = __tr;
	struct trace_array *tr = __tr;
	struct special_entry *entry;
	struct special_entry *entry;
@@ -1077,7 +1076,6 @@ ftrace_trace_special(void *__tr,
	entry->arg1			= arg1;
	entry->arg1			= arg1;
	entry->arg2			= arg2;
	entry->arg2			= arg2;
	entry->arg3			= arg3;
	entry->arg3			= arg3;
	filter_check_discard(call, entry, event);
	trace_buffer_unlock_commit(tr, event, 0, pc);
	trace_buffer_unlock_commit(tr, event, 0, pc);
}
}


+2 −0
Original line number Original line Diff line number Diff line
@@ -915,6 +915,8 @@ do { \
#undef TRACE_EVENT_FORMAT
#undef TRACE_EVENT_FORMAT
#define TRACE_EVENT_FORMAT(call, proto, args, fmt, tstruct, tpfmt)	\
#define TRACE_EVENT_FORMAT(call, proto, args, fmt, tstruct, tpfmt)	\
	extern struct ftrace_event_call event_##call;
	extern struct ftrace_event_call event_##call;
#undef TRACE_EVENT_FORMAT_NOFILTER
#define TRACE_EVENT_FORMAT_NOFILTER(call, proto, args, fmt, tstruct, tpfmt)
#include "trace_event_types.h"
#include "trace_event_types.h"


#endif /* _LINUX_KERNEL_TRACE_H */
#endif /* _LINUX_KERNEL_TRACE_H */
+1 −1
Original line number Original line Diff line number Diff line
@@ -57,7 +57,7 @@ TRACE_EVENT_FORMAT(context_switch, TRACE_CTX, ctx_switch_entry, ignore,
	TP_RAW_FMT("%u:%u:%u  ==+ %u:%u:%u [%03u]")
	TP_RAW_FMT("%u:%u:%u  ==+ %u:%u:%u [%03u]")
);
);


TRACE_EVENT_FORMAT(special, TRACE_SPECIAL, special_entry, ignore,
TRACE_EVENT_FORMAT_NOFILTER(special, TRACE_SPECIAL, special_entry, ignore,
	TRACE_STRUCT(
	TRACE_STRUCT(
		TRACE_FIELD(unsigned long, arg1, arg1)
		TRACE_FIELD(unsigned long, arg1, arg1)
		TRACE_FIELD(unsigned long, arg2, arg2)
		TRACE_FIELD(unsigned long, arg2, arg2)
+33 −0
Original line number Original line Diff line number Diff line
@@ -65,6 +65,22 @@ ftrace_format_##call(struct trace_seq *s) \
	return ret;							\
	return ret;							\
}
}


#undef TRACE_EVENT_FORMAT_NOFILTER
#define TRACE_EVENT_FORMAT_NOFILTER(call, proto, args, fmt, tstruct,	\
				    tpfmt)				\
static int								\
ftrace_format_##call(struct trace_seq *s)				\
{									\
	struct args field;						\
	int ret;							\
									\
	tstruct;							\
									\
	trace_seq_printf(s, "\nprint fmt: \"%s\"\n", tpfmt);		\
									\
	return ret;							\
}

#include "trace_event_types.h"
#include "trace_event_types.h"


#undef TRACE_ZERO_CHAR
#undef TRACE_ZERO_CHAR
@@ -109,6 +125,19 @@ static int ftrace_raw_init_event_##call(void) \
	return 0;							\
	return 0;							\
}									\
}									\


#undef TRACE_EVENT_FORMAT_NOFILTER
#define TRACE_EVENT_FORMAT_NOFILTER(call, proto, args, fmt, tstruct,	\
				    tpfmt)				\
									\
struct ftrace_event_call __used						\
__attribute__((__aligned__(4)))						\
__attribute__((section("_ftrace_events"))) event_##call = {		\
	.name			= #call,				\
	.id			= proto,				\
	.system			= __stringify(TRACE_SYSTEM),		\
	.show_format		= ftrace_format_##call,			\
};

#include "trace_event_types.h"
#include "trace_event_types.h"


#undef TRACE_FIELD
#undef TRACE_FIELD
@@ -150,4 +179,8 @@ ftrace_define_fields_##call(void) \
	return ret;							\
	return ret;							\
}
}


#undef TRACE_EVENT_FORMAT_NOFILTER
#define TRACE_EVENT_FORMAT_NOFILTER(call, proto, args, fmt, tstruct,	\
				    tpfmt)

#include "trace_event_types.h"
#include "trace_event_types.h"