aboutsummaryrefslogtreecommitdiff
path: root/ext2fs/bitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext2fs/bitmap.c')
-rw-r--r--ext2fs/bitmap.c55
1 files changed, 9 insertions, 46 deletions
diff --git a/ext2fs/bitmap.c b/ext2fs/bitmap.c
index a983cab9..e512d011 100644
--- a/ext2fs/bitmap.c
+++ b/ext2fs/bitmap.c
@@ -18,6 +18,8 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+#define ffz(word) (ffs (~(unsigned int) (word)) - 1)
+
/*
* linux/fs/ext2/bitmap.c (&c)
*
@@ -29,12 +31,13 @@
static int nibblemap[] = {4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0};
+static inline
unsigned long count_free (char * map, unsigned int numchars)
{
unsigned int i;
unsigned long sum = 0;
-
- if (!map)
+
+ if (!map)
return (0);
for (i = 0; i < numchars; i++)
sum += nibblemap[map[i] & 0xf] +
@@ -44,31 +47,6 @@ unsigned long count_free (char * map, unsigned int numchars)
/* ---------------------------------------------------------------- */
-static int ffz_nibble_map[] = {0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4};
-
-inline unsigned long ffz(unsigned long word)
-{
- int offset = 0;
- if ((word & 0xFFFF) == 0xFFFF)
- {
- word >>= 16;
- offset += 16;
- }
- if ((word & 0xFF) == 0xFF)
- {
- word >>= 8;
- offset += 8;
- }
- if ((word & 0xF) == 0xF)
- {
- word >>= 4;
- offset += 4;
- }
- return ffz_nibble_map[word & 0xF] + offset;
-}
-
-/* ---------------------------------------------------------------- */
-
/*
* Copyright 1994, David S. Miller (davem@caip.rutgers.edu).
*/
@@ -78,7 +56,7 @@ inline unsigned long ffz(unsigned long word)
* on Linus's ALPHA routines, which are pretty portable BTW.
*/
-inline unsigned long
+static inline unsigned long
find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
{
unsigned long *p = ((unsigned long *) addr) + (offset >> 5);
@@ -89,7 +67,7 @@ find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
return size;
size -= result;
offset &= 31UL;
- if (offset)
+ if (offset)
{
tmp = *(p++);
tmp |= ~0UL >> (32-offset);
@@ -100,7 +78,7 @@ find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
size -= 32;
result += 32;
}
- while (size & ~31UL)
+ while (size & ~31UL)
{
if (~(tmp = *(p++)))
goto found_middle;
@@ -121,23 +99,8 @@ found_middle:
* holds on the Sparc as it does for the ALPHA.
*/
-inline int
+static inline int
find_first_zero_bit(void *buf, unsigned len)
{
return find_next_zero_bit(buf, len, 0);
}
-
-/* ---------------------------------------------------------------- */
-
-/* Returns a pointer to the first occurence of CH in the buffer BUF of len
- LEN, or BUF + LEN if CH doesn't occur. */
-void *memscan(void *buf, unsigned char ch, unsigned len)
-{
- unsigned char *p = (unsigned char *)buf;
- while (len-- > 0)
- if (*p == ch)
- break;
- else
- p++;
- return (void *)p;
-}