Introducing perf data file version CHECK macro, so the check
is easily extensible for new versions.

Signed-off-by: Jiri Olsa <[email protected]>
Cc: Corey Ashford <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: David Ahern <[email protected]>
---
 tools/perf/util/header.c | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index f558f83..4ebe4a1 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2493,18 +2493,23 @@ static int check_magic_endian(u64 magic, uint64_t 
hdr_sz,
         * - encode endianness of file
         */
 
-       /* check magic number with one endianness */
-       if (magic == __perf_magic2)
-               return 0;
-
-       /* check magic number with opposite endianness */
-       if (magic != __perf_magic2_sw)
-               return -1;
+#define CHECK(__m, __v)                                                \
+do {                                                           \
+       /* check magic number with one endianness */            \
+       if (magic == __m)                                       \
+               goto v ## __v;                                  \
+       /* check magic number with opposite endianness */       \
+       if (magic != __m ## _sw)                                \
+               break;                                          \
+       ph->needs_swap = true;                                  \
+ v ## __v:                                                     \
+       ph->version = __v;                                      \
+       return 0;                                               \
+} while (0)
+
+       CHECK(__perf_magic2, PERF_HEADER_VERSION_2);
 
-       ph->needs_swap = true;
-       ph->version = PERF_HEADER_VERSION_2;
-
-       return 0;
+       return -1;
 }
 
 int perf_file_header__read(struct perf_file_header *header,
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to