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