6 * The bit opts function from Extprogs lib
11 * Set the bit and return it's original value
13 int set_bit(void * addr
, unsigned int nr
)
16 unsigned char *ADDR
= (unsigned char *) addr
;
19 mask
= 1 << (nr
& 0x07);
20 retval
= mask
& *ADDR
;
26 * Clear the bit and return it's original value
28 int clear_bit(void * addr
, unsigned int nr
)
31 unsigned char *ADDR
= (unsigned char *) addr
;
34 mask
= 1 << (nr
& 0x07);
35 retval
= mask
& *ADDR
;
40 int test_bit(const void * addr
, unsigned int nr
)
43 const unsigned char *ADDR
= (const unsigned char *) addr
;
46 mask
= 1 << (nr
& 0x07);
47 return (mask
& *ADDR
);
50 unsigned long find_first_zero(void *buf
, void *end
)
52 unsigned long *p
= (unsigned long *)buf
;
53 unsigned long block
= 0;
56 while (*p
== 0xffffffff && (void *)p
< end
) {
63 for (i
= 0; i
< 32; i
++)
64 if (test_bit(p
, i
) == 0)
67 /* Just to avoid the compile warning message */