Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #include <linux/module.h> |
| 2 | #include <linux/bitops.h> |
| 3 | |
| 4 | /* Find string of zero bits in a bitmap */ |
| 5 | unsigned long |
| 6 | find_next_zero_string(unsigned long *bitmap, long start, long nbits, int len) |
| 7 | { |
| 8 | unsigned long n, end, i; |
| 9 | |
| 10 | again: |
| 11 | n = find_next_zero_bit(bitmap, nbits, start); |
| 12 | if (n == -1) |
| 13 | return -1; |
| 14 | |
| 15 | /* could test bitsliced, but it's hardly worth it */ |
| 16 | end = n+len; |
| 17 | if (end >= nbits) |
| 18 | return -1; |
| 19 | for (i = n+1; i < end; i++) { |
| 20 | if (test_bit(i, bitmap)) { |
| 21 | start = i+1; |
| 22 | goto again; |
| 23 | } |
| 24 | } |
| 25 | return n; |
| 26 | } |
| 27 | |
| 28 | EXPORT_SYMBOL(find_next_zero_string); |