1#define JEMALLOC_BITMAP_C_ 2#include "jemalloc/internal/jemalloc_internal.h" 3 4/******************************************************************************/ 5 6#ifdef USE_TREE 7 8void --- 60 unchanged lines hidden (view full) --- 69 } 70} 71 72#else /* USE_TREE */ 73 74void 75bitmap_info_init(bitmap_info_t *binfo, size_t nbits) 76{ |
77 78 assert(nbits > 0); 79 assert(nbits <= (ZU(1) << LG_BITMAP_MAXBITS)); 80 |
81 binfo->ngroups = BITMAP_BITS2GROUPS(nbits); |
82 binfo->nbits = nbits; 83} 84 85static size_t 86bitmap_info_ngroups(const bitmap_info_t *binfo) 87{ 88 89 return (binfo->ngroups); 90} 91 92void 93bitmap_init(bitmap_t *bitmap, const bitmap_info_t *binfo) 94{ 95 size_t extra; 96 97 memset(bitmap, 0xffU, bitmap_size(binfo)); |
98 extra = (BITMAP_GROUP_NBITS - (binfo->nbits & BITMAP_GROUP_NBITS_MASK)) 99 & BITMAP_GROUP_NBITS_MASK; |
100 if (extra != 0) |
101 bitmap[binfo->ngroups - 1] >>= extra; |
102} 103 104#endif /* USE_TREE */ 105 106size_t 107bitmap_size(const bitmap_info_t *binfo) 108{ 109 110 return (bitmap_info_ngroups(binfo) << LG_SIZEOF_BITMAP); 111} |