#ifndef QEMU_RANGE_H #define QEMU_RANGE_H /* Get last byte of a range from offset + length. * Undefined for ranges that wrap around 0. */ static inline uint64_t range_get_last(uint64_t offset, uint64_t len) { return offset + len - 1; } /* Check whether a given range covers a given byte. */ static inline int range_covers_byte(uint64_t offset, uint64_t len, uint64_t byte) { return offset <= byte && byte <= range_get_last(offset, len); } /* Check whether 2 given ranges overlap. * Undefined if ranges that wrap around 0. */ static inline int ranges_overlap(uint64_t first1, uint64_t len1, uint64_t first2, uint64_t len2) { uint64_t last1 = range_get_last(first1, len1); uint64_t last2 = range_get_last(first2, len2); return !(last2 < first1 || last1 < first2); } #endif