File:  [Qemu by Fabrice Bellard] / qemu / range.h
Revision 1.1: download - view: text, annotated - select for diffs
Tue Apr 24 18:34:22 2018 UTC (3 years, 5 months ago) by root
CVS tags: MAIN, HEAD
Initial revision

    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

unix.superglobalmegacorp.com