On Wed, 17 Jul 2013 19:49:50 +0200, Jiri Olsa wrote: > Introducing swap_header function to make the swapping > code more clear and extensible.
[SNIP] > > +static int swap_header(struct perf_file_header *header) > +{ > + mem_bswap_64(header, offsetof(struct perf_file_header, adds_features)); > + > + if (header->size != sizeof(*header)) { > + /* Support the previous format */ > + if (header->size == offsetof(typeof(*header), adds_features)) > + bitmap_zero(header->adds_features, HEADER_FEAT_BITS); > + else > + return -1; > + } else > + swap_features(header->adds_features); > + > + return 0; > +} > + > int perf_file_header__read(struct perf_file_header *header, > struct perf_header *ph, int fd) > { > @@ -2562,19 +2578,8 @@ int perf_file_header__read(struct perf_file_header > *header, > return -1; > } > > - if (ph->needs_swap) { > - mem_bswap_64(header, offsetof(struct perf_file_header, > - adds_features)); > - } > - > - if (header->size != sizeof(*header)) { > - /* Support the previous format */ > - if (header->size == offsetof(typeof(*header), adds_features)) > - bitmap_zero(header->adds_features, HEADER_FEAT_BITS); > - else > - return -1; > - } else if (ph->needs_swap) > - swap_features(header->adds_features); > + if (ph->needs_swap && swap_header(header)) > + return -1; Doesn't it change existing behavior? It looks like supporting previous format on a same endian machines will be removed by this patch. Thanks, Namhyung -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/