The tracefs_find_tracing_dir() and tracefs_tracing_dir() are consolidated. All usage of tracefs_find_tracing_dir() are replaced with calls to tracefs_tracing_dir(). Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@xxxxxxxxx> --- include/tracefs/tracefs.h | 3 --- lib/trace-cmd/trace-output.c | 7 +++++-- lib/tracefs/include/tracefs-local.h | 2 ++ lib/tracefs/tracefs-instance.c | 2 +- lib/tracefs/tracefs-utils.c | 8 ++++---- tracecmd/trace-record.c | 19 ++++++++++++------- utest/tracefs-utest.c | 9 --------- 7 files changed, 24 insertions(+), 26 deletions(-) diff --git a/include/tracefs/tracefs.h b/include/tracefs/tracefs.h index 8308e3ac..9a99ad6c 100644 --- a/include/tracefs/tracefs.h +++ b/include/tracefs/tracefs.h @@ -15,9 +15,6 @@ void tracefs_put_tracing_file(char *name); /* The returned string must *not* be freed */ const char *tracefs_tracing_dir(void); -/* tracefs_find_tracing_dir must be freed */ -char *tracefs_find_tracing_dir(void); - /* ftarce instances */ struct tracefs_instance; diff --git a/lib/trace-cmd/trace-output.c b/lib/trace-cmd/trace-output.c index cd7dcec8..de76e3e7 100644 --- a/lib/trace-cmd/trace-output.c +++ b/lib/trace-cmd/trace-output.c @@ -240,9 +240,12 @@ static tsize_t copy_file(struct tracecmd_output *handle, */ static const char *find_tracing_dir(struct tracecmd_output *handle) { - if (!handle->tracing_dir) - handle->tracing_dir = tracefs_find_tracing_dir(); + if (!handle->tracing_dir) { + const char *dir = tracefs_tracing_dir(); + if (dir) + handle->tracing_dir = strdup(dir); + } return handle->tracing_dir; } diff --git a/lib/tracefs/include/tracefs-local.h b/lib/tracefs/include/tracefs-local.h index bdbf89e8..c222fe4f 100644 --- a/lib/tracefs/include/tracefs-local.h +++ b/lib/tracefs/include/tracefs-local.h @@ -13,6 +13,8 @@ void warning(const char *fmt, ...); int str_read_file(const char *file, char **buffer); char *trace_append_file(const char *dir, const char *name); +char *trace_find_tracing_dir(void); + #ifndef ACCESSPERMS #define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */ #endif diff --git a/lib/tracefs/tracefs-instance.c b/lib/tracefs/tracefs-instance.c index e9e24ef8..bf3de7cc 100644 --- a/lib/tracefs/tracefs-instance.c +++ b/lib/tracefs/tracefs-instance.c @@ -210,7 +210,7 @@ char *tracefs_instance_get_dir(struct tracefs_instance *instance) path = tracefs_get_tracing_file(buf); free(buf); } else - path = tracefs_find_tracing_dir(); + path = trace_find_tracing_dir(); return path; } diff --git a/lib/tracefs/tracefs-utils.c b/lib/tracefs/tracefs-utils.c index 8483cb61..acfcacf7 100644 --- a/lib/tracefs/tracefs-utils.c +++ b/lib/tracefs/tracefs-utils.c @@ -60,12 +60,12 @@ static int mount_debugfs(void) } /** - * tracefs_find_tracing_dir - Find tracing directory + * trace_find_tracing_dir - Find tracing directory * * Returns string containing the full path to the system's tracing directory. * The string must be freed by free() */ -char *tracefs_find_tracing_dir(void) +char *trace_find_tracing_dir(void) { char *debug_str = NULL; char fspath[PATH_MAX+1]; @@ -143,7 +143,7 @@ const char *tracefs_tracing_dir(void) if (tracing_dir) return tracing_dir; - tracing_dir = tracefs_find_tracing_dir(); + tracing_dir = trace_find_tracing_dir(); return tracing_dir; } @@ -166,7 +166,7 @@ char *tracefs_get_tracing_file(const char *name) return NULL; if (!tracing) { - tracing = tracefs_find_tracing_dir(); + tracing = trace_find_tracing_dir(); if (!tracing) return NULL; } diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c index e2d1cedf..ade52421 100644 --- a/tracecmd/trace-record.c +++ b/tracecmd/trace-record.c @@ -450,13 +450,11 @@ static int __add_all_instances(const char *tracing_dir) */ void add_all_instances(void) { - char *tracing_dir = tracefs_find_tracing_dir(); + const char *tracing_dir = tracefs_tracing_dir(); if (!tracing_dir) - die("malloc"); + die("can't get the tracing directory"); __add_all_instances(tracing_dir); - - tracefs_put_tracing_file(tracing_dir); } /** @@ -3539,10 +3537,17 @@ static int create_recorder(struct buffer_instance *instance, int cpu, } if (fd < 0) die("Failed connecting to client"); - if (tracefs_instance_get_name(instance->tracefs) && !is_agent(instance)) + if (tracefs_instance_get_name(instance->tracefs) && !is_agent(instance)) { path = tracefs_instance_get_dir(instance->tracefs); - else - path = tracefs_find_tracing_dir(); + } else { + const char *dir = tracefs_tracing_dir(); + + if (dir) + path = strdup(path); + } + if (!path) + die("can't get the tracing directory"); + recorder = tracecmd_create_buffer_recorder_fd(fd, cpu, flags, path); tracefs_put_tracing_file(path); } else { diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c index 4a622d59..9c9eee06 100644 --- a/utest/tracefs-utest.c +++ b/utest/tracefs-utest.c @@ -162,21 +162,12 @@ static void test_trace_file(void) const char *tdir; struct stat st; char *file; - char *dir; - - dir = tracefs_find_tracing_dir(); - CU_TEST(dir != NULL); - CU_TEST(stat(dir, &st) == 0); - CU_TEST(S_ISDIR(st.st_mode)); tdir = tracefs_tracing_dir(); CU_TEST(tdir != NULL); CU_TEST(stat(tdir, &st) == 0); CU_TEST(S_ISDIR(st.st_mode)); - CU_TEST(strcmp(dir, tdir) == 0); - free(dir); - file = tracefs_get_tracing_file(NULL); CU_TEST(file == NULL); file = tracefs_get_tracing_file(tmp); -- 2.28.0