aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMichal Nazarewicz <mina86@mina86.com>2010-12-15 21:34:22 +0100
committerMister Oyster <oysterized@gmail.com>2017-04-11 10:59:31 +0200
commit5d971ca7009e31a3c769121430a8da7c0c2dc5c0 (patch)
tree44bb4079309f24df518feac9a932a8776ed64336 /include
parent8c274dca44a65a072fed8e9653adc20d11b03c8e (diff)
lib: add bitmap_find_next_zero_area_off()
This commit adds a bitmap_find_next_zero_area_off() function which works like bitmap_find_next_zero_area() function expect it allows an offset to be specified when alignment is checked. This lets caller request a bit such that its number plus the offset is aligned according to the mask. Change-Id: Ib0593cf578ed69ba4c51b1e102a1f8ea1aeb93e8 Signed-off-by: Michal Nazarewicz <mina86@mina86.com> Signed-off-by: Larry Bassel <lbassel@codeaurora.org> (cherry picked from commit 5f2929128ae4db1a6577748c72437f102ed400a5)
Diffstat (limited to 'include')
-rw-r--r--include/linux/bitmap.h24
1 files changed, 19 insertions, 5 deletions
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h
index ad2c67d35..60cc259f3 100644
--- a/include/linux/bitmap.h
+++ b/include/linux/bitmap.h
@@ -45,6 +45,7 @@
* bitmap_set(dst, pos, nbits) Set specified bit area
* bitmap_clear(dst, pos, nbits) Clear specified bit area
* bitmap_find_next_zero_area(buf, len, pos, n, mask) Find bit free area
+ * bitmap_find_next_zero_area_off(buf, len, pos, n, mask) as above
* bitmap_shift_right(dst, src, n, nbits) *dst = *src >> n
* bitmap_shift_left(dst, src, n, nbits) *dst = *src << n
* bitmap_remap(dst, src, old, new, nbits) *dst = map(old, new)(src)
@@ -114,11 +115,24 @@ 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, int start, int nr);
-extern unsigned long bitmap_find_next_zero_area(unsigned long *map,
- unsigned long size,
- unsigned long start,
- unsigned int nr,
- unsigned long align_mask);
+
+extern unsigned long bitmap_find_next_zero_area_off(unsigned long *map,
+ unsigned long size,
+ unsigned long start,
+ unsigned int nr,
+ unsigned long align_mask,
+ unsigned long align_offset);
+
+static inline unsigned long
+bitmap_find_next_zero_area(unsigned long *map,
+ unsigned long size,
+ unsigned long start,
+ unsigned int nr,
+ unsigned long align_mask)
+{
+ return bitmap_find_next_zero_area_off(map, size, start, nr,
+ align_mask, 0);
+}
extern int bitmap_scnprintf(char *buf, unsigned int len,
const unsigned long *src, int nbits);