qemu/include/qemu/range.h
<<
>>
Prefs
   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. */
   6static 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. */
  12static 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. */
  20static 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
  30