Skip to content

Commit

Permalink
KVM: introduce __kvm_io_bus_sort_cmp
Browse files Browse the repository at this point in the history
kvm_io_bus_sort_cmp is used also directly, not just as a callback for
sort and bsearch.  In these cases, it is handy to have a type-safe
variant.  This patch introduces such a variant, __kvm_io_bus_sort_cmp,
and uses it throughout kvm_main.c.

Signed-off-by: Paolo Bonzini <[email protected]>
  • Loading branch information
bonzini committed Jul 29, 2013
1 parent 9576c4c commit a343c9b
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions virt/kvm/kvm_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2815,18 +2815,21 @@ static void kvm_io_bus_destroy(struct kvm_io_bus *bus)
kfree(bus);
}

static int kvm_io_bus_sort_cmp(const void *p1, const void *p2)
static inline int __kvm_io_bus_sort_cmp(const struct kvm_io_range *r1,
const struct kvm_io_range *r2)
{
const struct kvm_io_range *r1 = p1;
const struct kvm_io_range *r2 = p2;

if (r1->addr < r2->addr)
return -1;
if (r1->addr + r1->len > r2->addr + r2->len)
return 1;
return 0;
}

static int kvm_io_bus_sort_cmp(const void *p1, const void *p2)
{
return __kvm_io_bus_sort_cmp(p1, p2);
}

static int kvm_io_bus_insert_dev(struct kvm_io_bus *bus, struct kvm_io_device *dev,
gpa_t addr, int len)
{
Expand Down Expand Up @@ -2860,7 +2863,7 @@ static int kvm_io_bus_get_first_dev(struct kvm_io_bus *bus,

off = range - bus->range;

while (off > 0 && kvm_io_bus_sort_cmp(&key, &bus->range[off-1]) == 0)
while (off > 0 && __kvm_io_bus_sort_cmp(&key, &bus->range[off-1]) == 0)
off--;

return off;
Expand All @@ -2876,7 +2879,7 @@ static int __kvm_io_bus_write(struct kvm_io_bus *bus,
return -EOPNOTSUPP;

while (idx < bus->dev_count &&
kvm_io_bus_sort_cmp(range, &bus->range[idx]) == 0) {
__kvm_io_bus_sort_cmp(range, &bus->range[idx]) == 0) {
if (!kvm_iodevice_write(bus->range[idx].dev, range->addr,
range->len, val))
return idx;
Expand Down Expand Up @@ -2920,7 +2923,7 @@ int kvm_io_bus_write_cookie(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,

/* First try the device referenced by cookie. */
if ((cookie >= 0) && (cookie < bus->dev_count) &&
(kvm_io_bus_sort_cmp(&range, &bus->range[cookie]) == 0))
(__kvm_io_bus_sort_cmp(&range, &bus->range[cookie]) == 0))
if (!kvm_iodevice_write(bus->range[cookie].dev, addr, len,
val))
return cookie;
Expand All @@ -2942,7 +2945,7 @@ static int __kvm_io_bus_read(struct kvm_io_bus *bus, struct kvm_io_range *range,
return -EOPNOTSUPP;

while (idx < bus->dev_count &&
kvm_io_bus_sort_cmp(range, &bus->range[idx]) == 0) {
__kvm_io_bus_sort_cmp(range, &bus->range[idx]) == 0) {
if (!kvm_iodevice_read(bus->range[idx].dev, range->addr,
range->len, val))
return idx;
Expand Down Expand Up @@ -2986,7 +2989,7 @@ int kvm_io_bus_read_cookie(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,

/* First try the device referenced by cookie. */
if ((cookie >= 0) && (cookie < bus->dev_count) &&
(kvm_io_bus_sort_cmp(&range, &bus->range[cookie]) == 0))
(__kvm_io_bus_sort_cmp(&range, &bus->range[cookie]) == 0))
if (!kvm_iodevice_read(bus->range[cookie].dev, addr, len,
val))
return cookie;
Expand Down

0 comments on commit a343c9b

Please sign in to comment.