All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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: link
Be 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.