|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v6 14/25] libxl: use COMPARE_PCI() macro is_pci_in_array()...
From: Paul Durrant <pdurrant@xxxxxxxxxx>
... rather than an open-coded equivalent.
This patch tidies up the is_pci_in_array() function, making it take a single
'libxl_device_pci' argument rather than separate domain, bus, device and
function arguments. The already-available COMPARE_PCI() macro can then be
used and it is also modified to return 'bool' rather than 'int'.
The patch also modifies libxl_pci_assignable() to use is_pci_in_array() rather
than a separate open-coded equivalent, and also modifies it to return a
'bool' rather than an 'int'.
NOTE: The COMPARE_PCI() macro is also fixed to include the 'domain' in its
comparison, which should always have been the case.
Signed-off-by: Paul Durrant <pdurrant@xxxxxxxxxx>
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx>
Acked-by: Wei Liu <wl@xxxxxxx>
---
Cc: Ian Jackson <iwj@xxxxxxxxxxxxxx>
---
tools/libs/light/libxl_internal.h | 7 +++---
tools/libs/light/libxl_pci.c | 38 +++++++++++--------------------
2 files changed, 17 insertions(+), 28 deletions(-)
diff --git a/tools/libs/light/libxl_internal.h
b/tools/libs/light/libxl_internal.h
index d0c23def3c3e..c79523ba9248 100644
--- a/tools/libs/light/libxl_internal.h
+++ b/tools/libs/light/libxl_internal.h
@@ -4746,9 +4746,10 @@ void libxl__xcinfo2xlinfo(libxl_ctx *ctx,
* devices have same identifier. */
#define COMPARE_DEVID(a, b) ((a)->devid == (b)->devid)
#define COMPARE_DISK(a, b) (!strcmp((a)->vdev, (b)->vdev))
-#define COMPARE_PCI(a, b) ((a)->func == (b)->func && \
- (a)->bus == (b)->bus && \
- (a)->dev == (b)->dev)
+#define COMPARE_PCI(a, b) ((a)->domain == (b)->domain && \
+ (a)->bus == (b)->bus && \
+ (a)->dev == (b)->dev && \
+ (a)->func == (b)->func)
#define COMPARE_USB(a, b) ((a)->ctrl == (b)->ctrl && \
(a)->port == (b)->port)
#define COMPARE_USBCTRL(a, b) ((a)->devid == (b)->devid)
diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
index 2a594e432855..74c2196ae339 100644
--- a/tools/libs/light/libxl_pci.c
+++ b/tools/libs/light/libxl_pci.c
@@ -336,24 +336,17 @@ retry_transaction2:
return 0;
}
-static int is_pci_in_array(libxl_device_pci *assigned, int num_assigned,
- int dom, int bus, int dev, int func)
+static bool is_pci_in_array(libxl_device_pci *pcis, int num,
+ libxl_device_pci *pci)
{
int i;
- for(i = 0; i < num_assigned; i++) {
- if ( assigned[i].domain != dom )
- continue;
- if ( assigned[i].bus != bus )
- continue;
- if ( assigned[i].dev != dev )
- continue;
- if ( assigned[i].func != func )
- continue;
- return 1;
+ for (i = 0; i < num; i++) {
+ if (COMPARE_PCI(pci, &pcis[i]))
+ break;
}
- return 0;
+ return i < num;
}
/* Write the standard BDF into the sysfs path given by sysfs_path. */
@@ -1487,21 +1480,17 @@ int libxl_device_pci_add(libxl_ctx *ctx, uint32_t domid,
return AO_INPROGRESS;
}
-static int libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
+static bool libxl_pci_assignable(libxl_ctx *ctx, libxl_device_pci *pci)
{
libxl_device_pci *pcis;
- int num, i;
+ int num;
+ bool assignable;
pcis = libxl_device_pci_assignable_list(ctx, &num);
- for (i = 0; i < num; i++) {
- if (pcis[i].domain == pci->domain &&
- pcis[i].bus == pci->bus &&
- pcis[i].dev == pci->dev &&
- pcis[i].func == pci->func)
- break;
- }
+ assignable = is_pci_in_array(pcis, num, pci);
libxl_device_pci_assignable_list_free(pcis, num);
- return i != num;
+
+ return assignable;
}
static void device_pci_add_stubdom_wait(libxl__egc *egc,
@@ -1834,8 +1823,7 @@ static void do_pci_remove(libxl__egc *egc,
pci_remove_state *prs)
goto out_fail;
}
- attached = is_pci_in_array(pcis, num, pci->domain,
- pci->bus, pci->dev, pci->func);
+ attached = is_pci_in_array(pcis, num, pci);
libxl_device_pci_list_free(pcis, num);
rc = ERROR_INVAL;
--
2.20.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |