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