@@ -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;
@@ -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;
}
@@ -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
@@ -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;
}
@@ -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;
}
@@ -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 {
@@ -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);
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@gmail.com> --- 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(-)