|
@@ -112,9 +112,8 @@ extern int __bitmap_intersects(const unsigned long *bitmap1,
|
|
|
extern int __bitmap_subset(const unsigned long *bitmap1,
|
|
|
const unsigned long *bitmap2, unsigned int nbits);
|
|
|
extern int __bitmap_weight(const unsigned long *bitmap, unsigned int nbits);
|
|
|
-
|
|
|
-extern void bitmap_set(unsigned long *map, unsigned int start, int len);
|
|
|
-extern void bitmap_clear(unsigned long *map, unsigned int start, int len);
|
|
|
+extern void __bitmap_set(unsigned long *map, unsigned int start, int len);
|
|
|
+extern void __bitmap_clear(unsigned long *map, unsigned int start, int len);
|
|
|
|
|
|
extern unsigned long bitmap_find_next_zero_area_off(unsigned long *map,
|
|
|
unsigned long size,
|
|
@@ -315,6 +314,24 @@ static __always_inline int bitmap_weight(const unsigned long *src, unsigned int
|
|
|
return __bitmap_weight(src, nbits);
|
|
|
}
|
|
|
|
|
|
+static __always_inline void bitmap_set(unsigned long *map, unsigned int start,
|
|
|
+ unsigned int nbits)
|
|
|
+{
|
|
|
+ if (__builtin_constant_p(nbits) && nbits == 1)
|
|
|
+ __set_bit(start, map);
|
|
|
+ else
|
|
|
+ __bitmap_set(map, start, nbits);
|
|
|
+}
|
|
|
+
|
|
|
+static __always_inline void bitmap_clear(unsigned long *map, unsigned int start,
|
|
|
+ unsigned int nbits)
|
|
|
+{
|
|
|
+ if (__builtin_constant_p(nbits) && nbits == 1)
|
|
|
+ __clear_bit(start, map);
|
|
|
+ else
|
|
|
+ __bitmap_clear(map, start, nbits);
|
|
|
+}
|
|
|
+
|
|
|
static inline void bitmap_shift_right(unsigned long *dst, const unsigned long *src,
|
|
|
unsigned int shift, int nbits)
|
|
|
{
|