Lines Matching refs:dmap
31 static inline int dbitmap_enabled(struct dbitmap *dmap) in dbitmap_enabled() argument
33 return !!dmap->nbits; in dbitmap_enabled()
36 static inline void dbitmap_free(struct dbitmap *dmap) in dbitmap_free() argument
38 dmap->nbits = 0; in dbitmap_free()
39 kfree(dmap->map); in dbitmap_free()
40 dmap->map = NULL; in dbitmap_free()
44 static inline unsigned int dbitmap_shrink_nbits(struct dbitmap *dmap) in dbitmap_shrink_nbits() argument
48 if (dmap->nbits <= NBITS_MIN) in dbitmap_shrink_nbits()
57 bit = find_last_bit(dmap->map, dmap->nbits); in dbitmap_shrink_nbits()
58 if (bit < (dmap->nbits >> 2)) in dbitmap_shrink_nbits()
59 return dmap->nbits >> 1; in dbitmap_shrink_nbits()
62 if (bit == dmap->nbits) in dbitmap_shrink_nbits()
70 dbitmap_replace(struct dbitmap *dmap, unsigned long *new, unsigned int nbits) in dbitmap_replace() argument
72 bitmap_copy(new, dmap->map, min(dmap->nbits, nbits)); in dbitmap_replace()
73 kfree(dmap->map); in dbitmap_replace()
74 dmap->map = new; in dbitmap_replace()
75 dmap->nbits = nbits; in dbitmap_replace()
79 dbitmap_shrink(struct dbitmap *dmap, unsigned long *new, unsigned int nbits) in dbitmap_shrink() argument
89 if (!dbitmap_enabled(dmap) || dbitmap_shrink_nbits(dmap) != nbits) { in dbitmap_shrink()
94 dbitmap_replace(dmap, new, nbits); in dbitmap_shrink()
98 static inline unsigned int dbitmap_grow_nbits(struct dbitmap *dmap) in dbitmap_grow_nbits() argument
100 return dmap->nbits << 1; in dbitmap_grow_nbits()
104 dbitmap_grow(struct dbitmap *dmap, unsigned long *new, unsigned int nbits) in dbitmap_grow() argument
111 if (!dbitmap_enabled(dmap) || nbits <= dmap->nbits) { in dbitmap_grow()
123 dbitmap_free(dmap); in dbitmap_grow()
127 dbitmap_replace(dmap, new, nbits); in dbitmap_grow()
136 dbitmap_acquire_next_zero_bit(struct dbitmap *dmap, unsigned long offset, in dbitmap_acquire_next_zero_bit() argument
141 n = find_next_zero_bit(dmap->map, dmap->nbits, offset); in dbitmap_acquire_next_zero_bit()
142 if (n == dmap->nbits) in dbitmap_acquire_next_zero_bit()
146 set_bit(n, dmap->map); in dbitmap_acquire_next_zero_bit()
152 dbitmap_clear_bit(struct dbitmap *dmap, unsigned long bit) in dbitmap_clear_bit() argument
154 clear_bit(bit, dmap->map); in dbitmap_clear_bit()
157 static inline int dbitmap_init(struct dbitmap *dmap) in dbitmap_init() argument
159 dmap->map = bitmap_zalloc(NBITS_MIN, GFP_KERNEL); in dbitmap_init()
160 if (!dmap->map) { in dbitmap_init()
161 dmap->nbits = 0; in dbitmap_init()
165 dmap->nbits = NBITS_MIN; in dbitmap_init()