Set `count` bits at `bitmap_idx` to 0 atomically Returns `true` if all `count` bits were 1 previously.
| 138 | // Set `count` bits at `bitmap_idx` to 0 atomically |
| 139 | // Returns `true` if all `count` bits were 1 previously. |
| 140 | bool _mi_bitmap_unclaim(mi_bitmap_t bitmap, size_t bitmap_fields, size_t count, mi_bitmap_index_t bitmap_idx) { |
| 141 | const size_t idx = mi_bitmap_index_field(bitmap_idx); |
| 142 | const size_t bitidx = mi_bitmap_index_bit_in_field(bitmap_idx); |
| 143 | const size_t mask = mi_bitmap_mask_(count, bitidx); |
| 144 | mi_assert_internal(bitmap_fields > idx); MI_UNUSED(bitmap_fields); |
| 145 | // mi_assert_internal((bitmap[idx] & mask) == mask); |
| 146 | size_t prev = mi_atomic_and_acq_rel(&bitmap[idx], ~mask); |
| 147 | return ((prev & mask) == mask); |
| 148 | } |
| 149 | |
| 150 | |
| 151 | // Set `count` bits at `bitmap_idx` to 1 atomically |
no test coverage detected