crash.types.bitmap module¶
The crash.types.bitmap module provides helpers for iterating and scanning in-memory bitmaps.
A bitmap is represented as either an array of unsigned long or as
unsigned long *. Each routine below that accepts a gdb.Value
requires that it be of either type.
- crash.types.bitmap.find_first_set_bit(bitmap: Value, size_in_bytes: int = None) int[source]¶
Return the first set bit in the bitmap
- crash.types.bitmap.find_first_zero_bit(bitmap: Value, size_in_bytes: int = None) int[source]¶
Return the first unset bit in the bitmap
- Parameters:
bitmap – The bitmap to scan.
start – The bit number to use as a starting position. If the bit at this position is unset, it will be the first bit number yielded.
- Returns:
The position of the first bit that is unset
- Return type:
int- Raises:
.InvalidArgumentError – The
gdb.Valueis not of typeunsigned long[]orunsigned long *.
- crash.types.bitmap.find_last_set_bit(bitmap: Value, size_in_bytes: int = None) int[source]¶
Return the last set bit in the bitmap
- crash.types.bitmap.find_next_set_bit(bitmap: Value, start: int, size_in_bytes: int = None) int[source]¶
Return the next set bit in the bitmap starting at position start, inclusive.
- Parameters:
bitmap – The bitmap to scan.
start – The bit number to use as a starting position. If the bit at this position is unset, it will be the first bit number yielded.
size_in_bytes – The size of the bitmap if the type is
unsigned long *.
- Returns:
The position of the next bit that is set, or
0if all are unset- Return type:
int- Raises:
.InvalidArgumentError – The
gdb.Valueis not of typeunsigned long[]orunsigned long *.
- crash.types.bitmap.find_next_zero_bit(bitmap: Value, start: int, size_in_bytes: int = None) int[source]¶
Return the next unset bit in the bitmap starting at position start, inclusive.
- Parameters:
bitmap – The bitmap to scan.
start – The bit number to use as a starting position. If the bit at this position is unset, it will be the first bit number yielded.
size_in_bytes – The size of the bitmap if the type is
unsigned long *.
- Returns:
The position of the first bit that is unset or
0if all are set- Return type:
int- Raises:
.InvalidArgumentError – The
gdb.Valueis not of typeunsigned long[]orunsigned long *.
- crash.types.bitmap.for_each_set_bit(bitmap: Value, size_in_bytes: int = None) Iterable[int][source]¶
Yield each set bit in a bitmap
- crash.types.bitmap.test_bit(bitmap: Value, bit: int, size_in_bytes: int = None) bool[source]¶
Test a bit in a bitmap. Unlike the
findfamily of functions, the index starts at 0.- Parameters:
bitmap – The bitmap to use for testing
bit – The bit in the bitmap to test, starting at offset 0
size_in_bytes (optional, default = None) – The size of the bitmap if a pointer is used.
- Returns:
Whether the bit is set or not
- Return type:
bool- Raises:
.InvalidArgumentError – The
gdb.Valueis not of typeunsigned long[]orunsigned long *.