perf tools: Rename struct perf_data_file to perf_data
Rename struct perf_data_file to perf_data, because we will add the possibility to have multiple files under perf.data, so the 'perf_data' name fits better. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Andi Kleen <andi@firstfloor.org> Cc: Changbin Du <changbin.du@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jin Yao <yao.jin@linux.intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-39wn4d77phel3dgkzo3lyan0@git.kernel.org [ Fixup recent changes in 'perf script --per-event-dump' ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
642ee1c6df
commit
8ceb41d7e3
@@ -208,7 +208,7 @@ static int auxtrace_queues__grow(struct auxtrace_queues *queues,
|
||||
|
||||
static void *auxtrace_copy_data(u64 size, struct perf_session *session)
|
||||
{
|
||||
int fd = perf_data_file__fd(session->file);
|
||||
int fd = perf_data__fd(session->data);
|
||||
void *p;
|
||||
ssize_t ret;
|
||||
|
||||
@@ -305,7 +305,7 @@ static int auxtrace_queues__add_event_buffer(struct auxtrace_queues *queues,
|
||||
if (session->one_mmap) {
|
||||
buffer->data = buffer->data_offset - session->one_mmap_offset +
|
||||
session->one_mmap_addr;
|
||||
} else if (perf_data_file__is_pipe(session->file)) {
|
||||
} else if (perf_data__is_pipe(session->data)) {
|
||||
buffer->data = auxtrace_copy_data(buffer->size, session);
|
||||
if (!buffer->data)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1577,7 +1577,7 @@ int bt_convert__perf2ctf(const char *input, const char *path,
|
||||
struct perf_data_convert_opts *opts)
|
||||
{
|
||||
struct perf_session *session;
|
||||
struct perf_data_file file = {
|
||||
struct perf_data data = {
|
||||
.path = input,
|
||||
.mode = PERF_DATA_MODE_READ,
|
||||
.force = opts->force,
|
||||
@@ -1619,7 +1619,7 @@ int bt_convert__perf2ctf(const char *input, const char *path,
|
||||
|
||||
err = -1;
|
||||
/* perf.data session */
|
||||
session = perf_session__new(&file, 0, &c.tool);
|
||||
session = perf_session__new(&data, 0, &c.tool);
|
||||
if (!session)
|
||||
goto free_writer;
|
||||
|
||||
@@ -1650,7 +1650,7 @@ int bt_convert__perf2ctf(const char *input, const char *path,
|
||||
|
||||
fprintf(stderr,
|
||||
"[ perf data convert: Converted '%s' into CTF data '%s' ]\n",
|
||||
file.path, path);
|
||||
data.path, path);
|
||||
|
||||
fprintf(stderr,
|
||||
"[ perf data convert: Converted and wrote %.3f MB (%" PRIu64 " samples",
|
||||
|
||||
@@ -21,56 +21,56 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static bool check_pipe(struct perf_data_file *file)
|
||||
static bool check_pipe(struct perf_data *data)
|
||||
{
|
||||
struct stat st;
|
||||
bool is_pipe = false;
|
||||
int fd = perf_data_file__is_read(file) ?
|
||||
int fd = perf_data__is_read(data) ?
|
||||
STDIN_FILENO : STDOUT_FILENO;
|
||||
|
||||
if (!file->path) {
|
||||
if (!data->path) {
|
||||
if (!fstat(fd, &st) && S_ISFIFO(st.st_mode))
|
||||
is_pipe = true;
|
||||
} else {
|
||||
if (!strcmp(file->path, "-"))
|
||||
if (!strcmp(data->path, "-"))
|
||||
is_pipe = true;
|
||||
}
|
||||
|
||||
if (is_pipe)
|
||||
file->fd = fd;
|
||||
data->fd = fd;
|
||||
|
||||
return file->is_pipe = is_pipe;
|
||||
return data->is_pipe = is_pipe;
|
||||
}
|
||||
|
||||
static int check_backup(struct perf_data_file *file)
|
||||
static int check_backup(struct perf_data *data)
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
if (!stat(file->path, &st) && st.st_size) {
|
||||
if (!stat(data->path, &st) && st.st_size) {
|
||||
/* TODO check errors properly */
|
||||
char oldname[PATH_MAX];
|
||||
snprintf(oldname, sizeof(oldname), "%s.old",
|
||||
file->path);
|
||||
data->path);
|
||||
unlink(oldname);
|
||||
rename(file->path, oldname);
|
||||
rename(data->path, oldname);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int open_file_read(struct perf_data_file *file)
|
||||
static int open_file_read(struct perf_data *data)
|
||||
{
|
||||
struct stat st;
|
||||
int fd;
|
||||
char sbuf[STRERR_BUFSIZE];
|
||||
|
||||
fd = open(file->path, O_RDONLY);
|
||||
fd = open(data->path, O_RDONLY);
|
||||
if (fd < 0) {
|
||||
int err = errno;
|
||||
|
||||
pr_err("failed to open %s: %s", file->path,
|
||||
pr_err("failed to open %s: %s", data->path,
|
||||
str_error_r(err, sbuf, sizeof(sbuf)));
|
||||
if (err == ENOENT && !strcmp(file->path, "perf.data"))
|
||||
if (err == ENOENT && !strcmp(data->path, "perf.data"))
|
||||
pr_err(" (try 'perf record' first)");
|
||||
pr_err("\n");
|
||||
return -err;
|
||||
@@ -79,19 +79,19 @@ static int open_file_read(struct perf_data_file *file)
|
||||
if (fstat(fd, &st) < 0)
|
||||
goto out_close;
|
||||
|
||||
if (!file->force && st.st_uid && (st.st_uid != geteuid())) {
|
||||
if (!data->force && st.st_uid && (st.st_uid != geteuid())) {
|
||||
pr_err("File %s not owned by current user or root (use -f to override)\n",
|
||||
file->path);
|
||||
data->path);
|
||||
goto out_close;
|
||||
}
|
||||
|
||||
if (!st.st_size) {
|
||||
pr_info("zero-sized file (%s), nothing to do!\n",
|
||||
file->path);
|
||||
pr_info("zero-sized data (%s), nothing to do!\n",
|
||||
data->path);
|
||||
goto out_close;
|
||||
}
|
||||
|
||||
file->size = st.st_size;
|
||||
data->size = st.st_size;
|
||||
return fd;
|
||||
|
||||
out_close:
|
||||
@@ -99,93 +99,93 @@ static int open_file_read(struct perf_data_file *file)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int open_file_write(struct perf_data_file *file)
|
||||
static int open_file_write(struct perf_data *data)
|
||||
{
|
||||
int fd;
|
||||
char sbuf[STRERR_BUFSIZE];
|
||||
|
||||
if (check_backup(file))
|
||||
if (check_backup(data))
|
||||
return -1;
|
||||
|
||||
fd = open(file->path, O_CREAT|O_RDWR|O_TRUNC|O_CLOEXEC,
|
||||
fd = open(data->path, O_CREAT|O_RDWR|O_TRUNC|O_CLOEXEC,
|
||||
S_IRUSR|S_IWUSR);
|
||||
|
||||
if (fd < 0)
|
||||
pr_err("failed to open %s : %s\n", file->path,
|
||||
pr_err("failed to open %s : %s\n", data->path,
|
||||
str_error_r(errno, sbuf, sizeof(sbuf)));
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
static int open_file(struct perf_data_file *file)
|
||||
static int open_file(struct perf_data *data)
|
||||
{
|
||||
int fd;
|
||||
|
||||
fd = perf_data_file__is_read(file) ?
|
||||
open_file_read(file) : open_file_write(file);
|
||||
fd = perf_data__is_read(data) ?
|
||||
open_file_read(data) : open_file_write(data);
|
||||
|
||||
file->fd = fd;
|
||||
data->fd = fd;
|
||||
return fd < 0 ? -1 : 0;
|
||||
}
|
||||
|
||||
int perf_data_file__open(struct perf_data_file *file)
|
||||
int perf_data__open(struct perf_data *data)
|
||||
{
|
||||
if (check_pipe(file))
|
||||
if (check_pipe(data))
|
||||
return 0;
|
||||
|
||||
if (!file->path)
|
||||
file->path = "perf.data";
|
||||
if (!data->path)
|
||||
data->path = "perf.data";
|
||||
|
||||
return open_file(file);
|
||||
return open_file(data);
|
||||
}
|
||||
|
||||
void perf_data_file__close(struct perf_data_file *file)
|
||||
void perf_data__close(struct perf_data *data)
|
||||
{
|
||||
close(file->fd);
|
||||
close(data->fd);
|
||||
}
|
||||
|
||||
ssize_t perf_data_file__write(struct perf_data_file *file,
|
||||
ssize_t perf_data__write(struct perf_data *data,
|
||||
void *buf, size_t size)
|
||||
{
|
||||
return writen(file->fd, buf, size);
|
||||
return writen(data->fd, buf, size);
|
||||
}
|
||||
|
||||
int perf_data_file__switch(struct perf_data_file *file,
|
||||
int perf_data__switch(struct perf_data *data,
|
||||
const char *postfix,
|
||||
size_t pos, bool at_exit)
|
||||
{
|
||||
char *new_filepath;
|
||||
int ret;
|
||||
|
||||
if (check_pipe(file))
|
||||
if (check_pipe(data))
|
||||
return -EINVAL;
|
||||
if (perf_data_file__is_read(file))
|
||||
if (perf_data__is_read(data))
|
||||
return -EINVAL;
|
||||
|
||||
if (asprintf(&new_filepath, "%s.%s", file->path, postfix) < 0)
|
||||
if (asprintf(&new_filepath, "%s.%s", data->path, postfix) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
/*
|
||||
* Only fire a warning, don't return error, continue fill
|
||||
* original file.
|
||||
*/
|
||||
if (rename(file->path, new_filepath))
|
||||
pr_warning("Failed to rename %s to %s\n", file->path, new_filepath);
|
||||
if (rename(data->path, new_filepath))
|
||||
pr_warning("Failed to rename %s to %s\n", data->path, new_filepath);
|
||||
|
||||
if (!at_exit) {
|
||||
close(file->fd);
|
||||
ret = perf_data_file__open(file);
|
||||
close(data->fd);
|
||||
ret = perf_data__open(data);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
if (lseek(file->fd, pos, SEEK_SET) == (off_t)-1) {
|
||||
if (lseek(data->fd, pos, SEEK_SET) == (off_t)-1) {
|
||||
ret = -errno;
|
||||
pr_debug("Failed to lseek to %zu: %s",
|
||||
pos, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
ret = file->fd;
|
||||
ret = data->fd;
|
||||
out:
|
||||
free(new_filepath);
|
||||
return ret;
|
||||
|
||||
@@ -8,7 +8,7 @@ enum perf_data_mode {
|
||||
PERF_DATA_MODE_READ,
|
||||
};
|
||||
|
||||
struct perf_data_file {
|
||||
struct perf_data {
|
||||
const char *path;
|
||||
int fd;
|
||||
bool is_pipe;
|
||||
@@ -17,43 +17,43 @@ struct perf_data_file {
|
||||
enum perf_data_mode mode;
|
||||
};
|
||||
|
||||
static inline bool perf_data_file__is_read(struct perf_data_file *file)
|
||||
static inline bool perf_data__is_read(struct perf_data *data)
|
||||
{
|
||||
return file->mode == PERF_DATA_MODE_READ;
|
||||
return data->mode == PERF_DATA_MODE_READ;
|
||||
}
|
||||
|
||||
static inline bool perf_data_file__is_write(struct perf_data_file *file)
|
||||
static inline bool perf_data__is_write(struct perf_data *data)
|
||||
{
|
||||
return file->mode == PERF_DATA_MODE_WRITE;
|
||||
return data->mode == PERF_DATA_MODE_WRITE;
|
||||
}
|
||||
|
||||
static inline int perf_data_file__is_pipe(struct perf_data_file *file)
|
||||
static inline int perf_data__is_pipe(struct perf_data *data)
|
||||
{
|
||||
return file->is_pipe;
|
||||
return data->is_pipe;
|
||||
}
|
||||
|
||||
static inline int perf_data_file__fd(struct perf_data_file *file)
|
||||
static inline int perf_data__fd(struct perf_data *data)
|
||||
{
|
||||
return file->fd;
|
||||
return data->fd;
|
||||
}
|
||||
|
||||
static inline unsigned long perf_data_file__size(struct perf_data_file *file)
|
||||
static inline unsigned long perf_data__size(struct perf_data *data)
|
||||
{
|
||||
return file->size;
|
||||
return data->size;
|
||||
}
|
||||
|
||||
int perf_data_file__open(struct perf_data_file *file);
|
||||
void perf_data_file__close(struct perf_data_file *file);
|
||||
ssize_t perf_data_file__write(struct perf_data_file *file,
|
||||
int perf_data__open(struct perf_data *data);
|
||||
void perf_data__close(struct perf_data *data);
|
||||
ssize_t perf_data__write(struct perf_data *data,
|
||||
void *buf, size_t size);
|
||||
/*
|
||||
* If at_exit is set, only rename current perf.data to
|
||||
* perf.data.<postfix>, continue write on original file.
|
||||
* perf.data.<postfix>, continue write on original data.
|
||||
* Set at_exit when flushing the last output.
|
||||
*
|
||||
* Return value is fd of new output.
|
||||
*/
|
||||
int perf_data_file__switch(struct perf_data_file *file,
|
||||
int perf_data__switch(struct perf_data *data,
|
||||
const char *postfix,
|
||||
size_t pos, bool at_exit);
|
||||
#endif /* __PERF_DATA_H */
|
||||
|
||||
@@ -1762,7 +1762,7 @@ process_event_desc(struct feat_fd *ff, void *data __maybe_unused)
|
||||
|
||||
session = container_of(ff->ph, struct perf_session, header);
|
||||
|
||||
if (session->file->is_pipe) {
|
||||
if (session->data->is_pipe) {
|
||||
/* Save events for reading later by print_event_desc,
|
||||
* since they can't be read again in pipe mode. */
|
||||
ff->events = events;
|
||||
@@ -1771,7 +1771,7 @@ process_event_desc(struct feat_fd *ff, void *data __maybe_unused)
|
||||
for (evsel = events; evsel->attr.size; evsel++)
|
||||
perf_evlist__set_event_name(session->evlist, evsel);
|
||||
|
||||
if (!session->file->is_pipe)
|
||||
if (!session->data->is_pipe)
|
||||
free_event_desc(events);
|
||||
|
||||
return 0;
|
||||
@@ -2248,7 +2248,7 @@ int perf_header__fprintf_info(struct perf_session *session, FILE *fp, bool full)
|
||||
{
|
||||
struct header_print_data hd;
|
||||
struct perf_header *header = &session->header;
|
||||
int fd = perf_data_file__fd(session->file);
|
||||
int fd = perf_data__fd(session->data);
|
||||
struct stat st;
|
||||
int ret, bit;
|
||||
|
||||
@@ -2264,7 +2264,7 @@ int perf_header__fprintf_info(struct perf_session *session, FILE *fp, bool full)
|
||||
perf_header__process_sections(header, fd, &hd,
|
||||
perf_file_section__fprintf_info);
|
||||
|
||||
if (session->file->is_pipe)
|
||||
if (session->data->is_pipe)
|
||||
return 0;
|
||||
|
||||
fprintf(fp, "# missing features: ");
|
||||
@@ -2757,7 +2757,7 @@ static int perf_header__read_pipe(struct perf_session *session)
|
||||
struct perf_pipe_file_header f_header;
|
||||
|
||||
if (perf_file_header__read_pipe(&f_header, header,
|
||||
perf_data_file__fd(session->file),
|
||||
perf_data__fd(session->data),
|
||||
session->repipe) < 0) {
|
||||
pr_debug("incompatible file format\n");
|
||||
return -EINVAL;
|
||||
@@ -2860,13 +2860,13 @@ static int perf_evlist__prepare_tracepoint_events(struct perf_evlist *evlist,
|
||||
|
||||
int perf_session__read_header(struct perf_session *session)
|
||||
{
|
||||
struct perf_data_file *file = session->file;
|
||||
struct perf_data *data = session->data;
|
||||
struct perf_header *header = &session->header;
|
||||
struct perf_file_header f_header;
|
||||
struct perf_file_attr f_attr;
|
||||
u64 f_id;
|
||||
int nr_attrs, nr_ids, i, j;
|
||||
int fd = perf_data_file__fd(file);
|
||||
int fd = perf_data__fd(data);
|
||||
|
||||
session->evlist = perf_evlist__new();
|
||||
if (session->evlist == NULL)
|
||||
@@ -2874,7 +2874,7 @@ int perf_session__read_header(struct perf_session *session)
|
||||
|
||||
session->evlist->env = &header->env;
|
||||
session->machines.host.env = &header->env;
|
||||
if (perf_data_file__is_pipe(file))
|
||||
if (perf_data__is_pipe(data))
|
||||
return perf_header__read_pipe(session);
|
||||
|
||||
if (perf_file_header__read(&f_header, header, fd) < 0)
|
||||
@@ -2889,7 +2889,7 @@ int perf_session__read_header(struct perf_session *session)
|
||||
if (f_header.data.size == 0) {
|
||||
pr_warning("WARNING: The %s file's data size field is 0 which is unexpected.\n"
|
||||
"Was the 'perf record' command properly terminated?\n",
|
||||
file->path);
|
||||
data->path);
|
||||
}
|
||||
|
||||
nr_attrs = f_header.attrs.size / f_header.attr_size;
|
||||
@@ -3397,7 +3397,7 @@ int perf_event__process_tracing_data(struct perf_tool *tool __maybe_unused,
|
||||
struct perf_session *session)
|
||||
{
|
||||
ssize_t size_read, padding, size = event->tracing_data.size;
|
||||
int fd = perf_data_file__fd(session->file);
|
||||
int fd = perf_data__fd(session->data);
|
||||
off_t offset = lseek(fd, 0, SEEK_CUR);
|
||||
char buf[BUFSIZ];
|
||||
|
||||
|
||||
@@ -500,7 +500,7 @@ static int intel_bts_process_queue(struct intel_bts_queue *btsq, u64 *timestamp)
|
||||
}
|
||||
|
||||
if (!buffer->data) {
|
||||
int fd = perf_data_file__fd(btsq->bts->session->file);
|
||||
int fd = perf_data__fd(btsq->bts->session->data);
|
||||
|
||||
buffer->data = auxtrace_buffer__get_data(buffer, fd);
|
||||
if (!buffer->data) {
|
||||
@@ -664,10 +664,10 @@ static int intel_bts_process_auxtrace_event(struct perf_session *session,
|
||||
if (!bts->data_queued) {
|
||||
struct auxtrace_buffer *buffer;
|
||||
off_t data_offset;
|
||||
int fd = perf_data_file__fd(session->file);
|
||||
int fd = perf_data__fd(session->data);
|
||||
int err;
|
||||
|
||||
if (perf_data_file__is_pipe(session->file)) {
|
||||
if (perf_data__is_pipe(session->data)) {
|
||||
data_offset = 0;
|
||||
} else {
|
||||
data_offset = lseek(fd, 0, SEEK_CUR);
|
||||
|
||||
@@ -271,7 +271,7 @@ next:
|
||||
ptq->buffer = buffer;
|
||||
|
||||
if (!buffer->data) {
|
||||
int fd = perf_data_file__fd(ptq->pt->session->file);
|
||||
int fd = perf_data__fd(ptq->pt->session->data);
|
||||
|
||||
buffer->data = auxtrace_buffer__get_data(buffer, fd);
|
||||
if (!buffer->data)
|
||||
@@ -2084,10 +2084,10 @@ static int intel_pt_process_auxtrace_event(struct perf_session *session,
|
||||
if (!pt->data_queued) {
|
||||
struct auxtrace_buffer *buffer;
|
||||
off_t data_offset;
|
||||
int fd = perf_data_file__fd(session->file);
|
||||
int fd = perf_data__fd(session->data);
|
||||
int err;
|
||||
|
||||
if (perf_data_file__is_pipe(session->file)) {
|
||||
if (perf_data__is_pipe(session->data)) {
|
||||
data_offset = 0;
|
||||
} else {
|
||||
data_offset = lseek(fd, 0, SEEK_CUR);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include <data.h>
|
||||
|
||||
int jit_process(struct perf_session *session, struct perf_data_file *output,
|
||||
int jit_process(struct perf_session *session, struct perf_data *output,
|
||||
struct machine *machine, char *filename, pid_t pid, u64 *nbytes);
|
||||
|
||||
int jit_inject_record(const char *filename);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "sane_ctype.h"
|
||||
|
||||
struct jit_buf_desc {
|
||||
struct perf_data_file *output;
|
||||
struct perf_data *output;
|
||||
struct perf_session *session;
|
||||
struct machine *machine;
|
||||
union jr_entry *entry;
|
||||
@@ -60,8 +60,8 @@ struct debug_line_info {
|
||||
|
||||
struct jit_tool {
|
||||
struct perf_tool tool;
|
||||
struct perf_data_file output;
|
||||
struct perf_data_file input;
|
||||
struct perf_data output;
|
||||
struct perf_data input;
|
||||
u64 bytes_written;
|
||||
};
|
||||
|
||||
@@ -356,7 +356,7 @@ jit_inject_event(struct jit_buf_desc *jd, union perf_event *event)
|
||||
{
|
||||
ssize_t size;
|
||||
|
||||
size = perf_data_file__write(jd->output, event, event->header.size);
|
||||
size = perf_data__write(jd->output, event, event->header.size);
|
||||
if (size < 0)
|
||||
return -1;
|
||||
|
||||
@@ -751,7 +751,7 @@ jit_detect(char *mmap_name, pid_t pid)
|
||||
|
||||
int
|
||||
jit_process(struct perf_session *session,
|
||||
struct perf_data_file *output,
|
||||
struct perf_data *output,
|
||||
struct machine *machine,
|
||||
char *filename,
|
||||
pid_t pid,
|
||||
|
||||
@@ -32,14 +32,14 @@ static int perf_session__deliver_event(struct perf_session *session,
|
||||
|
||||
static int perf_session__open(struct perf_session *session)
|
||||
{
|
||||
struct perf_data_file *file = session->file;
|
||||
struct perf_data *data = session->data;
|
||||
|
||||
if (perf_session__read_header(session) < 0) {
|
||||
pr_err("incompatible file format (rerun with -v to learn more)\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (perf_data_file__is_pipe(file))
|
||||
if (perf_data__is_pipe(data))
|
||||
return 0;
|
||||
|
||||
if (perf_header__has_feat(&session->header, HEADER_STAT))
|
||||
@@ -120,7 +120,7 @@ static int ordered_events__deliver_event(struct ordered_events *oe,
|
||||
session->tool, event->file_offset);
|
||||
}
|
||||
|
||||
struct perf_session *perf_session__new(struct perf_data_file *file,
|
||||
struct perf_session *perf_session__new(struct perf_data *data,
|
||||
bool repipe, struct perf_tool *tool)
|
||||
{
|
||||
struct perf_session *session = zalloc(sizeof(*session));
|
||||
@@ -134,13 +134,13 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
|
||||
machines__init(&session->machines);
|
||||
ordered_events__init(&session->ordered_events, ordered_events__deliver_event);
|
||||
|
||||
if (file) {
|
||||
if (perf_data_file__open(file))
|
||||
if (data) {
|
||||
if (perf_data__open(data))
|
||||
goto out_delete;
|
||||
|
||||
session->file = file;
|
||||
session->data = data;
|
||||
|
||||
if (perf_data_file__is_read(file)) {
|
||||
if (perf_data__is_read(data)) {
|
||||
if (perf_session__open(session) < 0)
|
||||
goto out_close;
|
||||
|
||||
@@ -148,7 +148,7 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
|
||||
* set session attributes that are present in perf.data
|
||||
* but not in pipe-mode.
|
||||
*/
|
||||
if (!file->is_pipe) {
|
||||
if (!data->is_pipe) {
|
||||
perf_session__set_id_hdr_size(session);
|
||||
perf_session__set_comm_exec(session);
|
||||
}
|
||||
@@ -157,7 +157,7 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
|
||||
session->machines.host.env = &perf_env;
|
||||
}
|
||||
|
||||
if (!file || perf_data_file__is_write(file)) {
|
||||
if (!data || perf_data__is_write(data)) {
|
||||
/*
|
||||
* In O_RDONLY mode this will be performed when reading the
|
||||
* kernel MMAP event, in perf_event__process_mmap().
|
||||
@@ -170,7 +170,7 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
|
||||
* In pipe-mode, evlist is empty until PERF_RECORD_HEADER_ATTR is
|
||||
* processed, so perf_evlist__sample_id_all is not meaningful here.
|
||||
*/
|
||||
if ((!file || !file->is_pipe) && tool && tool->ordering_requires_timestamps &&
|
||||
if ((!data || !data->is_pipe) && tool && tool->ordering_requires_timestamps &&
|
||||
tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) {
|
||||
dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n");
|
||||
tool->ordered_events = false;
|
||||
@@ -179,7 +179,7 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
|
||||
return session;
|
||||
|
||||
out_close:
|
||||
perf_data_file__close(file);
|
||||
perf_data__close(data);
|
||||
out_delete:
|
||||
perf_session__delete(session);
|
||||
out:
|
||||
@@ -201,8 +201,8 @@ void perf_session__delete(struct perf_session *session)
|
||||
perf_session__delete_threads(session);
|
||||
perf_env__exit(&session->header.env);
|
||||
machines__exit(&session->machines);
|
||||
if (session->file)
|
||||
perf_data_file__close(session->file);
|
||||
if (session->data)
|
||||
perf_data__close(session->data);
|
||||
free(session);
|
||||
}
|
||||
|
||||
@@ -290,8 +290,8 @@ static s64 process_event_auxtrace_stub(struct perf_tool *tool __maybe_unused,
|
||||
__maybe_unused)
|
||||
{
|
||||
dump_printf(": unhandled!\n");
|
||||
if (perf_data_file__is_pipe(session->file))
|
||||
skipn(perf_data_file__fd(session->file), event->auxtrace.size);
|
||||
if (perf_data__is_pipe(session->data))
|
||||
skipn(perf_data__fd(session->data), event->auxtrace.size);
|
||||
return event->auxtrace.size;
|
||||
}
|
||||
|
||||
@@ -1349,7 +1349,7 @@ static s64 perf_session__process_user_event(struct perf_session *session,
|
||||
{
|
||||
struct ordered_events *oe = &session->ordered_events;
|
||||
struct perf_tool *tool = session->tool;
|
||||
int fd = perf_data_file__fd(session->file);
|
||||
int fd = perf_data__fd(session->data);
|
||||
int err;
|
||||
|
||||
dump_event(session->evlist, event, file_offset, NULL);
|
||||
@@ -1449,10 +1449,10 @@ int perf_session__peek_event(struct perf_session *session, off_t file_offset,
|
||||
goto out_parse_sample;
|
||||
}
|
||||
|
||||
if (perf_data_file__is_pipe(session->file))
|
||||
if (perf_data__is_pipe(session->data))
|
||||
return -1;
|
||||
|
||||
fd = perf_data_file__fd(session->file);
|
||||
fd = perf_data__fd(session->data);
|
||||
hdr_sz = sizeof(struct perf_event_header);
|
||||
|
||||
if (buf_sz < hdr_sz)
|
||||
@@ -1687,7 +1687,7 @@ static int __perf_session__process_pipe_events(struct perf_session *session)
|
||||
{
|
||||
struct ordered_events *oe = &session->ordered_events;
|
||||
struct perf_tool *tool = session->tool;
|
||||
int fd = perf_data_file__fd(session->file);
|
||||
int fd = perf_data__fd(session->data);
|
||||
union perf_event *event;
|
||||
uint32_t size, cur_size = 0;
|
||||
void *buf = NULL;
|
||||
@@ -1828,7 +1828,7 @@ static int __perf_session__process_events(struct perf_session *session,
|
||||
{
|
||||
struct ordered_events *oe = &session->ordered_events;
|
||||
struct perf_tool *tool = session->tool;
|
||||
int fd = perf_data_file__fd(session->file);
|
||||
int fd = perf_data__fd(session->data);
|
||||
u64 head, page_offset, file_offset, file_pos, size;
|
||||
int err, mmap_prot, mmap_flags, map_idx = 0;
|
||||
size_t mmap_size;
|
||||
@@ -1945,13 +1945,13 @@ out_err:
|
||||
|
||||
int perf_session__process_events(struct perf_session *session)
|
||||
{
|
||||
u64 size = perf_data_file__size(session->file);
|
||||
u64 size = perf_data__size(session->data);
|
||||
int err;
|
||||
|
||||
if (perf_session__register_idle_thread(session) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!perf_data_file__is_pipe(session->file))
|
||||
if (!perf_data__is_pipe(session->data))
|
||||
err = __perf_session__process_events(session,
|
||||
session->header.data_offset,
|
||||
session->header.data_size, size);
|
||||
|
||||
@@ -32,13 +32,13 @@ struct perf_session {
|
||||
void *one_mmap_addr;
|
||||
u64 one_mmap_offset;
|
||||
struct ordered_events ordered_events;
|
||||
struct perf_data_file *file;
|
||||
struct perf_data *data;
|
||||
struct perf_tool *tool;
|
||||
};
|
||||
|
||||
struct perf_tool;
|
||||
|
||||
struct perf_session *perf_session__new(struct perf_data_file *file,
|
||||
struct perf_session *perf_session__new(struct perf_data *data,
|
||||
bool repipe, struct perf_tool *tool);
|
||||
void perf_session__delete(struct perf_session *session);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user