forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tracing: create automated trace defines
This patch lowers the number of places a developer must modify to add new tracepoints. The current method to add a new tracepoint into an existing system is to write the trace point macro in the trace header with one of the macros TRACE_EVENT, TRACE_FORMAT or DECLARE_TRACE, then they must add the same named item into the C file with the macro DEFINE_TRACE(name) and then add the trace point. This change cuts out the needing to add the DEFINE_TRACE(name). Every file that uses the tracepoint must still include the trace/<type>.h file, but the one C file must also add a define before the including of that file. #define CREATE_TRACE_POINTS #include <trace/mytrace.h> This will cause the trace/mytrace.h file to also produce the C code necessary to implement the trace point. Note, if more than one trace/<type>.h is used to create the C code it is best to list them all together. #define CREATE_TRACE_POINTS #include <trace/foo.h> #include <trace/bar.h> #include <trace/fido.h> Thanks to Mathieu Desnoyers and Christoph Hellwig for coming up with the cleaner solution of the define above the includes over my first design to have the C code include a "special" header. This patch converts sched, irq and lockdep and skb to use this new method. Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Neil Horman <nhorman@tuxdriver.com> Cc: Zhao Lei <zhaolei@cn.fujitsu.com> Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro> Cc: Pekka Enberg <penberg@cs.helsinki.fi> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
- Loading branch information
Showing
16 changed files
with
105 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
/* | ||
* Trace files that want to automate creationg of all tracepoints defined | ||
* in their file should include this file. The following are macros that the | ||
* trace file may define: | ||
* | ||
* TRACE_SYSTEM defines the system the tracepoint is for | ||
* | ||
* TRACE_INCLUDE_FILE if the file name is something other than TRACE_SYSTEM.h | ||
* This macro may be defined to tell define_trace.h what file to include. | ||
* Note, leave off the ".h". | ||
* | ||
* TRACE_INCLUDE_PATH if the path is something other than core kernel include/trace | ||
* then this macro can define the path to use. Note, the path is relative to | ||
* define_trace.h, not the file including it. Full path names for out of tree | ||
* modules must be used. | ||
*/ | ||
|
||
#ifdef CREATE_TRACE_POINTS | ||
|
||
/* Prevent recursion */ | ||
#undef CREATE_TRACE_POINTS | ||
|
||
#include <linux/stringify.h> | ||
|
||
#undef TRACE_EVENT | ||
#define TRACE_EVENT(name, proto, args, tstruct, assign, print) \ | ||
DEFINE_TRACE(name) | ||
|
||
#undef TRACE_FORMAT | ||
#define TRACE_FORMAT(name, proto, args, print) \ | ||
DEFINE_TRACE(name) | ||
|
||
#undef DECLARE_TRACE | ||
#define DECLARE_TRACE(name, proto, args) \ | ||
DEFINE_TRACE(name) | ||
|
||
#undef TRACE_INCLUDE | ||
#undef __TRACE_INCLUDE | ||
|
||
#ifndef TRACE_INCLUDE_FILE | ||
# define TRACE_INCLUDE_FILE TRACE_SYSTEM | ||
# define UNDEF_TRACE_INCLUDE_FILE | ||
#endif | ||
|
||
#ifndef TRACE_INCLUDE_PATH | ||
# define __TRACE_INCLUDE(system) <trace/system.h> | ||
# define UNDEF_TRACE_INCLUDE_FILE | ||
#else | ||
# define __TRACE_INCLUDE(system) __stringify(TRACE_INCLUDE_PATH/system.h) | ||
#endif | ||
|
||
# define TRACE_INCLUDE(system) __TRACE_INCLUDE(system) | ||
|
||
/* Let the trace headers be reread */ | ||
#define TRACE_HEADER_MULTI_READ | ||
|
||
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE) | ||
|
||
#undef TRACE_HEADER_MULTI_READ | ||
|
||
/* Only undef what we defined in this file */ | ||
#ifdef UNDEF_TRACE_INCLUDE_FILE | ||
# undef TRACE_INCLUDE_PATH | ||
# undef UNDEF_TRACE_INCLUDE_FILE | ||
#endif | ||
|
||
#ifdef UNDEF_TRACE_INCLUDE_FILE | ||
# undef TRACE_INCLUDE_PATH | ||
# undef UNDEF_TRACE_INCLUDE_FILE | ||
#endif | ||
|
||
/* We may be processing more files */ | ||
#define CREATE_TRACE_POINTS | ||
|
||
#endif /* CREATE_TRACE_POINTS */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters