Statistics
| Branch: | Revision:

root / range.h @ a74cdab4

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