trace: Multi-backend tracing
Adds support to compile QEMU with multiple tracing backends at the same time. For example, you can compile QEMU with: $ ./configure --enable-trace-backends=ftrace,dtrace Where 'ftrace' can be handy for having an in-flight record of events, and 'dtrace' can be later used to extract more information from the system. This patch allows having both available without recompiling QEMU. Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
committed by
Stefan Hajnoczi
parent
82432638eb
commit
5b808275f3
+1
-24
@@ -42,35 +42,13 @@ static int find_debugfs(char *debugfs)
|
||||
return 1;
|
||||
}
|
||||
|
||||
void trace_print_events(FILE *stream, fprintf_function stream_printf)
|
||||
{
|
||||
TraceEventID i;
|
||||
|
||||
for (i = 0; i < trace_event_count(); i++) {
|
||||
TraceEvent *ev = trace_event_id(i);
|
||||
stream_printf(stream, "%s [Event ID %u] : state %u\n",
|
||||
trace_event_get_name(ev), i, trace_event_get_state_dynamic(ev));
|
||||
}
|
||||
}
|
||||
|
||||
void trace_event_set_state_dynamic_backend(TraceEvent *ev, bool state)
|
||||
{
|
||||
ev->dstate = state;
|
||||
}
|
||||
|
||||
bool trace_backend_init(const char *events, const char *file)
|
||||
bool ftrace_init(void)
|
||||
{
|
||||
char debugfs[PATH_MAX];
|
||||
char path[PATH_MAX];
|
||||
int debugfs_found;
|
||||
int trace_fd = -1;
|
||||
|
||||
if (file) {
|
||||
fprintf(stderr, "error: -trace file=...: "
|
||||
"option not supported by the selected tracing backend\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
debugfs_found = find_debugfs(debugfs);
|
||||
if (debugfs_found) {
|
||||
snprintf(path, PATH_MAX, "%s/tracing/tracing_on", debugfs);
|
||||
@@ -97,6 +75,5 @@ bool trace_backend_init(const char *events, const char *file)
|
||||
return false;
|
||||
}
|
||||
|
||||
trace_backend_init_events(events);
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user