Bitmap
include/structures/bitmap.h View source View on GitHubType Aliases
Section titled “Type Aliases”bitmap_word_t
Section titled “bitmap_word_t”typedef uint64_t bitmap_word_t source Functions
Section titled “Functions”bitmap_set
Section titled “bitmap_set”void bitmap_set(bitmap_word_t *map, size_t bit) source bitmap_clear
Section titled “bitmap_clear”void bitmap_clear(bitmap_word_t *map, size_t bit) source bitmap_toggle
Section titled “bitmap_toggle”void bitmap_toggle(bitmap_word_t *map, size_t bit) source bitmap_test
Section titled “bitmap_test”bool bitmap_test(const bitmap_word_t *map, size_t bit) source bitmap_test_and_set
Section titled “bitmap_test_and_set”bool bitmap_test_and_set(bitmap_word_t *map, size_t bit) source bitmap_test_and_clear
Section titled “bitmap_test_and_clear”bool bitmap_test_and_clear(bitmap_word_t *map, size_t bit) source bitmap_atomic_set
Section titled “bitmap_atomic_set”void bitmap_atomic_set(bitmap_word_t *map, size_t bit) source bitmap_atomic_clear
Section titled “bitmap_atomic_clear”void bitmap_atomic_clear(bitmap_word_t *map, size_t bit) source bitmap_atomic_toggle
Section titled “bitmap_atomic_toggle”void bitmap_atomic_toggle(bitmap_word_t *map, size_t bit) source bitmap_atomic_test
Section titled “bitmap_atomic_test”bool bitmap_atomic_test(const bitmap_word_t *map, size_t bit) source bitmap_atomic_test_and_set
Section titled “bitmap_atomic_test_and_set”bool bitmap_atomic_test_and_set(bitmap_word_t *map, size_t bit) source bitmap_atomic_test_and_clear
Section titled “bitmap_atomic_test_and_clear”bool bitmap_atomic_test_and_clear(bitmap_word_t *map, size_t bit) source bitmap_zero
Section titled “bitmap_zero”void bitmap_zero(bitmap_word_t *map, size_t nbits) source bitmap_copy
Section titled “bitmap_copy”void bitmap_copy(
bitmap_word_t *dst,
const bitmap_word_t *src,
size_t nbits
) source bitmap_fill
Section titled “bitmap_fill”void bitmap_fill(bitmap_word_t *map, size_t nbits) source bitmap_set_range
Section titled “bitmap_set_range”void bitmap_set_range(bitmap_word_t *map, size_t start, size_t len) source bitmap_clear_range
Section titled “bitmap_clear_range”void bitmap_clear_range(bitmap_word_t *map, size_t start, size_t len) source bitmap_and
Section titled “bitmap_and”void bitmap_and(
bitmap_word_t *dst,
const bitmap_word_t *src1,
const bitmap_word_t *src2,
size_t nbits
) source bitmap_or
Section titled “bitmap_or”void bitmap_or(
bitmap_word_t *dst,
const bitmap_word_t *src1,
const bitmap_word_t *src2,
size_t nbits
) source bitmap_xor
Section titled “bitmap_xor”void bitmap_xor(
bitmap_word_t *dst,
const bitmap_word_t *src1,
const bitmap_word_t *src2,
size_t nbits
) source bitmap_andnot
Section titled “bitmap_andnot”void bitmap_andnot(
bitmap_word_t *dst,
const bitmap_word_t *src1,
const bitmap_word_t *src2,
size_t nbits
) source bitmap_equal
Section titled “bitmap_equal”bool bitmap_equal(
const bitmap_word_t *src1,
const bitmap_word_t *src2,
size_t nbits
) source bitmap_intersects
Section titled “bitmap_intersects”bool bitmap_intersects(
const bitmap_word_t *src1,
const bitmap_word_t *src2,
size_t nbits
) source bitmap_subset
Section titled “bitmap_subset”bool bitmap_subset(
const bitmap_word_t *subset,
const bitmap_word_t *superset,
size_t nbits
) source bitmap_empty
Section titled “bitmap_empty”bool bitmap_empty(const bitmap_word_t *map, size_t nbits) source bitmap_full
Section titled “bitmap_full”bool bitmap_full(const bitmap_word_t *map, size_t nbits) source bitmap_weight
Section titled “bitmap_weight”size_t bitmap_weight(const bitmap_word_t *map, size_t nbits) source bitmap_find_first_set
Section titled “bitmap_find_first_set”size_t bitmap_find_first_set(const bitmap_word_t *map, size_t nbits) source bitmap_find_first_zero
Section titled “bitmap_find_first_zero”size_t bitmap_find_first_zero(const bitmap_word_t *map, size_t nbits) source bitmap_find_next_bit
Section titled “bitmap_find_next_bit”size_t bitmap_find_next_bit(
const bitmap_word_t *map,
size_t nbits,
size_t start
) source bitmap_find_next_zero_bit
Section titled “bitmap_find_next_zero_bit”size_t bitmap_find_next_zero_bit(
const bitmap_word_t *map,
size_t nbits,
size_t start
) source Macros
Section titled “Macros”BITMAP_BITS_PER_WORD
Section titled “BITMAP_BITS_PER_WORD”#define BITMAP_BITS_PER_WORD 64 source BITMAP_WORDS
Section titled “BITMAP_WORDS”#define BITMAP_WORDS(nbits) source Expansion
#define BITMAP_WORDS(nbits) \
({ \
__auto_type __nbits = (nbits); \
ct_typecheck_widenable_to((size_t) 0, nbits); \
DIV_ROUND_UP((size_t) __nbits, BITMAP_BITS_PER_WORD); \
}) Integer constant expression variant
BITMAP_WORDS_CONST
Section titled “BITMAP_WORDS_CONST”#define BITMAP_WORDS_CONST(nbits) source Expansion
#define BITMAP_WORDS_CONST(nbits) \
(((nbits) / BITMAP_BITS_PER_WORD) + !!((nbits) % BITMAP_BITS_PER_WORD)) BITMAP_DECLARE
Section titled “BITMAP_DECLARE”#define BITMAP_DECLARE(name, nbits) source Expansion
#define BITMAP_DECLARE(name, nbits) \
bitmap_word_t name[BITMAP_WORDS_CONST(nbits)] BITMAP_DECLARE_ATOMIC
Section titled “BITMAP_DECLARE_ATOMIC”#define BITMAP_DECLARE_ATOMIC(name, nbits) source Expansion
#define BITMAP_DECLARE_ATOMIC(name, nbits) \
atomic(bitmap_word_t) name[BITMAP_WORDS_CONST(nbits)] BITMAP_WORD_INDEX
Section titled “BITMAP_WORD_INDEX”#define BITMAP_WORD_INDEX(bit) source Expansion
#define BITMAP_WORD_INDEX(bit) ((bit) / BITMAP_BITS_PER_WORD) BITMAP_BIT_OFFSET
Section titled “BITMAP_BIT_OFFSET”#define BITMAP_BIT_OFFSET(bit) source Expansion
#define BITMAP_BIT_OFFSET(bit) ((bit) % BITMAP_BITS_PER_WORD) BITMAP_BIT_MASK
Section titled “BITMAP_BIT_MASK”#define BITMAP_BIT_MASK(bit) source Expansion
#define BITMAP_BIT_MASK(bit) ((bitmap_word_t) BIT(BITMAP_BIT_OFFSET(bit))) bitmap_for_each_bit_set
Section titled “bitmap_for_each_bit_set”#define bitmap_for_each_bit_set(bit, map, nbits) source Expansion
#define bitmap_for_each_bit_set(bit, map, nbits) \
for (bit = 0; bit < (nbits); bit++) \
if (bitmap_test((map), (bit))) bitmap_for_each_bit_unset
Section titled “bitmap_for_each_bit_unset”#define bitmap_for_each_bit_unset(bit, map, nbits) source Expansion
#define bitmap_for_each_bit_unset(bit, map, nbits) \
for (bit = 0; bit < (nbits); bit++) \
if (!bitmap_test((map), (bit)))