In order to reuse code inside trace-cmd application context, few functions are made non static and "trace_" is prepended to their names: int trace_make_vsock(unsigned int port); int trace_get_vsock_port(int sd, unsigned int *port); int trace_open_vsock(unsigned int cid, unsigned int port); char *trace_get_guest_file(const char *file, const char *guest); Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@xxxxxxxxx> --- tracecmd/include/trace-local.h | 8 ++++++++ tracecmd/trace-agent.c | 10 +++++----- tracecmd/trace-record.c | 16 ++++++++-------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/tracecmd/include/trace-local.h b/tracecmd/include/trace-local.h index 4c8d6cb..d3e96c2 100644 --- a/tracecmd/include/trace-local.h +++ b/tracecmd/include/trace-local.h @@ -19,6 +19,8 @@ #define GUEST_FIFO_FMT GUEST_DIR_FMT "/" GUEST_PIPE_NAME "%d" #define VIRTIO_FIFO_FMT "/dev/virtio-ports/" GUEST_PIPE_NAME "%d" +#define TRACE_FILENAME "trace.dat" + /* fix stupid glib guint64 typecasts and printf formats */ typedef unsigned long long u64; @@ -260,6 +262,12 @@ void tracecmd_disable_tracing(void); void tracecmd_enable_tracing(void); void tracecmd_stat_cpu(struct trace_seq *s, int cpu); +int trace_make_vsock(unsigned int port); +int trace_get_vsock_port(int sd, unsigned int *port); +int trace_open_vsock(unsigned int cid, unsigned int port); + +char *trace_get_guest_file(const char *file, const char *guest); + /* No longer in event-utils.h */ void __noreturn die(const char *fmt, ...); /* Can be overriden */ void *malloc_or_die(unsigned int size); /* Can be overridden */ diff --git a/tracecmd/trace-agent.c b/tracecmd/trace-agent.c index cc330b7..db58064 100644 --- a/tracecmd/trace-agent.c +++ b/tracecmd/trace-agent.c @@ -40,7 +40,7 @@ static int get_local_cid(unsigned int *cid) return ret; } -static int make_vsock(unsigned int port) +int trace_make_vsock(unsigned int port) { struct sockaddr_vm addr = { .svm_family = AF_VSOCK, @@ -64,7 +64,7 @@ static int make_vsock(unsigned int port) return sd; } -static int get_vsock_port(int sd, unsigned int *port) +int trace_get_vsock_port(int sd, unsigned int *port) { struct sockaddr_vm addr; socklen_t addr_len = sizeof(addr); @@ -87,11 +87,11 @@ static void make_vsocks(int nr, int *fds, unsigned int *ports) int i, fd, ret; for (i = 0; i < nr; i++) { - fd = make_vsock(VMADDR_PORT_ANY); + fd = trace_make_vsock(VMADDR_PORT_ANY); if (fd < 0) die("Failed to open vsocket"); - ret = get_vsock_port(fd, &port); + ret = trace_get_vsock_port(fd, &port); if (ret < 0) die("Failed to get vsocket address"); @@ -208,7 +208,7 @@ static void agent_serve(unsigned int port) nr_cpus = tracecmd_count_cpus(); page_size = getpagesize(); - sd = make_vsock(port); + sd = trace_make_vsock(port); if (sd < 0) die("Failed to open vsocket"); diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c index 51b40ff..e84b714 100644 --- a/tracecmd/trace-record.c +++ b/tracecmd/trace-record.c @@ -68,7 +68,7 @@ static int rt_prio; static int keep; -static const char *output_file = "trace.dat"; +static const char *output_file = TRACE_FILENAME; static int latency; static int sleep_time = 1000; @@ -536,7 +536,7 @@ static char *get_temp_file(struct buffer_instance *instance, int cpu) return file; } -static char *get_guest_file(const char *file, const char *guest) +char *trace_get_guest_file(const char *file, const char *guest) { const char *p; char *out = NULL; @@ -2772,7 +2772,7 @@ static int connect_port(const char *host, unsigned int port) } #ifdef VSOCK -static int open_vsock(unsigned int cid, unsigned int port) +int trace_open_vsock(unsigned int cid, unsigned int port) { struct sockaddr_vm addr = { .svm_family = AF_VSOCK, @@ -2835,7 +2835,7 @@ static bool can_splice_read_vsock(void) } #else -static inline int open_vsock(unsigned int cid, unsigned int port) +int trace_open_vsock(unsigned int cid, unsigned int port) { die("vsock is not supported"); return -1; @@ -3117,7 +3117,7 @@ create_recorder_instance(struct buffer_instance *instance, const char *file, int if (instance->use_fifos) fd = instance->fds[cpu]; else - fd = open_vsock(instance->cid, instance->client_ports[cpu]); + fd = trace_open_vsock(instance->cid, instance->client_ports[cpu]); if (fd < 0) die("Failed to connect to agent"); @@ -3508,7 +3508,7 @@ static void connect_to_agent(struct buffer_instance *instance) use_fifos = nr_fifos > 0; } - sd = open_vsock(instance->cid, instance->port); + sd = trace_open_vsock(instance->cid, instance->port); if (sd < 0) die("Failed to connect to vsocket @%u:%u", instance->cid, instance->port); @@ -3562,7 +3562,7 @@ static void setup_guest(struct buffer_instance *instance) int fd; /* Create a place to store the guest meta data */ - file = get_guest_file(output_file, tracecmd_get_instance_name(instance->ftrace)); + file = trace_get_guest_file(output_file, tracecmd_get_instance_name(instance->ftrace)); if (!file) die("Failed to allocate memory"); @@ -3887,7 +3887,7 @@ static void write_guest_file(struct buffer_instance *instance) char **temp_files; int i, fd; - file = get_guest_file(output_file, tracecmd_get_instance_name(instance->ftrace)); + file = trace_get_guest_file(output_file, tracecmd_get_instance_name(instance->ftrace)); if (!file) die("Failed to allocate memory"); -- 2.23.0