> > From: Kan Liang <kan.li...@intel.com> > > > > And an interface for perf_data_file to open tmp file. > > Automatically generate the tmp file name if it's not assigned. The > > name cannot be const char. Introduce char *tmp_path for it. > > The tmp file will be deleted after close. > > > > It will be used as per-thread file to temporarily store event > > synthesizd result in the following patch. > > > > Signed-off-by: Kan Liang <kan.li...@intel.com> > > --- > > tools/perf/util/data.c | 26 ++++++++++++++++++++++++++ > > tools/perf/util/data.h | 2 ++ > > 2 files changed, 28 insertions(+) > > > > diff --git a/tools/perf/util/data.c b/tools/perf/util/data.c index > > 1123b30..cd6fdf9 100644 > > --- a/tools/perf/util/data.c > > +++ b/tools/perf/util/data.c > > @@ -139,9 +139,35 @@ int perf_data_file__open(struct perf_data_file > *file) > > return open_file(file); > > } > > > > +int perf_data_file__open_tmp(struct perf_data_file *file) { > > + int fd; > > + > > + if (!file->tmp_path && > > + (asprintf(&file->tmp_path, "perf.tmp.XXXXXX") < 0)) > > + goto err; > > + > > + fd = mkstemp(file->tmp_path); > > + if (fd < 0) { > > + free(file->tmp_path); > > + goto err; > > + } > > + > > + file->fd = fd; > > + return 0; > > +err: > > + file->tmp_path = NULL; > > + return -1; > > +} > > + > > void perf_data_file__close(struct perf_data_file *file) { > > close(file->fd); > > + if (file->tmp_path) { > > + unlink(file->tmp_path); > > + free(file->tmp_path); > > + file->tmp_path = NULL; > > + } > > } > > > > ssize_t perf_data_file__write(struct perf_data_file *file, diff --git > > a/tools/perf/util/data.h b/tools/perf/util/data.h index > > ae510ce..892b3d5 100644 > > --- a/tools/perf/util/data.h > > +++ b/tools/perf/util/data.h > > @@ -10,6 +10,7 @@ enum perf_data_mode { > > > > struct perf_data_file { > > const char *path; > > + char *tmp_path; > > could we add is_tmp instead of new path pointer and keep the path for the > name..?
The 'path' is const char. I think it's not good for tmp file which generate the file name in real time. Thanks, Kan