root / range.h @ a8a00822
History | View | Annotate | Download (867 Bytes)
1 |
#ifndef QEMU_RANGE_H
|
---|---|
2 |
#define QEMU_RANGE_H
|
3 |
|
4 |
/* Get last byte of a range from offset + length.
|
5 |
* Undefined for ranges that wrap around 0. */
|
6 |
static inline uint64_t range_get_last(uint64_t offset, uint64_t len) |
7 |
{ |
8 |
return offset + len - 1; |
9 |
} |
10 |
|
11 |
/* Check whether a given range covers a given byte. */
|
12 |
static inline int range_covers_byte(uint64_t offset, uint64_t len, |
13 |
uint64_t byte) |
14 |
{ |
15 |
return offset <= byte && byte <= range_get_last(offset, len);
|
16 |
} |
17 |
|
18 |
/* Check whether 2 given ranges overlap.
|
19 |
* Undefined if ranges that wrap around 0. */
|
20 |
static inline int ranges_overlap(uint64_t first1, uint64_t len1, |
21 |
uint64_t first2, uint64_t len2) |
22 |
{ |
23 |
uint64_t last1 = range_get_last(first1, len1); |
24 |
uint64_t last2 = range_get_last(first2, len2); |
25 |
|
26 |
return !(last2 < first1 || last1 < first2);
|
27 |
} |
28 |
|
29 |
#endif
|