From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=47738 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OuAgo-0001Fh-5M for qemu-devel@nongnu.org; Fri, 10 Sep 2010 16:59:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OuAgk-0001Wh-OD for qemu-devel@nongnu.org; Fri, 10 Sep 2010 16:59:15 -0400 Received: from mail-qy0-f180.google.com ([209.85.216.180]:36286) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OuAgk-0001SO-Kl for qemu-devel@nongnu.org; Fri, 10 Sep 2010 16:59:14 -0400 Received: by mail-qy0-f180.google.com with SMTP id 31so3304598qyk.4 for ; Fri, 10 Sep 2010 13:59:14 -0700 (PDT) MIME-Version: 1.0 From: Blue Swirl Date: Fri, 10 Sep 2010 20:58:53 +0000 Message-ID: Content-Type: text/plain; charset=UTF-8 Subject: [Qemu-devel] [PATCH 05/15] Introduce range.h List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel Extract range functions from pci.h. These will be used by later patches by non-PCI devices. Adjust current users. Signed-off-by: Blue Swirl --- hw/acpi_piix4.c | 1 + hw/msix.c | 1 + hw/pci.c | 1 + hw/pci.h | 29 ----------------------------- hw/piix_pci.c | 1 + hw/vhost.c | 3 +-- range.h | 29 +++++++++++++++++++++++++++++ 7 files changed, 34 insertions(+), 31 deletions(-) create mode 100644 range.h diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c index bfa1d9a..c8733e5 100644 --- a/hw/acpi_piix4.c +++ b/hw/acpi_piix4.c @@ -22,6 +22,7 @@ #include "pci.h" #include "acpi.h" #include "sysemu.h" +#include "range.h" //#define DEBUG diff --git a/hw/msix.c b/hw/msix.c index d99403a..b3bb92d 100644 --- a/hw/msix.c +++ b/hw/msix.c @@ -14,6 +14,7 @@ #include "hw.h" #include "msix.h" #include "pci.h" +#include "range.h" /* MSI-X capability structure */ #define MSIX_TABLE_OFFSET 4 diff --git a/hw/pci.c b/hw/pci.c index a98d6f3..6d0934d 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -28,6 +28,7 @@ #include "sysemu.h" #include "loader.h" #include "qemu-objects.h" +#include "range.h" //#define DEBUG_PCI #ifdef DEBUG_PCI diff --git a/hw/pci.h b/hw/pci.h index 1eab7e7..3d23f03 100644 --- a/hw/pci.h +++ b/hw/pci.h @@ -365,33 +365,4 @@ static inline uint32_t pci_config_size(const PCIDevice *d) return pci_is_express(d) ? PCIE_CONFIG_SPACE_SIZE : PCI_CONFIG_SPACE_SIZE; } -/* These are not pci specific. Should move into a separate header. - * Only pci.c uses them, so keep them here for now. - */ - -/* 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 diff --git a/hw/piix_pci.c b/hw/piix_pci.c index f152a0f..b5589b9 100644 --- a/hw/piix_pci.c +++ b/hw/piix_pci.c @@ -28,6 +28,7 @@ #include "pci_host.h" #include "isa.h" #include "sysbus.h" +#include "range.h" /* * I440FX chipset data sheet. diff --git a/hw/vhost.c b/hw/vhost.c index 34c4745..1b8624d 100644 --- a/hw/vhost.c +++ b/hw/vhost.c @@ -13,8 +13,7 @@ #include #include "vhost.h" #include "hw/hw.h" -/* For range_get_last */ -#include "pci.h" +#include "range.h" #include static void vhost_dev_sync_region(struct vhost_dev *dev, diff --git a/range.h b/range.h new file mode 100644 index 0000000..3502372 --- /dev/null +++ b/range.h @@ -0,0 +1,29 @@ +#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 -- 1.6.2.4