Signed-off-by: Alexander Wu <alexander.wu@huawei.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
#include <config.h>
#include "bitmap.h"
#include <string.h>
+#include "util.h"
/* Allocates and returns a bitmap initialized to all-1-bits. */
unsigned long *
}
return i;
}
+
+/* Returns the number of 1-bits in the 'n'-bit bitmap at 'bitmap'. */
+size_t
+bitmap_count1(const unsigned long int *bitmap, size_t n)
+{
+ size_t i;
+ size_t count = 0;
+
+ BUILD_ASSERT(ULONG_MAX <= UINT64_MAX);
+ for (i = 0; i < BITMAP_N_LONGS(n); i++) {
+ count += count_1bits(bitmap[i]);
+ }
+
+ return count;
+}
bool value);
bool bitmap_equal(const unsigned long *, const unsigned long *, size_t n);
size_t bitmap_scan(const unsigned long int *, size_t start, size_t end);
+size_t bitmap_count1(const unsigned long *, size_t n);
#define BITMAP_FOR_EACH_1(IDX, SIZE, BITMAP) \
for ((IDX) = bitmap_scan(BITMAP, 0, SIZE); (IDX) < (SIZE); \