Changeset c5396c1 in mainline for kernel/generic/include/adt/bitmap.h
- Timestamp:
- 2013-09-12T10:27:17Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6e75f2d
- Parents:
- 4a5f2b0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/adt/bitmap.h
r4a5f2b0 rc5396c1 44 44 size_t elements; 45 45 uint8_t *bits; 46 47 size_t block_size;48 uint8_t *blocks;49 46 } bitmap_t; 50 47 … … 52 49 unsigned int value) 53 50 { 54 if (element < bitmap->elements) { 55 /* 56 * The 2nd level bitmap is conservative. 57 * Make sure we update it properly. 58 */ 59 60 if (value) { 61 bitmap->bits[element / BITMAP_ELEMENT] |= 62 (1 << (element & BITMAP_REMAINER)); 63 } else { 64 bitmap->bits[element / BITMAP_ELEMENT] &= 65 ~(1 << (element & BITMAP_REMAINER)); 66 67 if (bitmap->block_size > 0) { 68 size_t block = element / bitmap->block_size; 69 70 bitmap->blocks[block / BITMAP_ELEMENT] &= 71 ~(1 << (block & BITMAP_REMAINER)); 72 } 73 } 51 if (element >= bitmap->elements) 52 return; 53 54 size_t byte = element / BITMAP_ELEMENT; 55 uint8_t mask = 1 << (element & BITMAP_REMAINER); 56 57 if (value) { 58 bitmap->bits[byte] |= mask; 59 } else { 60 bitmap->bits[byte] &= ~mask; 74 61 } 75 62 } … … 80 67 return 0; 81 68 82 return !!((bitmap->bits)[element / BITMAP_ELEMENT] & 83 (1 << (element & BITMAP_REMAINER))); 69 size_t byte = element / BITMAP_ELEMENT; 70 uint8_t mask = 1 << (element & BITMAP_REMAINER); 71 72 return !!((bitmap->bits)[byte] & mask); 84 73 } 85 74 86 extern size_t bitmap_size(size_t , size_t);87 extern void bitmap_initialize(bitmap_t *, size_t, size_t,void *);75 extern size_t bitmap_size(size_t); 76 extern void bitmap_initialize(bitmap_t *, size_t, void *); 88 77 89 78 extern void bitmap_set_range(bitmap_t *, size_t, size_t);
Note:
See TracChangeset
for help on using the changeset viewer.