| #include <linux/module.h> |
| #include <linux/bitops.h> |
| |
| /* Find string of zero bits in a bitmap */ |
| unsigned long |
| find_next_zero_string(unsigned long *bitmap, long start, long nbits, int len) |
| { |
| unsigned long n, end, i; |
| |
| again: |
| n = find_next_zero_bit(bitmap, nbits, start); |
| if (n == -1) |
| return -1; |
| |
| /* could test bitsliced, but it's hardly worth it */ |
| end = n+len; |
| if (end >= nbits) |
| return -1; |
| for (i = n+1; i < end; i++) { |
| if (test_bit(i, bitmap)) { |
| start = i+1; |
| goto again; |
| } |
| } |
| return n; |
| } |
| |
| EXPORT_SYMBOL(find_next_zero_string); |