lkml.org 
[lkml]   [2000]   [Jan]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: Constant byteorder macros.
Date
Followup to:  <E12AyZR-0002gU-00@devel2.axiom.internal>
By author: David Woodhouse <dwmw2@infradead.org>
In newsgroup: linux.dev.kernel
>
>
> In order to use cpu_to_le16() et al. in case statements, for example:
>
> switch (status) {
> case cpu_to_le16(CONSTANT_XYZ):
>
>
> ... I need to define new macros __constant_cpu_to_le16(), etc.
>
> Ideally, gcc would be able to tell that it's constant, and I would be able to
> use the 'normal' cpu_to_le16 macro. But as someone's evidently already given
> up on that with __constant_htonl() etc., I'm going to assume that it's not
> currently possible.
>

Given that gcc has a __builtin_constant_p(x), you ought to be able to
do:

#define cpu_to_le16(x) ( __builtin_constant_p(x) ? __constant_cpu_to_le16(x) : __cpu_to_le16(x) )

-hpa
--
<hpa@transmeta.com> at work, <hpa@zytor.com> in private!
"Unix gives you enough rope to shoot yourself in the foot."

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:56    [W:0.060 / U:0.864 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site