Skip to content

Commit

Permalink
Introduce range.h
Browse files Browse the repository at this point in the history
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 <blauwirbel@gmail.com>
  • Loading branch information
blueswirl committed Sep 18, 2010
1 parent f562e71 commit bf1b007
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 31 deletions.
1 change: 1 addition & 0 deletions hw/acpi_piix4.c
Expand Up @@ -22,6 +22,7 @@
#include "pci.h"
#include "acpi.h"
#include "sysemu.h"
#include "range.h"

//#define DEBUG

Expand Down
1 change: 1 addition & 0 deletions hw/msix.c
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions hw/pci.c
Expand Up @@ -28,6 +28,7 @@
#include "sysemu.h"
#include "loader.h"
#include "qemu-objects.h"
#include "range.h"

//#define DEBUG_PCI
#ifdef DEBUG_PCI
Expand Down
29 changes: 0 additions & 29 deletions hw/pci.h
Expand Up @@ -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
1 change: 1 addition & 0 deletions hw/piix_pci.c
Expand Up @@ -28,6 +28,7 @@
#include "pci_host.h"
#include "isa.h"
#include "sysbus.h"
#include "range.h"

/*
* I440FX chipset data sheet.
Expand Down
3 changes: 1 addition & 2 deletions hw/vhost.c
Expand Up @@ -13,8 +13,7 @@
#include <sys/ioctl.h>
#include "vhost.h"
#include "hw/hw.h"
/* For range_get_last */
#include "pci.h"
#include "range.h"
#include <linux/vhost.h>

static void vhost_dev_sync_region(struct vhost_dev *dev,
Expand Down
29 changes: 29 additions & 0 deletions 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

0 comments on commit bf1b007

Please sign in to comment.