[libvirt] [PATCH 1/6 v2] Prerequisite Patch. virDomainDevicePCIAddress and respective functions moved to a new file called conf/device_conf.ch
Osier Yang
jyang at redhat.com
Wed Jun 27 13:18:25 UTC 2012
On 2012年06月25日 19:35, Shradha Shah wrote:
> Refactoring existing code without causing any functional changes to prepare for new code.
> This patch makes the code reusable.
>
> Signed-off-by: Shradha Shah<sshah at solarflare.com>
> ---
> src/Makefile.am | 7 ++-
> src/conf/device_conf.c | 135 ++++++++++++++++++++++++++++++++++++++++++
> src/conf/device_conf.h | 65 ++++++++++++++++++++
> src/conf/domain_conf.c | 114 ++++-------------------------------
> src/conf/domain_conf.h | 25 +-------
> src/libvirt_private.syms | 10 ++-
> src/qemu/qemu_command.c | 13 ++--
> src/qemu/qemu_hotplug.c | 7 +-
> src/qemu/qemu_monitor.c | 14 ++--
> src/qemu/qemu_monitor.h | 17 +++---
> src/qemu/qemu_monitor_json.c | 14 ++--
> src/qemu/qemu_monitor_json.h | 14 ++--
> src/qemu/qemu_monitor_text.c | 16 +++---
> src/qemu/qemu_monitor_text.h | 14 ++--
> src/xen/xend_internal.c | 3 +-
> 15 files changed, 288 insertions(+), 180 deletions(-)
>
> diff --git a/src/Makefile.am b/src/Makefile.am
> index e40909b..009c4e5 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -199,6 +199,9 @@ CONSOLE_CONF_SOURCES = \
> DOMAIN_LIST_SOURCES = \
> conf/virdomainlist.c conf/virdomainlist.h
>
> +DEVICE_CONF_SOURCES = \
> + conf/device_conf.c conf/device_conf.h
> +
> CONF_SOURCES = \
> $(NETDEV_CONF_SOURCES) \
> $(DOMAIN_CONF_SOURCES) \
> @@ -212,7 +215,8 @@ CONF_SOURCES = \
> $(SECRET_CONF_SOURCES) \
> $(CPU_CONF_SOURCES) \
> $(CONSOLE_CONF_SOURCES) \
> - $(DOMAIN_LIST_SOURCES)
> + $(DOMAIN_LIST_SOURCES) \
> + $(DEVICE_CONF_SOURCES)
>
> # The remote RPC driver, covering domains, storage, networks, etc
> REMOTE_DRIVER_GENERATED = \
> @@ -1525,6 +1529,7 @@ libvirt_lxc_SOURCES = \
> $(ENCRYPTION_CONF_SOURCES) \
> $(NETDEV_CONF_SOURCES) \
> $(DOMAIN_CONF_SOURCES) \
> + $(DEVICE_CONF_SOURCES) \
> $(SECRET_CONF_SOURCES) \
> $(CPU_CONF_SOURCES) \
> $(SECURITY_DRIVER_SOURCES) \
> diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c
> new file mode 100644
> index 0000000..af21aad
> --- /dev/null
> +++ b/src/conf/device_conf.c
> @@ -0,0 +1,135 @@
> +/*
> + * device_conf.h: device XML handling
> + *
> + * Copyright (C) 2006-2012 Red Hat, Inc.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> + *
> + * Author: Shradha Shah<sshah at solarflare.com>
> + */
> +
> +#include<config.h>
> +#include "virterror_internal.h"
> +#include "datatypes.h"
> +#include "memory.h"
> +#include "xml.h"
> +#include "uuid.h"
> +#include "util.h"
> +#include "buf.h"
> +#include "conf/device_conf.h"
> +
> +#define VIR_FROM_THIS VIR_FROM_DEVICE
VIR_FROM_DEVICE is not defined, and isn't it too big to
use 'device'? I see only pci device address parsing and
formating code actually. And most of the device conf codes
are in domain_conf.[ch].
> +
> +#define virDeviceReportError(code, ...) \
> + virReportErrorHelper(VIR_FROM_DOMAIN, code, __FILE__, \
Copy & Paste mistake (VIR_DOMAIN_DOMAIN)
I'm wondering if it's neccessary to refactor the codes like this.
As it just split the codes from domain_conf.[ch] into new files,
no more reusability as far as I can see. The only exception is the
new virDevicePCIAddressFormat, but it can be in domain_conf.[ch]
too. Any special reason you want to have 2 new files?
> + __FUNCTION__, __LINE__, __VA_ARGS__)
> +
> +VIR_ENUM_IMPL(virDeviceAddressPciMulti,
> + VIR_DEVICE_ADDRESS_PCI_MULTI_LAST,
> + "default",
> + "on",
> + "off")
> +
> +int virDevicePCIAddressIsValid(virDevicePCIAddressPtr addr)
> +{
> + /* PCI bus has 32 slots and 8 functions per slot */
> + if (addr->slot>= 32 || addr->function>= 8)
> + return 0;
> + return addr->domain || addr->bus || addr->slot;
> +}
> +
> +
> +int
> +virDevicePCIAddressParseXML(xmlNodePtr node,
> + virDevicePCIAddressPtr addr)
> +{
> + char *domain, *slot, *bus, *function, *multi;
> + int ret = -1;
> +
> + memset(addr, 0, sizeof(*addr));
> +
> + domain = virXMLPropString(node, "domain");
> + bus = virXMLPropString(node, "bus");
> + slot = virXMLPropString(node, "slot");
> + function = virXMLPropString(node, "function");
> + multi = virXMLPropString(node, "multifunction");
> +
> + if (domain&&
> + virStrToLong_ui(domain, NULL, 0,&addr->domain)< 0) {
> + virDeviceReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Cannot parse<address> 'domain' attribute"));
> + goto cleanup;
> + }
> +
> + if (bus&&
> + virStrToLong_ui(bus, NULL, 0,&addr->bus)< 0) {
> + virDeviceReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Cannot parse<address> 'bus' attribute"));
> + goto cleanup;
> + }
> +
> + if (slot&&
> + virStrToLong_ui(slot, NULL, 0,&addr->slot)< 0) {
> + virDeviceReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Cannot parse<address> 'slot' attribute"));
> + goto cleanup;
> + }
> +
> + if (function&&
> + virStrToLong_ui(function, NULL, 0,&addr->function)< 0) {
> + virDeviceReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Cannot parse<address> 'function' attribute"));
> + goto cleanup;
> + }
> +
> + if (multi&&
> + ((addr->multi = virDeviceAddressPciMultiTypeFromString(multi))<= 0)) {
> + virDeviceReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> + _("Unknown value '%s' for<address> 'multifunction' attribute"),
> + multi);
> + goto cleanup;
> +
> + }
> + if (!virDevicePCIAddressIsValid(addr)) {
> + virDeviceReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Insufficient specification for PCI address"));
> + goto cleanup;
> + }
> +
> + ret = 0;
> +
> +cleanup:
> + VIR_FREE(domain);
> + VIR_FREE(bus);
> + VIR_FREE(slot);
> + VIR_FREE(function);
> + VIR_FREE(multi);
> + return ret;
> +}
> +
> +int
> +virDevicePCIAddressFormat(virBufferPtr buf,
> + virDevicePCIAddress addr,
> + bool includeTypeInAddr)
> +{
> + virBufferAsprintf(buf, "<address %sdomain='0x%.4x' bus='0x%.2x' "
> + "slot='0x%.2x' function='0x%.1x'/>\n",
> + includeTypeInAddr ? "type='pci' " : "",
> + addr.domain,
> + addr.bus,
> + addr.slot,
> + addr.function);
> + return 0;
> +}
> diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h
> new file mode 100644
> index 0000000..b060798
> --- /dev/null
> +++ b/src/conf/device_conf.h
> @@ -0,0 +1,65 @@
> +/*
> + * device_conf.h: device XML handling entry points
> + *
> + * Copyright (C) 2006-2012 Red Hat, Inc.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> + *
> + * Author: Shradha Shah<sshah at solarflare.com>
> + */
> +
> +#ifndef __DEVICE_CONF_H__
> +# define __DEVICE_CONF_H__
> +
> +# include<libxml/parser.h>
> +# include<libxml/tree.h>
> +# include<libxml/xpath.h>
> +
> +# include "internal.h"
> +# include "util.h"
> +# include "threads.h"
> +# include "buf.h"
> +
> +enum virDeviceAddressPciMulti {
> + VIR_DEVICE_ADDRESS_PCI_MULTI_DEFAULT = 0,
> + VIR_DEVICE_ADDRESS_PCI_MULTI_ON,
> + VIR_DEVICE_ADDRESS_PCI_MULTI_OFF,
> +
> + VIR_DEVICE_ADDRESS_PCI_MULTI_LAST
> +};
> +
> +typedef struct _virDevicePCIAddress virDevicePCIAddress;
> +typedef virDevicePCIAddress *virDevicePCIAddressPtr;
> +struct _virDevicePCIAddress {
> + unsigned int domain;
> + unsigned int bus;
> + unsigned int slot;
> + unsigned int function;
> + int multi; /* enum virDomainDeviceAddressPciMulti */
> +};
> +
> +int virDevicePCIAddressIsValid(virDevicePCIAddressPtr addr);
> +
> +int virDevicePCIAddressParseXML(xmlNodePtr node,
> + virDevicePCIAddressPtr addr);
> +
> +int virDevicePCIAddressFormat(virBufferPtr buf,
> + virDevicePCIAddress addr,
> + bool includeTypeInAddr);
> +
> +
> +VIR_ENUM_DECL(virDeviceAddressPciMulti)
> +
> +#endif /* __DEVICE_CONF_H__ */
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index f44dc93..7541627 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -53,6 +53,7 @@
> #include "netdev_vport_profile_conf.h"
> #include "netdev_bandwidth_conf.h"
> #include "virdomainlist.h"
> +#include "device_conf.h"
>
> #define VIR_FROM_THIS VIR_FROM_DOMAIN
>
> @@ -152,12 +153,6 @@ VIR_ENUM_IMPL(virDomainDeviceAddress, VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST,
> "usb",
> "spapr-vio")
>
> -VIR_ENUM_IMPL(virDomainDeviceAddressPciMulti,
> - VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_LAST,
> - "default",
> - "on",
> - "off")
> -
> VIR_ENUM_IMPL(virDomainDisk, VIR_DOMAIN_DISK_TYPE_LAST,
> "block",
> "file",
> @@ -1904,7 +1899,7 @@ int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info,
>
> switch (info->type) {
> case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
> - return virDomainDevicePCIAddressIsValid(&info->addr.pci);
> + return virDevicePCIAddressIsValid(&info->addr.pci);
>
> case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE:
> return 1;
> @@ -1916,16 +1911,6 @@ int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info,
> return 0;
> }
>
> -
> -int virDomainDevicePCIAddressIsValid(virDomainDevicePCIAddressPtr addr)
> -{
> - /* PCI bus has 32 slots and 8 functions per slot */
> - if (addr->slot>= 32 || addr->function>= 8)
> - return 0;
> - return addr->domain || addr->bus || addr->slot;
> -}
> -
> -
> static bool
> virDomainDeviceInfoIsSet(virDomainDeviceInfoPtr info, unsigned int flags)
> {
> @@ -2149,7 +2134,7 @@ virDomainDeviceInfoFormat(virBufferPtr buf,
> info->addr.pci.function);
> if (info->addr.pci.multi) {
> virBufferAsprintf(buf, " multifunction='%s'",
> - virDomainDeviceAddressPciMultiTypeToString(info->addr.pci.multi));
> + virDeviceAddressPciMultiTypeToString(info->addr.pci.multi));
> }
> break;
>
> @@ -2197,75 +2182,6 @@ virDomainDeviceInfoFormat(virBufferPtr buf,
> }
>
> static int
> -virDomainDevicePCIAddressParseXML(xmlNodePtr node,
> - virDomainDevicePCIAddressPtr addr)
> -{
> - char *domain, *slot, *bus, *function, *multi;
> - int ret = -1;
> -
> - memset(addr, 0, sizeof(*addr));
> -
> - domain = virXMLPropString(node, "domain");
> - bus = virXMLPropString(node, "bus");
> - slot = virXMLPropString(node, "slot");
> - function = virXMLPropString(node, "function");
> - multi = virXMLPropString(node, "multifunction");
> -
> - if (domain&&
> - virStrToLong_ui(domain, NULL, 0,&addr->domain)< 0) {
> - virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> - _("Cannot parse<address> 'domain' attribute"));
> - goto cleanup;
> - }
> -
> - if (bus&&
> - virStrToLong_ui(bus, NULL, 0,&addr->bus)< 0) {
> - virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> - _("Cannot parse<address> 'bus' attribute"));
> - goto cleanup;
> - }
> -
> - if (slot&&
> - virStrToLong_ui(slot, NULL, 0,&addr->slot)< 0) {
> - virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> - _("Cannot parse<address> 'slot' attribute"));
> - goto cleanup;
> - }
> -
> - if (function&&
> - virStrToLong_ui(function, NULL, 0,&addr->function)< 0) {
> - virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> - _("Cannot parse<address> 'function' attribute"));
> - goto cleanup;
> - }
> -
> - if (multi&&
> - ((addr->multi = virDomainDeviceAddressPciMultiTypeFromString(multi))<= 0)) {
> - virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> - _("Unknown value '%s' for<address> 'multifunction' attribute"),
> - multi);
> - goto cleanup;
> -
> - }
> - if (!virDomainDevicePCIAddressIsValid(addr)) {
> - virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> - _("Insufficient specification for PCI address"));
> - goto cleanup;
> - }
> -
> - ret = 0;
> -
> -cleanup:
> - VIR_FREE(domain);
> - VIR_FREE(bus);
> - VIR_FREE(slot);
> - VIR_FREE(function);
> - VIR_FREE(multi);
> - return ret;
> -}
> -
> -
> -static int
> virDomainDeviceDriveAddressParseXML(xmlNodePtr node,
> virDomainDeviceDriveAddressPtr addr)
> {
> @@ -2626,7 +2542,7 @@ virDomainDeviceInfoParseXML(xmlNodePtr node,
>
> switch (info->type) {
> case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
> - if (virDomainDevicePCIAddressParseXML(address,&info->addr.pci)< 0)
> + if (virDevicePCIAddressParseXML(address,&info->addr.pci)< 0)
> goto cleanup;
> break;
>
> @@ -2674,7 +2590,7 @@ cleanup:
>
> static int
> virDomainParseLegacyDeviceAddress(char *devaddr,
> - virDomainDevicePCIAddressPtr pci)
> + virDevicePCIAddressPtr pci)
> {
> char *tmp;
>
> @@ -2859,10 +2775,10 @@ virDomainHostdevSubsysPciDefParseXML(const xmlNodePtr node,
> while (cur != NULL) {
> if (cur->type == XML_ELEMENT_NODE) {
> if (xmlStrEqual(cur->name, BAD_CAST "address")) {
> - virDomainDevicePCIAddressPtr addr =
> + virDevicePCIAddressPtr addr =
> &def->source.subsys.u.pci;
>
> - if (virDomainDevicePCIAddressParseXML(cur, addr)< 0)
> + if (virDevicePCIAddressParseXML(cur, addr)< 0)
> goto out;
> } else if ((flags& VIR_DOMAIN_XML_INTERNAL_STATUS)&&
> xmlStrEqual(cur->name, BAD_CAST "state")) {
> @@ -11427,14 +11343,12 @@ virDomainHostdevSourceFormat(virBufferPtr buf,
> }
> break;
> case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
> - virBufferAsprintf(buf, "<address %sdomain='0x%.4x' bus='0x%.2x' "
> - "slot='0x%.2x' function='0x%.1x'/>\n",
> - includeTypeInAddr ? "type='pci' " : "",
> - def->source.subsys.u.pci.domain,
> - def->source.subsys.u.pci.bus,
> - def->source.subsys.u.pci.slot,
> - def->source.subsys.u.pci.function);
> -
> + if (virDevicePCIAddressFormat(buf,
> + def->source.subsys.u.pci,
> + includeTypeInAddr) != 0)
> + virDomainReportError(VIR_ERR_INTERNAL_ERROR,
> + _("PCI address Formatting failed"));
> +
> if ((flags& VIR_DOMAIN_XML_INTERNAL_PCI_ORIG_STATES)&&
> (def->origstates.states.pci.unbind_from_stub ||
> def->origstates.states.pci.remove_slot ||
> @@ -11447,7 +11361,7 @@ virDomainHostdevSourceFormat(virBufferPtr buf,
> if (def->origstates.states.pci.reprobe)
> virBufferAddLit(buf, "<reprobe/>\n");
> virBufferAddLit(buf, "</origstates>\n");
> - }
> + }
> break;
> default:
> virDomainReportError(VIR_ERR_INTERNAL_ERROR,
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index 7d5d60b..51b2da8 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -43,6 +43,7 @@
> # include "virnetdevvportprofile.h"
> # include "virnetdevopenvswitch.h"
> # include "virnetdevbandwidth.h"
> +# include "device_conf.h"
>
> /* forward declarations of all device types, required by
> * virDomainDeviceDef
> @@ -176,14 +177,6 @@ enum virDomainDeviceAddressType {
> VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST
> };
>
> -enum virDomainDeviceAddressPciMulti {
> - VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_DEFAULT = 0,
> - VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_ON,
> - VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_OFF,
> -
> - VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_LAST
> -};
> -
> enum virDomainPciRombarMode {
> VIR_DOMAIN_PCI_ROMBAR_DEFAULT = 0,
> VIR_DOMAIN_PCI_ROMBAR_ON,
> @@ -192,16 +185,6 @@ enum virDomainPciRombarMode {
> VIR_DOMAIN_PCI_ROMBAR_LAST
> };
>
> -typedef struct _virDomainDevicePCIAddress virDomainDevicePCIAddress;
> -typedef virDomainDevicePCIAddress *virDomainDevicePCIAddressPtr;
> -struct _virDomainDevicePCIAddress {
> - unsigned int domain;
> - unsigned int bus;
> - unsigned int slot;
> - unsigned int function;
> - int multi; /* enum virDomainDeviceAddressPciMulti */
> -};
> -
> typedef struct _virDomainDeviceDriveAddress virDomainDeviceDriveAddress;
> typedef virDomainDeviceDriveAddress *virDomainDeviceDriveAddressPtr;
> struct _virDomainDeviceDriveAddress {
> @@ -263,7 +246,7 @@ struct _virDomainDeviceInfo {
> char *alias;
> int type;
> union {
> - virDomainDevicePCIAddress pci;
> + virDevicePCIAddress pci;
> virDomainDeviceDriveAddress drive;
> virDomainDeviceVirtioSerialAddress vioserial;
> virDomainDeviceCcidAddress ccid;
> @@ -374,7 +357,7 @@ struct _virDomainHostdevSubsys {
> unsigned vendor;
> unsigned product;
> } usb;
> - virDomainDevicePCIAddress pci; /* host address */
> + virDevicePCIAddress pci; /* host address */
> } u;
> };
>
> @@ -1891,7 +1874,6 @@ virDomainDeviceDefPtr virDomainDeviceDefCopy(virCapsPtr caps,
> virDomainDeviceDefPtr src);
> int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info,
> int type);
> -int virDomainDevicePCIAddressIsValid(virDomainDevicePCIAddressPtr addr);
> void virDomainDeviceInfoClear(virDomainDeviceInfoPtr info);
> void virDomainDefClearPCIAddresses(virDomainDefPtr def);
> void virDomainDefClearDeviceAliases(virDomainDefPtr def);
> @@ -2161,7 +2143,6 @@ VIR_ENUM_DECL(virDomainLifecycle)
> VIR_ENUM_DECL(virDomainLifecycleCrash)
> VIR_ENUM_DECL(virDomainDevice)
> VIR_ENUM_DECL(virDomainDeviceAddress)
> -VIR_ENUM_DECL(virDomainDeviceAddressPciMulti)
> VIR_ENUM_DECL(virDomainDisk)
> VIR_ENUM_DECL(virDomainDiskDevice)
> VIR_ENUM_DECL(virDomainDiskBus)
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 2fe5068..0a77130 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -210,6 +210,13 @@ virUnrefStorageVol;
> virUnrefStream;
>
>
> +# device_conf.h
> +virDeviceAddressPciMultiTypeFromString;
> +virDeviceAddressPciMultiTypeToString;
> +virDevicePCIAddressIsValid;
> +virDevicePCIAddressParseXML;
> +virDevicePCIAddressFormat;
> +
> # dnsmasq.h
> dnsmasqAddDhcpHost;
> dnsmasqAddHost;
> @@ -286,14 +293,11 @@ virDomainDefParseNode;
> virDomainDefParseString;
> virDomainDeleteConfig;
> virDomainDeviceAddressIsValid;
> -virDomainDeviceAddressPciMultiTypeFromString;
> -virDomainDeviceAddressPciMultiTypeToString;
> virDomainDeviceAddressTypeToString;
> virDomainDeviceDefCopy;
> virDomainDeviceDefFree;
> virDomainDeviceDefParse;
> virDomainDeviceInfoIterate;
> -virDomainDevicePCIAddressIsValid;
> virDomainDeviceTypeToString;
> virDomainDiskBusTypeToString;
> virDomainDiskCacheTypeFromString;
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 6549f57..93c018d 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -40,6 +40,7 @@
> #include "network/bridge_driver.h"
> #include "virnetdevtap.h"
> #include "base64.h"
> +#include "device_conf.h"
>
> #include<sys/utsname.h>
> #include<sys/stat.h>
> @@ -909,7 +910,7 @@ static int qemuCollectPCIAddress(virDomainDefPtr def ATTRIBUTE_UNUSED,
> addr = NULL;
>
> if ((info->addr.pci.function == 0)&&
> - (info->addr.pci.multi != VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_ON)) {
> + (info->addr.pci.multi != VIR_DEVICE_ADDRESS_PCI_MULTI_ON)) {
> /* a function 0 w/o multifunction=on must reserve the entire slot */
> int function;
> virDomainDeviceInfo temp_info = *info;
> @@ -1465,7 +1466,7 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, qemuDomainPCIAddressSetPtr addrs)
>
> /* USB2 needs special handling to put all companions in the same slot */
> if (IS_USB2_CONTROLLER(def->controllers[i])) {
> - virDomainDevicePCIAddress addr = { 0, 0, 0, 0, false };
> + virDevicePCIAddress addr = { 0, 0, 0, 0, false };
> for (j = 0 ; j< i ; j++) {
> if (IS_USB2_CONTROLLER(def->controllers[j])&&
> def->controllers[j]->idx == def->controllers[i]->idx) {
> @@ -1480,7 +1481,7 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, qemuDomainPCIAddressSetPtr addrs)
> break;
> case VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI1:
> addr.function = 0;
> - addr.multi = VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_ON;
> + addr.multi = VIR_DEVICE_ADDRESS_PCI_MULTI_ON;
> break;
> case VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI2:
> addr.function = 1;
> @@ -1631,7 +1632,7 @@ qemuBuildDeviceAddressStr(virBufferPtr buf,
> "are supported with this QEMU binary"));
> return -1;
> }
> - if (info->addr.pci.multi == VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_ON) {
> + if (info->addr.pci.multi == VIR_DEVICE_ADDRESS_PCI_MULTI_ON) {
> qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> _("'multifunction=on' is not supported with "
> "this QEMU binary"));
> @@ -1649,9 +1650,9 @@ qemuBuildDeviceAddressStr(virBufferPtr buf,
> virBufferAsprintf(buf, ",bus=pci.0");
> else
> virBufferAsprintf(buf, ",bus=pci");
> - if (info->addr.pci.multi == VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_ON)
> + if (info->addr.pci.multi == VIR_DEVICE_ADDRESS_PCI_MULTI_ON)
> virBufferAddLit(buf, ",multifunction=on");
> - else if (info->addr.pci.multi == VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_OFF)
> + else if (info->addr.pci.multi == VIR_DEVICE_ADDRESS_PCI_MULTI_OFF)
> virBufferAddLit(buf, ",multifunction=off");
> virBufferAsprintf(buf, ",addr=0x%x", info->addr.pci.slot);
> if (info->addr.pci.function != 0)
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index c2fa75b..2c07f55 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -43,6 +43,7 @@
> #include "virnetdev.h"
> #include "virnetdevbridge.h"
> #include "virnetdevtap.h"
> +#include "device_conf.h"
>
> #define VIR_FROM_THIS VIR_FROM_QEMU
>
> @@ -258,7 +259,7 @@ int qemuDomainAttachPciDiskDevice(virConnectPtr conn,
> }
> }
> } else {
> - virDomainDevicePCIAddress guestAddr = disk->info.addr.pci;
> + virDevicePCIAddress guestAddr = disk->info.addr.pci;
> ret = qemuMonitorAddPCIDisk(priv->mon,
> disk->src,
> type,
> @@ -659,7 +660,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
> char *netstr = NULL;
> virNetDevVPortProfilePtr vport = NULL;
> int ret = -1;
> - virDomainDevicePCIAddress guestAddr;
> + virDevicePCIAddress guestAddr;
> int vlan;
> bool releaseaddr = false;
> bool iface_connected = false;
> @@ -967,7 +968,7 @@ int qemuDomainAttachHostPciDevice(struct qemud_driver *driver,
> configfd, configfd_name);
> qemuDomainObjExitMonitorWithDriver(driver, vm);
> } else {
> - virDomainDevicePCIAddress guestAddr = hostdev->info->addr.pci;
> + virDevicePCIAddress guestAddr = hostdev->info->addr.pci;
>
> qemuDomainObjEnterMonitorWithDriver(driver, vm);
> ret = qemuMonitorAddPCIHostDevice(priv->mon,
> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
> index b8a2f2f..02b42c2 100644
> --- a/src/qemu/qemu_monitor.c
> +++ b/src/qemu/qemu_monitor.c
> @@ -2148,8 +2148,8 @@ int qemuMonitorAddUSBDeviceMatch(qemuMonitorPtr mon,
>
>
> int qemuMonitorAddPCIHostDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *hostAddr,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *hostAddr,
> + virDevicePCIAddress *guestAddr)
> {
> int ret;
> VIR_DEBUG("mon=%p domain=%d bus=%d slot=%d function=%d",
> @@ -2173,7 +2173,7 @@ int qemuMonitorAddPCIHostDevice(qemuMonitorPtr mon,
> int qemuMonitorAddPCIDisk(qemuMonitorPtr mon,
> const char *path,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *guestAddr)
> {
> int ret;
> VIR_DEBUG("mon=%p path=%s bus=%s",
> @@ -2195,7 +2195,7 @@ int qemuMonitorAddPCIDisk(qemuMonitorPtr mon,
>
> int qemuMonitorAddPCINetwork(qemuMonitorPtr mon,
> const char *nicstr,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *guestAddr)
> {
> int ret;
> VIR_DEBUG("mon=%p nicstr=%s", mon, nicstr);
> @@ -2215,7 +2215,7 @@ int qemuMonitorAddPCINetwork(qemuMonitorPtr mon,
>
>
> int qemuMonitorRemovePCIDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *guestAddr)
> {
> int ret;
> VIR_DEBUG("mon=%p domain=%d bus=%d slot=%d function=%d",
> @@ -2451,7 +2451,7 @@ int qemuMonitorGetPtyPaths(qemuMonitorPtr mon,
>
> int qemuMonitorAttachPCIDiskController(qemuMonitorPtr mon,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *guestAddr)
> {
> VIR_DEBUG("mon=%p type=%s", mon, bus);
> int ret;
> @@ -2473,7 +2473,7 @@ int qemuMonitorAttachPCIDiskController(qemuMonitorPtr mon,
>
> int qemuMonitorAttachDrive(qemuMonitorPtr mon,
> const char *drivestr,
> - virDomainDevicePCIAddress *controllerAddr,
> + virDevicePCIAddress *controllerAddr,
> virDomainDeviceDriveAddress *driveAddr)
> {
> VIR_DEBUG("mon=%p drivestr=%s domain=%d bus=%d slot=%d function=%d",
> diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
> index 66bec38..6b5bbe6 100644
> --- a/src/qemu/qemu_monitor.h
> +++ b/src/qemu/qemu_monitor.h
> @@ -32,6 +32,7 @@
> # include "bitmap.h"
> # include "virhash.h"
> # include "json.h"
> +# include "device_conf.h"
>
> typedef struct _qemuMonitor qemuMonitor;
> typedef qemuMonitor *qemuMonitorPtr;
> @@ -413,8 +414,8 @@ int qemuMonitorAddUSBDeviceMatch(qemuMonitorPtr mon,
>
>
> int qemuMonitorAddPCIHostDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *hostAddr,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *hostAddr,
> + virDevicePCIAddress *guestAddr);
>
> /* XXX disk driver type eg, qcow/etc.
> * XXX cache mode
> @@ -422,17 +423,17 @@ int qemuMonitorAddPCIHostDevice(qemuMonitorPtr mon,
> int qemuMonitorAddPCIDisk(qemuMonitorPtr mon,
> const char *path,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> /* XXX do we really want to hardcode 'nicstr' as the
> * sendable item here
> */
> int qemuMonitorAddPCINetwork(qemuMonitorPtr mon,
> const char *nicstr,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorRemovePCIDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
>
> int qemuMonitorSendFileHandle(qemuMonitorPtr mon,
> @@ -471,11 +472,11 @@ int qemuMonitorGetPtyPaths(qemuMonitorPtr mon,
>
> int qemuMonitorAttachPCIDiskController(qemuMonitorPtr mon,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorAttachDrive(qemuMonitorPtr mon,
> const char *drivestr,
> - virDomainDevicePCIAddress *controllerAddr,
> + virDevicePCIAddress *controllerAddr,
> virDomainDeviceDriveAddress *driveAddr);
>
>
> @@ -483,7 +484,7 @@ typedef struct _qemuMonitorPCIAddress qemuMonitorPCIAddress;
> struct _qemuMonitorPCIAddress {
> unsigned int vendor;
> unsigned int product;
> - virDomainDevicePCIAddress addr;
> + virDevicePCIAddress addr;
> };
>
> int qemuMonitorGetAllPCIAddresses(qemuMonitorPtr mon,
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index 7d2da21..1d8ac2a 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -2564,8 +2564,8 @@ int qemuMonitorJSONAddUSBDeviceMatch(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
>
>
> int qemuMonitorJSONAddPCIHostDevice(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
> - virDomainDevicePCIAddress *hostAddr ATTRIBUTE_UNUSED,
> - virDomainDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> + virDevicePCIAddress *hostAddr ATTRIBUTE_UNUSED,
> + virDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> {
> qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> _("pci_add not supported in JSON mode"));
> @@ -2576,7 +2576,7 @@ int qemuMonitorJSONAddPCIHostDevice(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
> int qemuMonitorJSONAddPCIDisk(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
> const char *path ATTRIBUTE_UNUSED,
> const char *bus ATTRIBUTE_UNUSED,
> - virDomainDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> + virDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> {
> qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> _("pci_add not supported in JSON mode"));
> @@ -2586,7 +2586,7 @@ int qemuMonitorJSONAddPCIDisk(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
>
> int qemuMonitorJSONAddPCINetwork(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
> const char *nicstr ATTRIBUTE_UNUSED,
> - virDomainDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> + virDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> {
> qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> _("pci_add not supported in JSON mode"));
> @@ -2595,7 +2595,7 @@ int qemuMonitorJSONAddPCINetwork(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
>
>
> int qemuMonitorJSONRemovePCIDevice(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
> - virDomainDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> + virDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> {
> qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> _("pci_del not supported in JSON mode"));
> @@ -2852,7 +2852,7 @@ int qemuMonitorJSONGetPtyPaths(qemuMonitorPtr mon,
>
> int qemuMonitorJSONAttachPCIDiskController(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
> const char *bus ATTRIBUTE_UNUSED,
> - virDomainDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> + virDevicePCIAddress *guestAddr ATTRIBUTE_UNUSED)
> {
> qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> _("pci_add not supported in JSON mode"));
> @@ -2891,7 +2891,7 @@ qemuMonitorJSONGetGuestDriveAddress(virJSONValuePtr reply,
>
> int qemuMonitorJSONAttachDrive(qemuMonitorPtr mon,
> const char *drivestr,
> - virDomainDevicePCIAddress* controllerAddr,
> + virDevicePCIAddress* controllerAddr,
> virDomainDeviceDriveAddress* driveAddr)
> {
> int ret;
> diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h
> index e8bd9b8..8237751 100644
> --- a/src/qemu/qemu_monitor_json.h
> +++ b/src/qemu/qemu_monitor_json.h
> @@ -161,20 +161,20 @@ int qemuMonitorJSONAddUSBDeviceMatch(qemuMonitorPtr mon,
>
>
> int qemuMonitorJSONAddPCIHostDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *hostAddr,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *hostAddr,
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorJSONAddPCIDisk(qemuMonitorPtr mon,
> const char *path,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorJSONAddPCINetwork(qemuMonitorPtr mon,
> const char *nicstr,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorJSONRemovePCIDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorJSONSendFileHandle(qemuMonitorPtr mon,
> const char *fdname,
> @@ -201,11 +201,11 @@ int qemuMonitorJSONGetPtyPaths(qemuMonitorPtr mon,
>
> int qemuMonitorJSONAttachPCIDiskController(qemuMonitorPtr mon,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorJSONAttachDrive(qemuMonitorPtr mon,
> const char *drivestr,
> - virDomainDevicePCIAddress *controllerAddr,
> + virDevicePCIAddress *controllerAddr,
> virDomainDeviceDriveAddress *driveAddr);
>
> int qemuMonitorJSONGetAllPCIAddresses(qemuMonitorPtr mon,
> diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
> index edb5dfd..f299bc1 100644
> --- a/src/qemu/qemu_monitor_text.c
> +++ b/src/qemu/qemu_monitor_text.c
> @@ -1898,7 +1898,7 @@ int qemuMonitorTextAddUSBDeviceMatch(qemuMonitorPtr mon,
> static int
> qemuMonitorTextParsePciAddReply(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
> const char *reply,
> - virDomainDevicePCIAddress *addr)
> + virDevicePCIAddress *addr)
> {
> char *s, *e;
>
> @@ -1960,8 +1960,8 @@ qemuMonitorTextParsePciAddReply(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
>
>
> int qemuMonitorTextAddPCIHostDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *hostAddr,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *hostAddr,
> + virDevicePCIAddress *guestAddr)
> {
> char *cmd;
> char *reply = NULL;
> @@ -2006,7 +2006,7 @@ cleanup:
> int qemuMonitorTextAddPCIDisk(qemuMonitorPtr mon,
> const char *path,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *guestAddr)
> {
> char *cmd = NULL;
> char *reply = NULL;
> @@ -2058,7 +2058,7 @@ cleanup:
>
> int qemuMonitorTextAddPCINetwork(qemuMonitorPtr mon,
> const char *nicstr,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *guestAddr)
> {
> char *cmd;
> char *reply = NULL;
> @@ -2091,7 +2091,7 @@ cleanup:
>
>
> int qemuMonitorTextRemovePCIDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *guestAddr)
> {
> char *cmd = NULL;
> char *reply = NULL;
> @@ -2439,7 +2439,7 @@ cleanup:
>
> int qemuMonitorTextAttachPCIDiskController(qemuMonitorPtr mon,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr)
> + virDevicePCIAddress *guestAddr)
> {
> char *cmd = NULL;
> char *reply = NULL;
> @@ -2528,7 +2528,7 @@ qemudParseDriveAddReply(const char *reply,
>
> int qemuMonitorTextAttachDrive(qemuMonitorPtr mon,
> const char *drivestr,
> - virDomainDevicePCIAddress *controllerAddr,
> + virDevicePCIAddress *controllerAddr,
> virDomainDeviceDriveAddress *driveAddr)
> {
> char *cmd = NULL;
> diff --git a/src/qemu/qemu_monitor_text.h b/src/qemu/qemu_monitor_text.h
> index 4525864..cdde88b 100644
> --- a/src/qemu/qemu_monitor_text.h
> +++ b/src/qemu/qemu_monitor_text.h
> @@ -147,20 +147,20 @@ int qemuMonitorTextAddUSBDeviceMatch(qemuMonitorPtr mon,
>
>
> int qemuMonitorTextAddPCIHostDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *hostAddr,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *hostAddr,
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorTextAddPCIDisk(qemuMonitorPtr mon,
> const char *path,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorTextAddPCINetwork(qemuMonitorPtr mon,
> const char *nicstr,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorTextRemovePCIDevice(qemuMonitorPtr mon,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorTextSendFileHandle(qemuMonitorPtr mon,
> const char *fdname,
> @@ -187,11 +187,11 @@ int qemuMonitorTextGetPtyPaths(qemuMonitorPtr mon,
>
> int qemuMonitorTextAttachPCIDiskController(qemuMonitorPtr mon,
> const char *bus,
> - virDomainDevicePCIAddress *guestAddr);
> + virDevicePCIAddress *guestAddr);
>
> int qemuMonitorTextAttachDrive(qemuMonitorPtr mon,
> const char *drivestr,
> - virDomainDevicePCIAddress *controllerAddr,
> + virDevicePCIAddress *controllerAddr,
> virDomainDeviceDriveAddress *driveAddr);
>
> int qemuMonitorTextGetAllPCIAddresses(qemuMonitorPtr mon,
> diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
> index f1aa9b6..5106103 100644
> --- a/src/xen/xend_internal.c
> +++ b/src/xen/xend_internal.c
> @@ -46,6 +46,7 @@
> #include "count-one-bits.h"
> #include "virfile.h"
> #include "viruri.h"
> +#include "device_conf.h"
>
> /* required for cpumap_t */
> #include<xen/dom0_ops.h>
> @@ -2732,7 +2733,7 @@ xenDaemonAttachDeviceFlags(virDomainPtr domain, const char *xml,
> if (xenFormatSxprOnePCI(dev->data.hostdev,&buf, 0)< 0)
> goto cleanup;
>
> - virDomainDevicePCIAddress PCIAddr;
> + virDevicePCIAddress PCIAddr;
>
> PCIAddr = dev->data.hostdev->source.subsys.u.pci;
> virAsprintf(&target, "PCI device: %.4x:%.2x:%.2x", PCIAddr.domain,
More information about the libvir-list
mailing list