Re: [PATCH 3/5] trace-cmd: Support trace-agent of virtio-trace
flat view
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2012-08-22 13:51:50
Also in:
lkml, qemu-devel
On Wed, 2012-08-22 at 17:43 +0900, Yoshihiro YUNOMAE wrote:
Add read path and control path to use trace-agent of virtio-trace. When we use trace-agent, trace-cmd will be used as follows: # AGENT_READ_DIR=/tmp/virtio-trace/tracing \ AGENT_CTL=/tmp/virtio-trace/agent-ctl-path.in \ TRACING_DIR=/tmp/virtio-trace/debugfs/tracing \\
Ha! You used "TRACING_DIR" but patch one introduces TRACE_DIR. Lets change this to DEBUG_TRACING_DIR instead anyway. Also, I don't like the generic environment variables. Perhaps VIRTIO_TRACE_DIR, or AGENT_TRACE_DIR and AGENT_TRACE_CTL. Lets try to keep the environment namespace sparse.
quoted hunk ↗ jump to hunk
trace-cmd record -e "sched:*" Here, AGENT_READ_DIR is the path for a reading directory of virtio-trace, AGENT_CTL is a control path of trace-agent, and TRACING_DIR is a debugfs path of a guest. Signed-off-by: Yoshihiro YUNOMAE <redacted> --- trace-cmd.h | 1 + trace-recorder.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++- trace-util.c | 18 +++++++++++++++++ 3 files changed, 75 insertions(+), 1 deletions(-)diff --git a/trace-cmd.h b/trace-cmd.h index f904dc5..75506ed 100644 --- a/trace-cmd.h +++ b/trace-cmd.h@@ -72,6 +72,7 @@ static inline int tracecmd_host_bigendian(void) } char *tracecmd_find_tracing_dir(void); +char *guest_agent_tracing_read_dir(void); /* --- Opening and Reading the trace.dat file --- */diff --git a/trace-recorder.c b/trace-recorder.c index 215affc..3b750e9 100644 --- a/trace-recorder.c +++ b/trace-recorder.c@@ -33,6 +33,7 @@ #include <unistd.h> #include <ctype.h> #include <errno.h> +#include <stdbool.h> #include "trace-cmd.h"@@ -43,6 +44,8 @@ struct tracecmd_recorder { int page_size; int cpu; int stop; + int ctl_fd; + bool agent_existing;
Thanks for the reminder. I need to convert a lot to use 'bool' instead.
quoted hunk ↗ jump to hunk
}; void tracecmd_free_recorder(struct tracecmd_recorder *recorder)@@ -59,11 +62,29 @@ void tracecmd_free_recorder(struct tracecmd_recorder *recorder) free(recorder); } +static char *use_trace_agent_dir(char *ctl_path, + struct tracecmd_recorder *recorder) +{ + ctl_path = strdup(ctl_path); + if (!ctl_path) + die("malloc"); + warning("Use environmental control path: %s\n", ctl_path);
s/Use/Using/ -- Steve
quoted hunk ↗ jump to hunk
+ + recorder->ctl_fd = open(ctl_path, O_WRONLY); + if (recorder->ctl_fd < 0) + return NULL; + + recorder->agent_existing = true; + + return guest_agent_tracing_read_dir(); +} +