Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1664406
| From | David Carrillo-Cisneros <davidcc@google.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH v4 11/16] perf header: make write_pmu_mappings pipe-mode friendly |
| Date | 2017-06-13 06:40 +0200 |
| Message-ID | <tRLMv-3kB-37@gated-at.bofh.it> (permalink) |
| References | <tRLMt-3kB-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
In pipe-mode, we will operate over a buffer instead of a file descriptor
but write_pmu_mappings uses lseek to move over the perf.data file.
Refactor write_pmu_mappings to avoid the usage of lseek and allow
reusing the same logic in pipe-mode (next patch).
Signed-off-by: David Carrillo-Cisneros <davidcc@google.com>
---
tools/perf/util/header.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index a02959c78067..deb02343fccf 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -796,11 +796,19 @@ static int write_pmu_mappings(struct feat_fd *ff,
struct perf_evlist *evlist __maybe_unused)
{
struct perf_pmu *pmu = NULL;
- off_t offset = lseek(ff->fd, 0, SEEK_CUR);
- __u32 pmu_num = 0;
+ u32 pmu_num = 0;
int ret;
- /* write real pmu_num later */
+ /*
+ * Do a first pass to count number of pmu to avoid lseek so this
+ * works in pipe mode as well.
+ */
+ while ((pmu = perf_pmu__scan(pmu))) {
+ if (!pmu->name)
+ continue;
+ pmu_num++;
+ }
+
ret = do_write(ff, &pmu_num, sizeof(pmu_num));
if (ret < 0)
return ret;
@@ -808,7 +816,6 @@ static int write_pmu_mappings(struct feat_fd *ff,
while ((pmu = perf_pmu__scan(pmu))) {
if (!pmu->name)
continue;
- pmu_num++;
ret = do_write(ff, &pmu->type, sizeof(pmu->type));
if (ret < 0)
@@ -819,12 +826,6 @@ static int write_pmu_mappings(struct feat_fd *ff,
return ret;
}
- if (pwrite(ff->fd, &pmu_num, sizeof(pmu_num), offset) != sizeof(pmu_num)) {
- /* discard all */
- lseek(ff->fd, offset, SEEK_SET);
- return -1;
- }
-
return 0;
}
--
2.13.1.508.gb3defc5cc-goog
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v4 00/16] perf tool: add meta-data header support for pipe-mode David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 16/16] perf header: add event desc to pipe-mode header David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 03/16] perf header: fail on write_padded error David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 13/16] perf header: change FEAT_OP* macros David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 02/16] perf header: add PROCESS_STR_FUN macro David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 10/16] perf header: use struct feat_fd in read header records David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 07/16] perf header: use struct feat_fd for print David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 01/16] perf header: encapsulate read and swap David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 04/16] perf util: add const modifier to buf in "writen" function David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 11/16] perf header: make write_pmu_mappings pipe-mode friendly David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 09/16] perf header: don't pass struct perf_file_section to process_##_feat David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
Re: [PATCH v4 09/16] perf header: don't pass struct perf_file_section to process_##_feat Jiri Olsa <jolsa@redhat.com> - 2017-06-13 21:00 +0200
Re: [PATCH v4 09/16] perf header: don't pass struct perf_file_section to process_##_feat David Carrillo-Cisneros <davidcc@google.com> - 2017-06-14 04:00 +0200
[PATCH v4 12/16] perf header: add a buffer to struct feat_fd David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
Re: [PATCH v4 12/16] perf header: add a buffer to struct feat_fd Jiri Olsa <jolsa@redhat.com> - 2017-06-13 21:00 +0200
Re: [PATCH v4 12/16] perf header: add a buffer to struct feat_fd David Carrillo-Cisneros <davidcc@google.com> - 2017-06-14 04:00 +0200
[PATCH v4 14/16] perf tool: add show_feature_header to perf_tool David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
Re: [PATCH v4 14/16] perf tool: add show_feature_header to perf_tool Jiri Olsa <jolsa@redhat.com> - 2017-06-13 21:00 +0200
[PATCH v4 06/16] perf header: add struct feat_fd for write David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
[PATCH v4 08/16] perf header: use struct feat_fd to process header records David Carrillo-Cisneros <davidcc@google.com> - 2017-06-13 06:40 +0200
Re: [PATCH v4 00/16] perf tool: add meta-data header support for pipe-mode Jiri Olsa <jolsa@redhat.com> - 2017-06-13 21:00 +0200
Re: [PATCH v4 00/16] perf tool: add meta-data header support for pipe-mode David Carrillo-Cisneros <davidcc@google.com> - 2017-06-14 08:50 +0200
Re: [PATCH v4 00/16] perf tool: add meta-data header support for pipe-mode Jiri Olsa <jolsa@redhat.com> - 2017-06-13 21:00 +0200
Re: [PATCH v4 00/16] perf tool: add meta-data header support for pipe-mode David Carrillo-Cisneros <davidcc@google.com> - 2017-06-14 09:00 +0200
Re: [PATCH v4 00/16] perf tool: add meta-data header support for pipe-mode Jiri Olsa <jolsa@redhat.com> - 2017-06-14 09:30 +0200
Re: [PATCH v4 00/16] perf tool: add meta-data header support for pipe-mode David Carrillo-Cisneros <davidcc@google.com> - 2017-06-14 20:40 +0200
csiph-web