From: Joe Perches <joe@perches.com> To: Cody P Schafer <dev@codyps.com> Cc: LKML <linux-kernel@vger.kernel.org>, Linux PPC <linuxppc-dev@lists.ozlabs.org>, Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Subject: Re: [PATCH 11/16] byteorder: provide a linux/byteorder.h with {be,le}_to_cpu() and cpu_to_{be,le}() macros Date: Tue, 27 May 2014 17:44:29 -0700 [thread overview] Message-ID: <1401237869.20587.12.camel@joe-AO725> (raw) In-Reply-To: <1401236684-10579-12-git-send-email-dev@codyps.com> On Tue, 2014-05-27 at 17:22 -0700, Cody P Schafer wrote: > Rather manually specifying the size of the integer to be converted, key > off of the type size. Reduces duplicate size info and the occurance of > certain types of bugs (using the wrong sized conversion). [] > diff --git a/include/linux/byteorder.h b/include/linux/byteorder.h [] > @@ -0,0 +1,34 @@ > +#ifndef LINUX_BYTEORDER_H_ > +#define LINUX_BYTEORDER_H_ > + > +#include <asm/byteorder.h> > + > +#define be_to_cpu(v) \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint8_t) , v, \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint16_t), be16_to_cpu(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint32_t), be32_to_cpu(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint64_t), be64_to_cpu(v), \ > + (void)0)))) probably better to use BUILD_BUG instead of these 0 returns > + > +#define le_to_cpu(v) \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint8_t) , v, \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint16_t), le16_to_cpu(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint32_t), le32_to_cpu(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint64_t), le64_to_cpu(v), \ > + (void)0)))) > + > +#define cpu_to_le(v) \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint8_t) , v, \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint16_t), cpu_to_le16(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint32_t), cpu_to_le32(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint64_t), cpu_to_le64(v), \ > + (void)0)))) > + > +#define cpu_to_be(v) \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint8_t) , v, \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint16_t), cpu_to_be16(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint32_t), cpu_to_be32(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint64_t), cpu_to_be64(v), \ > + (void)0)))) > + > +#endif
WARNING: multiple messages have this Message-ID (diff)
From: Joe Perches <joe@perches.com> To: Cody P Schafer <dev@codyps.com> Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>, Linux PPC <linuxppc-dev@lists.ozlabs.org>, LKML <linux-kernel@vger.kernel.org> Subject: Re: [PATCH 11/16] byteorder: provide a linux/byteorder.h with {be,le}_to_cpu() and cpu_to_{be,le}() macros Date: Tue, 27 May 2014 17:44:29 -0700 [thread overview] Message-ID: <1401237869.20587.12.camel@joe-AO725> (raw) In-Reply-To: <1401236684-10579-12-git-send-email-dev@codyps.com> On Tue, 2014-05-27 at 17:22 -0700, Cody P Schafer wrote: > Rather manually specifying the size of the integer to be converted, key > off of the type size. Reduces duplicate size info and the occurance of > certain types of bugs (using the wrong sized conversion). [] > diff --git a/include/linux/byteorder.h b/include/linux/byteorder.h [] > @@ -0,0 +1,34 @@ > +#ifndef LINUX_BYTEORDER_H_ > +#define LINUX_BYTEORDER_H_ > + > +#include <asm/byteorder.h> > + > +#define be_to_cpu(v) \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint8_t) , v, \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint16_t), be16_to_cpu(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint32_t), be32_to_cpu(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint64_t), be64_to_cpu(v), \ > + (void)0)))) probably better to use BUILD_BUG instead of these 0 returns > + > +#define le_to_cpu(v) \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint8_t) , v, \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint16_t), le16_to_cpu(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint32_t), le32_to_cpu(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint64_t), le64_to_cpu(v), \ > + (void)0)))) > + > +#define cpu_to_le(v) \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint8_t) , v, \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint16_t), cpu_to_le16(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint32_t), cpu_to_le32(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint64_t), cpu_to_le64(v), \ > + (void)0)))) > + > +#define cpu_to_be(v) \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint8_t) , v, \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint16_t), cpu_to_be16(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint32_t), cpu_to_be32(v), \ > + __builtin_choose_expr(sizeof(v) == sizeof(uint64_t), cpu_to_be64(v), \ > + (void)0)))) > + > +#endif
next prev parent reply other threads:[~2014-05-28 0:44 UTC|newest] Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-05-28 0:21 [PATCH 00/16] perf: add support for parameterized events from sysfs (powerpc 24x7) Cody P Schafer 2014-05-28 0:21 ` [PATCH 01/16] tools/perf: allow overriding sysfs and proc finding with env var Cody P Schafer 2014-06-05 14:31 ` [tip:perf/core] perf tools: Allow " tip-bot for Cody P Schafer 2014-05-28 0:21 ` [PATCH 02/16] powerpc/perf/hv-24x7: use kmem_cache instead of aligned stack allocations Cody P Schafer 2014-05-28 0:21 ` [PATCH 03/16] perf Documentation: sysfs events/ interfaces Cody P Schafer 2014-05-28 0:21 ` Cody P Schafer 2014-05-28 0:21 ` [PATCH 04/16] perf Documentation: remove duplicated docs for powerpc cpu specific events Cody P Schafer 2014-05-28 0:21 ` Cody P Schafer 2014-05-28 0:22 ` [PATCH 05/16] perf Documentation: add event parameters Cody P Schafer 2014-05-28 0:22 ` Cody P Schafer 2014-05-28 0:22 ` [PATCH 06/16] tools/perf: annotate list_head with type info Cody P Schafer 2014-05-28 0:22 ` Cody P Schafer 2014-05-28 0:22 ` [PATCH 07/16] tools/perf: support parsing parameterized events Cody P Schafer 2014-05-28 0:22 ` Cody P Schafer 2014-05-28 0:22 ` [PATCH 08/16] tools/perf: extend format_alias() to include event parameters Cody P Schafer 2014-05-28 0:22 ` Cody P Schafer 2014-05-28 0:22 ` [PATCH 09/16] tools/perf: document parameterized events and note symbolically formed events Cody P Schafer 2014-05-28 0:22 ` Cody P Schafer 2014-05-28 0:22 ` [PATCH 10/16] perf: provide sysfs_show for struct perf_pmu_events_attr Cody P Schafer 2014-05-28 0:22 ` [PATCH 11/16] byteorder: provide a linux/byteorder.h with {be,le}_to_cpu() and cpu_to_{be,le}() macros Cody P Schafer 2014-05-28 0:22 ` [PATCH 11/16] byteorder: provide a linux/byteorder.h with {be, le}_to_cpu() and cpu_to_{be, le}() macros Cody P Schafer 2014-05-28 0:44 ` Joe Perches [this message] 2014-05-28 0:44 ` [PATCH 11/16] byteorder: provide a linux/byteorder.h with {be,le}_to_cpu() and cpu_to_{be,le}() macros Joe Perches 2014-05-28 22:07 ` Cody P Schafer 2014-05-28 22:07 ` Cody P Schafer 2014-05-28 8:45 ` [PATCH 11/16] byteorder: provide a linux/byteorder.h with {be, le}_to_cpu() and cpu_to_{be, le}() macros David Laight 2014-05-28 8:45 ` David Laight 2014-05-28 22:05 ` Cody P Schafer 2014-05-28 22:05 ` Cody P Schafer 2014-05-28 22:11 ` Cody P Schafer 2014-05-28 22:11 ` Cody P Schafer 2014-05-28 23:00 ` Joe Perches 2014-05-28 23:00 ` Joe Perches 2014-05-28 23:26 ` Cody P Schafer 2014-05-28 23:26 ` Cody P Schafer 2014-05-29 8:36 ` David Laight 2014-05-29 8:36 ` David Laight 2014-05-28 0:22 ` [PATCH 12/16] powerpc/perf/hv-24x7: parse catalog and populate sysfs with events Cody P Schafer 2014-05-28 0:22 ` [PATCH 13/16] powerpc/perf/hv-24x7: Documentaion for new sysfs entries which expose descriptions Cody P Schafer 2014-05-28 0:22 ` Cody P Schafer 2014-05-28 0:22 ` [PATCH 14/16] perf: add PMU_EVENT_ATTR_STRING() helper Cody P Schafer 2014-05-28 0:22 ` [PATCH 15/16] powerpc/perf/{hv-gpci,hv-common}: generate requests with counters annotated Cody P Schafer 2014-05-28 0:22 ` [PATCH 15/16] powerpc/perf/{hv-gpci, hv-common}: " Cody P Schafer 2014-05-28 0:22 ` [PATCH 16/16] powerpc/perf/hv-gpci: add the remaining gpci requests Cody P Schafer 2014-05-28 0:22 ` Cody P Schafer
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=1401237869.20587.12.camel@joe-AO725 \ --to=joe@perches.com \ --cc=dev@codyps.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=sukadev@linux.vnet.ibm.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: linkBe 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.