linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Cody P Schafer <dev@codyps.com>
To: LKML <linux-kernel@vger.kernel.org>,
	Linux PPC <linuxppc-dev@lists.ozlabs.org>,
	Cody P Schafer <dev@codyps.com>
Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Subject: [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:22:06 -0700	[thread overview]
Message-ID: <1401236684-10579-12-git-send-email-dev@codyps.com> (raw)
In-Reply-To: <1401236684-10579-1-git-send-email-dev@codyps.com>

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).

CC: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Signed-off-by: Cody P Schafer <dev@codyps.com>
---
 include/linux/byteorder.h | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 include/linux/byteorder.h

diff --git a/include/linux/byteorder.h b/include/linux/byteorder.h
new file mode 100644
index 0000000..c7ab8da
--- /dev/null
+++ 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))))
+
+#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
-- 
1.9.3

  parent reply	other threads:[~2014-05-28  0:27 UTC|newest]

Thread overview: 25+ 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-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 ` [PATCH 04/16] perf Documentation: remove duplicated docs for powerpc cpu specific events Cody P Schafer
2014-05-28  0:22 ` [PATCH 05/16] perf Documentation: add event parameters 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 ` [PATCH 07/16] tools/perf: support parsing parameterized events 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 ` [PATCH 09/16] tools/perf: document parameterized events and note symbolically formed events 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 ` Cody P Schafer [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  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 22:05     ` Cody P Schafer
2014-05-28 22:11       ` Cody P Schafer
2014-05-28 23:00         ` Joe Perches
2014-05-28 23:26           ` Cody P Schafer
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 ` [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 16/16] powerpc/perf/hv-gpci: add the remaining gpci requests 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=1401236684-10579-12-git-send-email-dev@codyps.com \
    --to=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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).