\f
/* Creation and destruction. */
-/* Initializes B to be a bitmap of BIT_CNT bits
- and sets all of its bits to false.
- Returns true if success, false if memory allocation
- failed. */
+/* Creates and returns a pointer to a newly allocated bitmap with room for
+ BIT_CNT (or more) bits. Returns a null pointer if memory allocation fails.
+ The caller is responsible for freeing the bitmap, with bitmap_destroy(),
+ when it is no longer needed. */
struct bitmap *
bitmap_create (size_t bit_cnt)
{
}
/* Destroys bitmap B, freeing its storage.
- Not for use on bitmaps created by
- bitmap_create_preallocated(). */
+ Not for use on bitmaps created by bitmap_create_in_buf(). */
void
bitmap_destroy (struct bitmap *b)
{
/* This is equivalent to `b->bits[idx] |= mask' except that it
is guaranteed to be atomic on a uniprocessor machine. See
the description of the OR instruction in [IA32-v2b]. */
- asm ("or %0, %1" : "=m" (b->bits[idx]) : "r" (mask) : "cc");
+ asm ("orl %1, %0" : "=m" (b->bits[idx]) : "r" (mask) : "cc");
}
/* Atomically sets the bit numbered BIT_IDX in B to false. */
/* This is equivalent to `b->bits[idx] &= ~mask' except that it
is guaranteed to be atomic on a uniprocessor machine. See
the description of the AND instruction in [IA32-v2a]. */
- asm ("and %0, %1" : "=m" (b->bits[idx]) : "r" (~mask) : "cc");
+ asm ("andl %1, %0" : "=m" (b->bits[idx]) : "r" (~mask) : "cc");
}
/* Atomically toggles the bit numbered IDX in B;
/* This is equivalent to `b->bits[idx] ^= mask' except that it
is guaranteed to be atomic on a uniprocessor machine. See
the description of the XOR instruction in [IA32-v2b]. */
- asm ("xor %0, %1" : "=m" (b->bits[idx]) : "r" (mask) : "cc");
+ asm ("xorl %1, %0" : "=m" (b->bits[idx]) : "r" (mask) : "cc");
}
/* Returns the value of the bit numbered IDX in B. */