Luna::bit_test
bool bit_test(const void *base_addr, usize bit_offset)
Tests if specified bit is 1.
Parameters
-
in base_addr
The address of the bit to offset from.
-
in bit_offset
The number of bits shifted from the
base_addr
.
Return value
Returns true
if the bit is 1, false
if the bit is 0.
Remark
The following cases demonstrate the index order of bit_test
, bit_set
and bit_reset
.
base_addr: 0x1000, bit_offset: 0, *((u8*)0x1000)
: 0000 1000b* test result: false.
-
value of
*((u8*)0x1000)
after set: 0000 1001b -
value of
*((u8*)0x1000)
after reset: 0000 1000b.
base_addr: 0x1000, bit_offset: 3, *((u8*)0x1000)
: 0000 1000b* test result: true.
-
value of
*((u8*)0x1000)
after set: 0000 1000b -
value of
*((u8*)0x1000)
after reset: 0000 0000b.
base_addr: 0x1000, bit_offset: 8, *((u8*)0x1001)
: 0000 1000b* test result: false.
-
value of
*((u8*)0x1001)
after set: 0000 1001b -
value of
*((u8*)0x1001)
after reset: 0000 1000b.
base_addr: 0x1000, bit_offset: 11, *((u8*)0x1001)
: 0000 1000b* test result: true.
-
value of
*((u8*)0x1001)
after set: 0000 1000b -
value of
*((u8*)0x1001)
after reset: 0000 0000b.