[lkml]   [2004]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] cpumask 5/10 rewrite cpumask.h - single bitmap based implementation
    Mikael writes:
    > Case in point: the perfctr kernel extension needs to communicate ...

    Nice example. Thank-you.

    Yes - doing that 1-bit at a time in a per-cpu loop would be ugly.

    We should leave cpus_addr() around, at least until such time as the
    cpumask ADT provided routines to support exactly what you are doing -
    copying up masks to user space as length specified arrays of uint.


    Aside - be careful here not to get the two halves of 64 bit longs,
    on 64 bit big endian machines, backwards.

    From the depths of my email archives (Joe Korty might recognize this)
    comes the following snippet of code and commentary, never put to use,
    which ponders the handling of such masks:

    + * Bitops apply to arrays of unsigned long. This is almost
    + * the same as an array of unsigned ints, except on 64 bit big
    + * endian architectures, in which the two 32-bit int halves of
    + * each long are reversed (big 32-bit halfword first, naturally).
    + *
    + * Use this BIT32X (for "BITop 32-bit indeX") macro to index the
    + * i-th word of a bit mask declared as an array of 32 bit words.
    + *
    + * Usage example accessing 32-bit words in mask[] in order,
    + * smallest first:
    + * u32 mask[MASKLENGTH];
    + * int i;
    + * for (i = 0; i < MASKLENGTH; i++)
    + * ... mask[BIT32X(i)] ...
    + */
    +#ifndef BIT32X
    +#include <asm/byteorder.h>
    +#if BITS_PER_LONG == 64 && defined(__BIG_ENDIAN)
    +#define BIT32X(i) ((i)^1)
    +#elif BITS_PER_LONG == 32 || defined(__LITTLE_ENDIAN)
    +#define BIT32X(i) (i)

    I won't rest till it's the best ...
    Programmer, Linux Scalability
    Paul Jackson <> 1.650.933.1373
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 14:03    [W:0.032 / U:214.640 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site