/* Ensure that the last "unsigned long" in the bitmap only has as many
     * 1-bits as there actually should be. */
bitmap[n_longs - 1] = (1UL << (n_bits % BITMAP_ULONG_BITS)) - 1;
from bitmap_allocate1(),
It will fail when n_bits % BITMAP_ULONG_BITS == 0, does it matter?

unsigned long *
bitmap_allocate1(size_t n_bits)
{
    size_t n_bytes = bitmap_n_bytes(n_bits);
    size_t n_longs = bitmap_n_longs(n_bits);
    unsigned long *bitmap;

    /* Allocate and initialize most of the bitmap. */
    bitmap = xmalloc(n_bytes);
    memset(bitmap, 0xff, n_bytes);

    /* Ensure that the last "unsigned long" in the bitmap only has as many
     * 1-bits as there actually should be. */
    bitmap[n_longs - 1] = (1UL << (n_bits % BITMAP_ULONG_BITS)) - 1;

    return bitmap;
}

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to