From patchwork Sun Aug 15 19:27:16 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1/7] pci: add range_covers_range() From: Eduard - Gabriel Munteanu X-Patchwork-Id: 61765 Message-Id: <1281900442-29971-2-git-send-email-eduard.munteanu@linux360.ro> To: joro@8bytes.org Cc: kvm@vger.kernel.org, qemu-devel@nongnu.org, blauwirbel@gmail.com, paul@codesourcery.com, Eduard - Gabriel Munteanu , avi@redhat.com Date: Sun, 15 Aug 2010 22:27:16 +0300 This helper function allows map invalidation code to determine which maps must be invalidated. Signed-off-by: Eduard - Gabriel Munteanu --- hw/pci.h | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/hw/pci.h b/hw/pci.h index 4bd8a1a..5a6cdb5 100644 --- a/hw/pci.h +++ b/hw/pci.h @@ -419,6 +419,16 @@ static inline int range_covers_byte(uint64_t offset, uint64_t len, return offset <= byte && byte <= range_get_last(offset, len); } +/* Check whether a given range completely covers another. */ +static inline int range_covers_range(uint64_t first_big, uint64_t len_big, + uint64_t first_small, uint64_t len_small) +{ + uint64_t last_big = range_get_last(first_big, len_big); + uint64_t last_small = range_get_last(first_small, len_small); + + return first_big <= first_small && last_small <= last_big; +} + /* Check whether 2 given ranges overlap. * Undefined if ranges that wrap around 0. */ static inline int ranges_overlap(uint64_t first1, uint64_t len1,