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