While this macro is defined in terms of "is_power_of_2" and is
therefore functionally equivalent, the visual semantics are sometimes
more appropriate for what is actually being tested.
Signed-off-by: Robert P. J. Day <[email protected]>
---
diff --git a/include/linux/log2.h b/include/linux/log2.h
index c8cf5e8..d0d324e 100644
--- a/include/linux/log2.h
+++ b/include/linux/log2.h
@@ -55,6 +55,12 @@ bool is_power_of_2(unsigned long n)
}
/*
+ * And for folks who want slightly different semantics ...
+ */
+
+#define exactly_one_bit_set is_power_of_2
+
+/*
* round up to nearest power of two
*/
static inline __attribute__((const))
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA
http://crashcourse.ca
========================================================================
On Tue, Nov 06 2007 at 18:38 +0200, "Robert P. J. Day" <[email protected]> wrote:
> While this macro is defined in terms of "is_power_of_2" and is
> therefore functionally equivalent, the visual semantics are sometimes
> more appropriate for what is actually being tested.
>
> Signed-off-by: Robert P. J. Day <[email protected]>
>
> ---
>
> diff --git a/include/linux/log2.h b/include/linux/log2.h
> index c8cf5e8..d0d324e 100644
> --- a/include/linux/log2.h
> +++ b/include/linux/log2.h
> @@ -55,6 +55,12 @@ bool is_power_of_2(unsigned long n)
> }
>
> /*
> + * And for folks who want slightly different semantics ...
> + */
> +
> +#define exactly_one_bit_set is_power_of_2
at_most_one_bit_set No?
> +
> +/*
> * round up to nearest power of two
> */
> static inline __attribute__((const))
Boaz
On Tue, 6 Nov 2007, Boaz Harrosh wrote:
> On Tue, Nov 06 2007 at 18:38 +0200, "Robert P. J. Day" <[email protected]> wrote:
> > While this macro is defined in terms of "is_power_of_2" and is
> > therefore functionally equivalent, the visual semantics are sometimes
> > more appropriate for what is actually being tested.
> >
> > Signed-off-by: Robert P. J. Day <[email protected]>
> >
> > ---
> >
> > diff --git a/include/linux/log2.h b/include/linux/log2.h
> > index c8cf5e8..d0d324e 100644
> > --- a/include/linux/log2.h
> > +++ b/include/linux/log2.h
> > @@ -55,6 +55,12 @@ bool is_power_of_2(unsigned long n)
> > }
> >
> > /*
> > + * And for folks who want slightly different semantics ...
> > + */
> > +
> > +#define exactly_one_bit_set is_power_of_2
>
> at_most_one_bit_set No?
no, it really is *exactly* one bit set. zero is not considered a
power of two.
rday
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA
http://crashcourse.ca
========================================================================
On Tue, Nov 06 2007 at 20:53 +0200, "Robert P. J. Day" <[email protected]> wrote:
> On Tue, 6 Nov 2007, Boaz Harrosh wrote:
>
>> On Tue, Nov 06 2007 at 18:38 +0200, "Robert P. J. Day" <[email protected]> wrote:
>>> While this macro is defined in terms of "is_power_of_2" and is
>>> therefore functionally equivalent, the visual semantics are sometimes
>>> more appropriate for what is actually being tested.
>>>
>>> Signed-off-by: Robert P. J. Day <[email protected]>
>>>
>>> ---
>>>
>>> diff --git a/include/linux/log2.h b/include/linux/log2.h
>>> index c8cf5e8..d0d324e 100644
>>> --- a/include/linux/log2.h
>>> +++ b/include/linux/log2.h
>>> @@ -55,6 +55,12 @@ bool is_power_of_2(unsigned long n)
>>> }
>>>
>>> /*
>>> + * And for folks who want slightly different semantics ...
>>> + */
>>> +
>>> +#define exactly_one_bit_set is_power_of_2
>> at_most_one_bit_set No?
>
> no, it really is *exactly* one bit set. zero is not considered a
> power of two.
>
> rday
Yes, Sorry for the noise it was late and I should have returned to
the kids instead of reading lkml.
Boaz
> On Tue, 6 Nov 2007 11:38:52 -0500 (EST) "Robert P. J. Day" <[email protected]> wrote:
>
> While this macro is defined in terms of "is_power_of_2" and is
> therefore functionally equivalent, the visual semantics are sometimes
> more appropriate for what is actually being tested.
>
This is gettig a bit anal, but I guess you're the is_power_of_2 maintainer.
> ---
>
> diff --git a/include/linux/log2.h b/include/linux/log2.h
> index c8cf5e8..d0d324e 100644
> --- a/include/linux/log2.h
> +++ b/include/linux/log2.h
> @@ -55,6 +55,12 @@ bool is_power_of_2(unsigned long n)
> }
>
> /*
> + * And for folks who want slightly different semantics ...
> + */
> +
> +#define exactly_one_bit_set is_power_of_2
And I'm the dont-code-in-cpp-when-you-could-code-in-C maintainer.
On Thu, 8 Nov 2007, Andrew Morton wrote:
> > On Tue, 6 Nov 2007 11:38:52 -0500 (EST) "Robert P. J. Day" <[email protected]> wrote:
> >
> > While this macro is defined in terms of "is_power_of_2" and is
> > therefore functionally equivalent, the visual semantics are
> > sometimes more appropriate for what is actually being tested.
>
> This is gettig a bit anal, but I guess you're the is_power_of_2
> maintainer.
>
> > ---
> >
> > diff --git a/include/linux/log2.h b/include/linux/log2.h
> > index c8cf5e8..d0d324e 100644
> > --- a/include/linux/log2.h
> > +++ b/include/linux/log2.h
> > @@ -55,6 +55,12 @@ bool is_power_of_2(unsigned long n)
> > }
> >
> > /*
> > + * And for folks who want slightly different semantics ...
> > + */
> > +
> > +#define exactly_one_bit_set is_power_of_2
actually, i could go either way on this one. it wasn't originally my
idea, but i tossed it out there because i have, in fact, seen comments
that explicitly said something along the lines of "make sure that
exactly one bit is set". so i'll leave it up to someone else to
decide whether it should go in. it's not something i'm going to go to
the mats over one way or the other.
rday
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA
http://crashcourse.ca
========================================================================