2003-08-28 15:55:12

by Joe Korty

[permalink] [raw]
Subject: [PATCH] bad definition of cpus_complement

One of the definitions of cpus_complement is broke. Also, cpus_complement is
the only cpus_* definition which operates in-place rather than in (dst,src)
form. I will submit a patch to convert if there is interest.

Joe

--- include/asm-generic/cpumask_up.h.orig 2003-08-27 06:08:38.000000000 -0400
+++ include/asm-generic/cpumask_up.h 2003-08-28 11:45:09.000000000 -0400
@@ -28,7 +28,7 @@

#define cpus_complement(map) \
do { \
- cpus_coerce(map) = !cpus_coerce(map); \
+ cpus_coerce(map) = ~cpus_coerce(map); \
} while (0)

#define cpus_equal(map1, map2) (cpus_coerce(map1) == cpus_coerce(map2))


2003-08-28 18:31:42

by William Lee Irwin III

[permalink] [raw]
Subject: Re: [PATCH] bad definition of cpus_complement

On Thu, Aug 28, 2003 at 11:54:52AM -0400, Joe Korty wrote:
> One of the definitions of cpus_complement is broke. Also, cpus_complement is
> the only cpus_* definition which operates in-place rather than in (dst,src)
> form. I will submit a patch to convert if there is interest.

The definition is fine (see other responses), but the inconsistent
argument convention might be worth shoring up to match the others.


-- wli

2003-08-28 18:18:31

by Mikael Pettersson

[permalink] [raw]
Subject: Re: [PATCH] bad definition of cpus_complement

Joe Korty writes:
> One of the definitions of cpus_complement is broke. Also, cpus_complement is
> the only cpus_* definition which operates in-place rather than in (dst,src)
> form. I will submit a patch to convert if there is interest.
>
> Joe
>
> --- include/asm-generic/cpumask_up.h.orig 2003-08-27 06:08:38.000000000 -0400
> +++ include/asm-generic/cpumask_up.h 2003-08-28 11:45:09.000000000 -0400
> @@ -28,7 +28,7 @@
>
> #define cpus_complement(map) \
> do { \
> - cpus_coerce(map) = !cpus_coerce(map); \
> + cpus_coerce(map) = ~cpus_coerce(map); \
> } while (0)

Broken how? The value range for a cpumask_t on UP is [0,1],
and ! respects that whereas ~ does not.