bitstr_64.c 565 B

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