[ovs-dev] bitmap_allocate1(size_t n_bits) will fail when (n_bits % BITMAP_ULONG_BITS == 0)

ZhengLingyun konghuarukhr at 163.com
Sat Jun 29 02:14:16 UTC 2013


/* 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;
}

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20130629/e4af5eda/attachment-0003.html>


More information about the dev mailing list