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()
43 static inline unsigned int dbitmap_shrink_nbits(struct dbitmap *dmap) in dbitmap_shrink_nbits() argument
47 if (dmap->nbits <= NBITS_MIN) in dbitmap_shrink_nbits()
56 bit = find_last_bit(dmap->map, dmap->nbits); in dbitmap_shrink_nbits()
57 if (bit < (dmap->nbits >> 2)) in dbitmap_shrink_nbits()
58 return dmap->nbits >> 1; in dbitmap_shrink_nbits()
61 if (bit == dmap->nbits) in dbitmap_shrink_nbits()
69 dbitmap_replace(struct dbitmap *dmap, unsigned long *new, unsigned int nbits) in dbitmap_replace() argument
71 bitmap_copy(new, dmap->map, min(dmap->nbits, nbits)); in dbitmap_replace()
72 kfree(dmap->map); in dbitmap_replace()
73 dmap->map = new; in dbitmap_replace()
74 dmap->nbits = nbits; in dbitmap_replace()
78 dbitmap_shrink(struct dbitmap *dmap, unsigned long *new, unsigned int nbits) in dbitmap_shrink() argument
88 if (!dbitmap_enabled(dmap) || dbitmap_shrink_nbits(dmap) != nbits) { in dbitmap_shrink()
93 dbitmap_replace(dmap, new, nbits); in dbitmap_shrink()
97 static inline unsigned int dbitmap_grow_nbits(struct dbitmap *dmap) in dbitmap_grow_nbits() argument
99 return dmap->nbits << 1; in dbitmap_grow_nbits()
103 dbitmap_grow(struct dbitmap *dmap, unsigned long *new, unsigned int nbits) in dbitmap_grow() argument
110 if (!dbitmap_enabled(dmap) || nbits <= dmap->nbits) { in dbitmap_grow()
122 dbitmap_free(dmap); in dbitmap_grow()
126 dbitmap_replace(dmap, new, nbits); in dbitmap_grow()
135 dbitmap_acquire_next_zero_bit(struct dbitmap *dmap, unsigned long offset, in dbitmap_acquire_next_zero_bit() argument
140 n = find_next_zero_bit(dmap->map, dmap->nbits, offset); in dbitmap_acquire_next_zero_bit()
141 if (n == dmap->nbits) in dbitmap_acquire_next_zero_bit()
145 set_bit(n, dmap->map); in dbitmap_acquire_next_zero_bit()
151 dbitmap_clear_bit(struct dbitmap *dmap, unsigned long bit) in dbitmap_clear_bit() argument
153 clear_bit(bit, dmap->map); in dbitmap_clear_bit()
156 static inline int dbitmap_init(struct dbitmap *dmap) in dbitmap_init() argument
158 dmap->map = bitmap_zalloc(NBITS_MIN, GFP_KERNEL); in dbitmap_init()
159 if (!dmap->map) { in dbitmap_init()
160 dmap->nbits = 0; in dbitmap_init()
164 dmap->nbits = NBITS_MIN; in dbitmap_init()