Commit c562d15d authored by Anthony Liguori's avatar Anthony Liguori

Merge remote-tracking branch 'stefanha/tracing' into staging

* stefanha/tracing:
  trace: Remove "info trace" from documents
  trace: document '-' syntax for disabling events
  trace: allow disabling events in events file
  Avoid all systemtap reserved words
Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
parents 698229eb e94c4c92
......@@ -139,6 +139,10 @@ having a common prefix in a batch. For example, virtio-blk trace events could
be enabled using:
trace-event virtio_blk_* on
If a line in the "-trace events=<file>" file begins with a '-', the trace event
will be disabled instead of enabled. This is useful when a wildcard was used
to enable an entire family of events but one noisy event needs to be disabled.
== Trace backends ==
The "tracetool" script automates tedious trace event code generation and also
......@@ -185,15 +189,6 @@ records the char* pointer value instead of the string that is pointed to.
==== Monitor commands ====
* info trace
Display the contents of trace buffer. This command dumps the trace buffer
with simple formatting. For full pretty-printing, use the simpletrace.py
script on a binary trace file.
The trace buffer is written into until full. The full trace buffer is
flushed and emptied. This means the 'info trace' will display few or no
entries if the buffer has just been flushed.
* trace-file on|off|flush|set <path>
Enable/disable/flush the trace file or set the trace file name.
......
......@@ -1573,13 +1573,6 @@ show roms
@end table
ETEXI
#ifdef CONFIG_TRACE_SIMPLE
STEXI
@item info trace
show contents of trace buffer
ETEXI
#endif
STEXI
@item info trace-events
show available trace events and their state
......
......@@ -73,6 +73,15 @@ def d(events):
'};')
# Technically 'self' is not used by systemtap yet, but
# they recommended we keep it in the reserved list anyway
RESERVED_WORDS = (
'break', 'catch', 'continue', 'delete', 'else', 'for',
'foreach', 'function', 'global', 'if', 'in', 'limit',
'long', 'next', 'probe', 'return', 'self', 'string',
'try', 'while'
)
def stap(events):
for e in events:
# Define prototype for probe arguments
......@@ -87,7 +96,7 @@ def stap(events):
if len(e.args) > 0:
for name in e.args.names():
# Append underscore to reserved keywords
if name in ('limit', 'in', 'next', 'self', 'function'):
if name in RESERVED_WORDS:
name += '_'
out(' %s = $arg%d;' % (name, i))
i += 1
......
......@@ -12,6 +12,8 @@
void trace_backend_init_events(const char *fname)
{
int ret;
if (fname == NULL) {
return;
}
......@@ -30,7 +32,12 @@ void trace_backend_init_events(const char *fname)
if ('#' == line_buf[0]) { /* skip commented lines */
continue;
}
if (!trace_event_set_state(line_buf, true)) {
if ('-' == line_buf[0]) {
ret = trace_event_set_state(line_buf+1, false);
} else {
ret = trace_event_set_state(line_buf, true);
}
if (!ret) {
fprintf(stderr,
"error: trace event '%s' does not exist\n", line_buf);
exit(1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment