aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/bitmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/bitmap.h')
-rw-r--r--include/linux/bitmap.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h
index 3b77588a9360..4e0f0c8167af 100644
--- a/include/linux/bitmap.h
+++ b/include/linux/bitmap.h
@@ -112,9 +112,8 @@ extern int __bitmap_intersects(const unsigned long *bitmap1,
112extern int __bitmap_subset(const unsigned long *bitmap1, 112extern int __bitmap_subset(const unsigned long *bitmap1,
113 const unsigned long *bitmap2, unsigned int nbits); 113 const unsigned long *bitmap2, unsigned int nbits);
114extern int __bitmap_weight(const unsigned long *bitmap, unsigned int nbits); 114extern int __bitmap_weight(const unsigned long *bitmap, unsigned int nbits);
115 115extern void __bitmap_set(unsigned long *map, unsigned int start, int len);
116extern void bitmap_set(unsigned long *map, unsigned int start, int len); 116extern void __bitmap_clear(unsigned long *map, unsigned int start, int len);
117extern void bitmap_clear(unsigned long *map, unsigned int start, int len);
118 117
119extern unsigned long bitmap_find_next_zero_area_off(unsigned long *map, 118extern unsigned long bitmap_find_next_zero_area_off(unsigned long *map,
120 unsigned long size, 119 unsigned long size,
@@ -315,6 +314,24 @@ static __always_inline int bitmap_weight(const unsigned long *src, unsigned int
315 return __bitmap_weight(src, nbits); 314 return __bitmap_weight(src, nbits);
316} 315}
317 316
317static __always_inline void bitmap_set(unsigned long *map, unsigned int start,
318 unsigned int nbits)
319{
320 if (__builtin_constant_p(nbits) && nbits == 1)
321 __set_bit(start, map);
322 else
323 __bitmap_set(map, start, nbits);
324}
325
326static __always_inline void bitmap_clear(unsigned long *map, unsigned int start,
327 unsigned int nbits)
328{
329 if (__builtin_constant_p(nbits) && nbits == 1)
330 __clear_bit(start, map);
331 else
332 __bitmap_clear(map, start, nbits);
333}
334
318static inline void bitmap_shift_right(unsigned long *dst, const unsigned long *src, 335static inline void bitmap_shift_right(unsigned long *dst, const unsigned long *src,
319 unsigned int shift, int nbits) 336 unsigned int shift, int nbits)
320{ 337{