blob: 22819150d1465de54491f6ff566f0dcff5008091 [file] [log] [blame]
#ifndef LINUX__FIND_H
#define LINUX__FIND_H
#include <stddef.h>
#include "linux/bitops.h"
#include "linux/bits.h"
unsigned long _find_next_bit(const unsigned long *addr1,
const unsigned long *addr2, unsigned long nbits,
unsigned long start, unsigned long invert);
static inline
unsigned long find_next_bit(const unsigned long *addr, unsigned long size,
unsigned long offset)
{
if (size >= 0 && size <= BITS_PER_LONG) {
unsigned long val;
if (offset >= size)
return size;
val = *addr & GENMASK(size - 1, offset);
return val ? (unsigned long)__builtin_ctzl(val) : size;
}
return _find_next_bit(addr, NULL, size, offset, 0);
}
#endif /* LINUX__FIND_H */