Markers - define non optimized marker
To support the forthcoming "immediate values" marker optimization, we must have a way to declare markers in few code paths that does not use instruction modification based enable. This will be the case of printk(), some traps and eventually lockdep instrumentation. Changelog : - Fix reversed boolean logic of "generic". Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
dc102a8fae
commit
0aa977f592
1 changed files with 24 additions and 5 deletions
|
@ -58,8 +58,12 @@ struct marker {
|
||||||
* Make sure the alignment of the structure in the __markers section will
|
* Make sure the alignment of the structure in the __markers section will
|
||||||
* not add unwanted padding between the beginning of the section and the
|
* not add unwanted padding between the beginning of the section and the
|
||||||
* structure. Force alignment to the same alignment as the section start.
|
* structure. Force alignment to the same alignment as the section start.
|
||||||
|
*
|
||||||
|
* The "generic" argument controls which marker enabling mechanism must be used.
|
||||||
|
* If generic is true, a variable read is used.
|
||||||
|
* If generic is false, immediate values are used.
|
||||||
*/
|
*/
|
||||||
#define __trace_mark(name, call_private, format, args...) \
|
#define __trace_mark(generic, name, call_private, format, args...) \
|
||||||
do { \
|
do { \
|
||||||
static const char __mstrtab_##name[] \
|
static const char __mstrtab_##name[] \
|
||||||
__attribute__((section("__markers_strings"))) \
|
__attribute__((section("__markers_strings"))) \
|
||||||
|
@ -79,7 +83,7 @@ struct marker {
|
||||||
extern void marker_update_probe_range(struct marker *begin,
|
extern void marker_update_probe_range(struct marker *begin,
|
||||||
struct marker *end);
|
struct marker *end);
|
||||||
#else /* !CONFIG_MARKERS */
|
#else /* !CONFIG_MARKERS */
|
||||||
#define __trace_mark(name, call_private, format, args...) \
|
#define __trace_mark(generic, name, call_private, format, args...) \
|
||||||
__mark_check_format(format, ## args)
|
__mark_check_format(format, ## args)
|
||||||
static inline void marker_update_probe_range(struct marker *begin,
|
static inline void marker_update_probe_range(struct marker *begin,
|
||||||
struct marker *end)
|
struct marker *end)
|
||||||
|
@ -87,15 +91,30 @@ static inline void marker_update_probe_range(struct marker *begin,
|
||||||
#endif /* CONFIG_MARKERS */
|
#endif /* CONFIG_MARKERS */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* trace_mark - Marker
|
* trace_mark - Marker using code patching
|
||||||
* @name: marker name, not quoted.
|
* @name: marker name, not quoted.
|
||||||
* @format: format string
|
* @format: format string
|
||||||
* @args...: variable argument list
|
* @args...: variable argument list
|
||||||
*
|
*
|
||||||
* Places a marker.
|
* Places a marker using optimized code patching technique (imv_read())
|
||||||
|
* to be enabled when immediate values are present.
|
||||||
*/
|
*/
|
||||||
#define trace_mark(name, format, args...) \
|
#define trace_mark(name, format, args...) \
|
||||||
__trace_mark(name, NULL, format, ## args)
|
__trace_mark(0, name, NULL, format, ## args)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* _trace_mark - Marker using variable read
|
||||||
|
* @name: marker name, not quoted.
|
||||||
|
* @format: format string
|
||||||
|
* @args...: variable argument list
|
||||||
|
*
|
||||||
|
* Places a marker using a standard memory read (_imv_read()) to be
|
||||||
|
* enabled. Should be used for markers in code paths where instruction
|
||||||
|
* modification based enabling is not welcome. (__init and __exit functions,
|
||||||
|
* lockdep, some traps, printk).
|
||||||
|
*/
|
||||||
|
#define _trace_mark(name, format, args...) \
|
||||||
|
__trace_mark(1, name, NULL, format, ## args)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MARK_NOARGS - Format string for a marker with no argument.
|
* MARK_NOARGS - Format string for a marker with no argument.
|
||||||
|
|
Loading…
Add table
Reference in a new issue