2007-11-06 16:40:46

by Robert P. J. Day

[permalink] [raw]
Subject: [PATCH] Add the macro to test if "exactly_one_bit_set" to log2.h.


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
========================================================================


2007-11-06 18:14:31

by Boaz Harrosh

[permalink] [raw]
Subject: Re: [PATCH] Add the macro to test if "exactly_one_bit_set" to log2.h.

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

2007-11-06 18:55:47

by Robert P. J. Day

[permalink] [raw]
Subject: Re: [PATCH] Add the macro to test if "exactly_one_bit_set" to log2.h.

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
========================================================================

2007-11-07 09:18:11

by Boaz Harrosh

[permalink] [raw]
Subject: Re: [PATCH] Add the macro to test if "exactly_one_bit_set" to log2.h.

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

2007-11-09 04:37:36

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] Add the macro to test if "exactly_one_bit_set" to log2.h.

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

2007-11-09 05:11:45

by Robert P. J. Day

[permalink] [raw]
Subject: Re: [PATCH] Add the macro to test if "exactly_one_bit_set" to log2.h.

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
========================================================================