Messages in this thread | | | Date | Fri, 4 Jun 2004 02:37:12 -0700 | From | William Lee Irwin III <> | Subject | Re: [PATCH] cpumask 5/10 rewrite cpumask.h - single bitmap based implementation |
| |
On Fri, Jun 04, 2004 at 11:31:24AM +0200, Mikael Pettersson wrote: > 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().
If the marshalling code presents different formats to userspace depending on BITS_PER_LONG then it's buggy.
-- wli - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |