sparse: move bitops functions to include/misc.h

The bitops functions were declared as 'extern inline' in include/misc.h but
weren't actually defined there. They were also defined as inline in
lib/misc.c, which can't actually happen if they're used elsewhere.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
This commit is contained in:
Jeff Mahoney committed 2013-08-26 19:00:03 -04:00
1 parent a1623ca6b3
commit dd29f49a6c
2 files changed
+132 -147

No files matched your search

-135
View File
@@ -813,141 +813,6 @@ void clean_after_dma_check(int fd, dma_info_t *dma_info)
close(dma_info->fd);
}
/* Only le bitops operations are used. */
inline int misc_set_bit(unsigned long long nr, void *addr)
{
__u8 *p, mask;
int retval;
p = (__u8 *) addr;
p += nr >> 3;
mask = 1 << (nr & 0x7);
/*cli(); */
retval = (mask & *p) != 0;
*p |= mask;
/*sti(); */
return retval;
}
inline int misc_clear_bit(unsigned long long nr, void *addr)
{
__u8 *p, mask;
int retval;
p = (__u8 *) addr;
p += nr >> 3;
mask = 1 << (nr & 0x7);
/*cli(); */
retval = (mask & *p) != 0;
*p &= ~mask;
/*sti(); */
return retval;
}
inline int misc_test_bit(unsigned long long nr, const void *addr)
{
__u8 *p, mask;
p = (__u8 *) addr;
p += nr >> 3;
mask = 1 << (nr & 0x7);
return ((mask & *p) != 0);
}
inline unsigned long long misc_find_first_zero_bit(const void *vaddr,
unsigned long long size)
{
const __u8 *p = vaddr, *addr = vaddr;
unsigned long long res;
if (!size)
return 0;
size = (size >> 3) + ((size & 0x7) > 0);
while (*p++ == 255) {
if (--size == 0)
return (unsigned long long)(p - addr) << 3;
}
--p;
for (res = 0; res < 8; res++)
if (!misc_test_bit(res, p))
break;
return res + (p - addr) * 8;
}
inline unsigned long long misc_find_next_zero_bit(const void *vaddr,
unsigned long long size,
unsigned long long offset)
{
const __u8 *addr = vaddr;
const __u8 *p = addr + (offset >> 3);
int bit = offset & 7;
unsigned long long res;
if (offset >= size)
return size;
if (bit) {
/* Look for zero in first char */
for (res = bit; res < 8; res++)
if (!misc_test_bit(res, p))
return res + (p - addr) * 8;
p++;
}
/* No zero yet, search remaining full bytes for a zero */
res = misc_find_first_zero_bit(p, size - 8 * (p - addr));
return res + (p - addr) * 8;
}
inline unsigned long long misc_find_first_set_bit(const void *vaddr,
unsigned long long size)
{
const __u8 *p = vaddr, *addr = vaddr;
unsigned long long res;
if (!size)
return 0;
size = (size >> 3) + ((size & 0x7) > 0);
while (*p++ == 0) {
if (--size == 0)
return (unsigned long long)(p - addr) << 3;
}
--p;
for (res = 0; res < 8; res++)
if (misc_test_bit(res, p))
break;
return res + (p - addr) * 8;
}
inline unsigned long long misc_find_next_set_bit(const void *vaddr,
unsigned long long size,
unsigned long long offset)
{
const __u8 *addr = vaddr;
const __u8 *p = addr + (offset >> 3);
int bit = offset & 7;
unsigned long long res;
if (offset >= size)
return size;
if (bit) {
/* Look for zero in first char */
for (res = bit; res < 8; res++)
if (misc_test_bit(res, p))
return res + (p - addr) * 8;
p++;
}
/* No set bit yet, search remaining full bytes for a 1 */
res = misc_find_first_set_bit(p, size - 8 * (p - addr));
return res + (p - addr) * 8;
}
int user_confirmed(FILE * fp, char *q, char *yes)
{
char *answer = 0;