From: David Carrillo-Cisneros <davidcc@google.com>
To: linux-kernel@vger.kernel.org
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Andi Kleen <ak@linux.intel.com>, Simon Que <sque@chromium.org>,
Wang Nan <wangnan0@huawei.com>, Jiri Olsa <jolsa@kernel.org>,
He Kuang <hekuang@huawei.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
David Ahern <dsa@cumulusnetworks.com>,
Namhyung Kim <namhyung@kernel.org>,
Stephane Eranian <eranian@google.com>,
Paul Turner <pjt@google.com>,
David Carrillo-Cisneros <davidcc@google.com>
Subject: [PATCH v5 02/16] perf header: add PROCESS_STR_FUN macro
Date: Tue, 11 Jul 2017 16:52:53 -0700 [thread overview]
Message-ID: <20170711235307.99626-3-davidcc@google.com> (raw)
In-Reply-To: <20170711235307.99626-1-davidcc@google.com>
Simplify code by adding a macro to handle the common case
of processing header features that are a simple string.
Signed-off-by: David Carrillo-Cisneros <davidcc@google.com>
---
| 65 +++++++++++++-----------------------------------
1 file changed, 17 insertions(+), 48 deletions(-)
--git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 5492cd8d51a8..a1b16da4b34d 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -1602,6 +1602,23 @@ static int perf_header__read_build_ids(struct perf_header *header,
return err;
}
+/* Macro for features that simply need to read and store a string. */
+#define FEAT_PROCESS_STR_FUN(__feat, __feat_env) \
+static int process_##__feat(struct perf_file_section *section __maybe_unused, \
+ struct perf_header *ph, int fd, \
+ void *data __maybe_unused) \
+{\
+ ph->env.__feat_env = do_read_string(fd, ph); \
+ return ph->env.__feat_env ? 0 : -ENOMEM; \
+}
+
+FEAT_PROCESS_STR_FUN(hostname, hostname);
+FEAT_PROCESS_STR_FUN(osrelease, os_release);
+FEAT_PROCESS_STR_FUN(version, version);
+FEAT_PROCESS_STR_FUN(arch, arch);
+FEAT_PROCESS_STR_FUN(cpudesc, cpu_desc);
+FEAT_PROCESS_STR_FUN(cpuid, cpuid);
+
static int process_tracing_data(struct perf_file_section *section __maybe_unused,
struct perf_header *ph __maybe_unused,
int fd, void *data)
@@ -1619,38 +1636,6 @@ static int process_build_id(struct perf_file_section *section,
return 0;
}
-static int process_hostname(struct perf_file_section *section __maybe_unused,
- struct perf_header *ph, int fd,
- void *data __maybe_unused)
-{
- ph->env.hostname = do_read_string(fd, ph);
- return ph->env.hostname ? 0 : -ENOMEM;
-}
-
-static int process_osrelease(struct perf_file_section *section __maybe_unused,
- struct perf_header *ph, int fd,
- void *data __maybe_unused)
-{
- ph->env.os_release = do_read_string(fd, ph);
- return ph->env.os_release ? 0 : -ENOMEM;
-}
-
-static int process_version(struct perf_file_section *section __maybe_unused,
- struct perf_header *ph, int fd,
- void *data __maybe_unused)
-{
- ph->env.version = do_read_string(fd, ph);
- return ph->env.version ? 0 : -ENOMEM;
-}
-
-static int process_arch(struct perf_file_section *section __maybe_unused,
- struct perf_header *ph, int fd,
- void *data __maybe_unused)
-{
- ph->env.arch = do_read_string(fd, ph);
- return ph->env.arch ? 0 : -ENOMEM;
-}
-
static int process_nrcpus(struct perf_file_section *section __maybe_unused,
struct perf_header *ph, int fd,
void *data __maybe_unused)
@@ -1670,22 +1655,6 @@ static int process_nrcpus(struct perf_file_section *section __maybe_unused,
return 0;
}
-static int process_cpudesc(struct perf_file_section *section __maybe_unused,
- struct perf_header *ph, int fd,
- void *data __maybe_unused)
-{
- ph->env.cpu_desc = do_read_string(fd, ph);
- return ph->env.cpu_desc ? 0 : -ENOMEM;
-}
-
-static int process_cpuid(struct perf_file_section *section __maybe_unused,
- struct perf_header *ph, int fd,
- void *data __maybe_unused)
-{
- ph->env.cpuid = do_read_string(fd, ph);
- return ph->env.cpuid ? 0 : -ENOMEM;
-}
-
static int process_total_mem(struct perf_file_section *section __maybe_unused,
struct perf_header *ph, int fd,
void *data __maybe_unused)
--
2.13.2.725.g09c95d1e9-goog
next prev parent reply other threads:[~2017-07-11 23:54 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-11 23:52 [PATCH v5 00/16] perf tool: add meta-data header support for pipe-mode David Carrillo-Cisneros
2017-07-11 23:52 ` [PATCH v5 01/16] perf header: encapsulate read and swap David Carrillo-Cisneros
2017-07-11 23:52 ` David Carrillo-Cisneros [this message]
2017-07-11 23:52 ` [PATCH v5 03/16] perf header: fail on write_padded error David Carrillo-Cisneros
2017-07-11 23:52 ` [PATCH v5 04/16] perf util: add const modifier to buf in "writen" function David Carrillo-Cisneros
2017-07-11 23:52 ` [PATCH v5 05/16] perf header: revamp do_write David Carrillo-Cisneros
2017-07-11 23:52 ` [PATCH v5 06/16] perf header: add struct feat_fd for write David Carrillo-Cisneros
2017-07-11 23:52 ` [PATCH v5 07/16] perf header: use struct feat_fd for print David Carrillo-Cisneros
2017-07-11 23:52 ` [PATCH v5 08/16] perf header: use struct feat_fd to process header records David Carrillo-Cisneros
2017-07-11 23:53 ` [PATCH v5 09/16] perf header: don't pass struct perf_file_section to process_##_feat David Carrillo-Cisneros
2017-07-11 23:53 ` [PATCH v5 10/16] perf header: use struct feat_fd in read header records David Carrillo-Cisneros
2017-07-11 23:53 ` [PATCH v5 11/16] perf header: make write_pmu_mappings pipe-mode friendly David Carrillo-Cisneros
2017-07-12 1:39 ` [PATCH v5 00/16] perf tool: add meta-data header support for pipe-mode David Ahern
2017-07-18 4:37 ` David Carrillo-Cisneros
2017-07-12 14:31 ` Jiri Olsa
2017-07-18 4:39 ` David Carrillo-Cisneros
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170711235307.99626-3-davidcc@google.com \
--to=davidcc@google.com \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=dsa@cumulusnetworks.com \
--cc=eranian@google.com \
--cc=hekuang@huawei.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=sque@chromium.org \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.