[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH 1/6 v2] Prerequisite Patch. virDomainDevicePCIAddress and respective functions moved to a new file called conf/device_conf.ch



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 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 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 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,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]