Re: [PATCH] cpumask 5/10 rewrite cpumask.h - single bitmap basedimplementation

From: Mikael Pettersson
Date: Fri Jun 04 2004 - 04:35:13 EST


Paul Jackson writes:
> Perhaps I should comment the cpus_addr() definition as 'deprecated'?

Please don't. cpus_addr() is useful when you need to get a
handle on the representation for non-cpumask_t operations.

Case in point: the perfctr kernel extension needs to communicate
a cpumask_t to user-space because of the asymmetric nature of
HT P4s. Unfortunately, a simple copy_to_user() won't work because:
a) the size depends on kernel .config, and
b) the representation is defined in terms of sequences of ulong,
which breaks 32-bit applications on 64-bit kernels.
So perfctr instead converts a cpumask_t to a sequence of uint,
and copies both the number of uints and the uints themselves
to user-space.

Having to do this conversion with a for-each-CPU type loop would
be slow and ugly, and would IMO show that the cpumask_t ADT had
become an obstacle to the actual work that needs to be done.

So please keep cpus_addr().

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