mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
libxl: use COMPARE_PCI() macro is_pci_in_array()...
... 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@amazon.com>
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Acked-by: Wei Liu <wl@xen.org>
This commit is contained in:
1 parent
c00da82355
commit
413fd4e4e9
2 files changed
+17
-28
No files matched your search
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||