at v2.6.21 28 lines 565 B view raw
1#include <linux/module.h> 2#include <linux/bitops.h> 3 4/* Find string of zero bits in a bitmap */ 5unsigned long 6find_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 28EXPORT_SYMBOL(find_next_zero_string);