More hypervisors may implement the possibility of specifying device
addresses, so it makes sense to make QEMU-specific code more generic
to be prepared for it.
The first step is to move data from obj->privateData to domainDef.
Two functions and a few struct definitions have to be in domain_addr
because virDomainDefFree() has to execute them when freeing
the domainDef structure.
---
src/conf/domain_addr.c | 22 ----------------------
src/conf/domain_addr.h | 17 -----------------
src/conf/domain_conf.c | 21 +++++++++++++++++++++
src/conf/domain_conf.h | 17 +++++++++++++++++
src/libvirt_private.syms | 3 ++-
5 files changed, 40 insertions(+), 40 deletions(-)
diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
index 794270d..e482328 100644
--- a/src/conf/domain_addr.c
+++ b/src/conf/domain_addr.c
@@ -856,15 +856,6 @@ virDomainVirtioSerialAddrSetCreate(void)
return ret;
}
-static void
-virDomainVirtioSerialControllerFree(virDomainVirtioSerialControllerPtr cont)
-{
- if (cont) {
- virBitmapFree(cont->ports);
- VIR_FREE(cont);
- }
-}
-
static ssize_t
virDomainVirtioSerialAddrPlaceController(virDomainVirtioSerialAddrSetPtr addrs,
virDomainVirtioSerialControllerPtr cont)
@@ -962,19 +953,6 @@
virDomainVirtioSerialAddrSetAddControllers(virDomainVirtioSerialAddrSetPtr addrs
return 0;
}
-
-void
-virDomainVirtioSerialAddrSetFree(virDomainVirtioSerialAddrSetPtr addrs)
-{
- size_t i;
- if (addrs) {
- for (i = 0; i < addrs->ncontrollers; i++)
- virDomainVirtioSerialControllerFree(addrs->controllers[i]);
- VIR_FREE(addrs->controllers);
- VIR_FREE(addrs);
- }
-}
-
static int
virDomainVirtioSerialAddrSetAutoaddController(virDomainDefPtr def,
virDomainVirtioSerialAddrSetPtr addrs,
diff --git a/src/conf/domain_addr.h b/src/conf/domain_addr.h
index f3eda89..0fb5f85 100644
--- a/src/conf/domain_addr.h
+++ b/src/conf/domain_addr.h
@@ -185,29 +185,12 @@ int virDomainCCWAddressReleaseAddr(virDomainCCWAddressSetPtr addrs,
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
virDomainCCWAddressSetPtr virDomainCCWAddressSetCreate(void);
-struct _virDomainVirtioSerialController {
- unsigned int idx;
- virBitmapPtr ports;
-};
-
-typedef struct _virDomainVirtioSerialController virDomainVirtioSerialController;
-typedef virDomainVirtioSerialController *virDomainVirtioSerialControllerPtr;
-
-struct _virDomainVirtioSerialAddrSet {
- virDomainVirtioSerialControllerPtr *controllers;
- size_t ncontrollers;
-};
-typedef struct _virDomainVirtioSerialAddrSet virDomainVirtioSerialAddrSet;
-typedef virDomainVirtioSerialAddrSet *virDomainVirtioSerialAddrSetPtr;
-
virDomainVirtioSerialAddrSetPtr
virDomainVirtioSerialAddrSetCreate(void);
int
virDomainVirtioSerialAddrSetAddControllers(virDomainVirtioSerialAddrSetPtr addrs,
virDomainDefPtr def)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-void
-virDomainVirtioSerialAddrSetFree(virDomainVirtioSerialAddrSetPtr addrs);
bool
virDomainVirtioSerialAddrIsComplete(virDomainDeviceInfoPtr info);
int
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 4196537..6900eb9 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2514,6 +2514,27 @@ virDomainLoaderDefFree(virDomainLoaderDefPtr loader)
VIR_FREE(loader);
}
+void
+virDomainVirtioSerialControllerFree(virDomainVirtioSerialControllerPtr cont)
+{
+ if (cont) {
+ virBitmapFree(cont->ports);
+ VIR_FREE(cont);
+ }
+}
+
+void
+virDomainVirtioSerialAddrSetFree(virDomainVirtioSerialAddrSetPtr addrs)
+{
+ size_t i;
+ if (addrs) {
+ for (i = 0; i < addrs->ncontrollers; i++)
+ virDomainVirtioSerialControllerFree(addrs->controllers[i]);
+ VIR_FREE(addrs->controllers);
+ VIR_FREE(addrs);
+ }
+}
+
void virDomainDefFree(virDomainDefPtr def)
{
size_t i;
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 6e81e52..7dcecdc 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2089,6 +2089,21 @@ struct _virDomainMemtune {
unsigned long long swap_hard_limit; /* in kibibytes, limit at off_t bytes */
};
+struct _virDomainVirtioSerialController {
+ unsigned int idx;
+ virBitmapPtr ports;
+};
+
+typedef struct _virDomainVirtioSerialController virDomainVirtioSerialController;
+typedef virDomainVirtioSerialController *virDomainVirtioSerialControllerPtr;
+
+struct _virDomainVirtioSerialAddrSet {
+ virDomainVirtioSerialControllerPtr *controllers;
+ size_t ncontrollers;
+};
+typedef struct _virDomainVirtioSerialAddrSet virDomainVirtioSerialAddrSet;
+typedef virDomainVirtioSerialAddrSet *virDomainVirtioSerialAddrSetPtr;
+
typedef struct _virDomainPowerManagement virDomainPowerManagement;
typedef virDomainPowerManagement *virDomainPowerManagementPtr;
@@ -2526,6 +2541,8 @@ void virDomainDefClearPCIAddresses(virDomainDefPtr def);
void virDomainDefClearCCWAddresses(virDomainDefPtr def);
void virDomainDefClearDeviceAliases(virDomainDefPtr def);
void virDomainTPMDefFree(virDomainTPMDefPtr def);
+void virDomainVirtioSerialControllerFree(virDomainVirtioSerialControllerPtr cont);
+void virDomainVirtioSerialAddrSetFree(virDomainVirtioSerialAddrSetPtr addrs);
typedef int (*virDomainDeviceInfoCallback)(virDomainDefPtr def,
virDomainDeviceDefPtr dev,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index f62dd70..d29eb07 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -116,7 +116,6 @@ virDomainVirtioSerialAddrRelease;
virDomainVirtioSerialAddrReserve;
virDomainVirtioSerialAddrSetAddControllers;
virDomainVirtioSerialAddrSetCreate;
-virDomainVirtioSerialAddrSetFree;
# conf/domain_audit.h
@@ -479,6 +478,8 @@ virDomainVideoDefaultType;
virDomainVideoDefFree;
virDomainVideoTypeFromString;
virDomainVideoTypeToString;
+virDomainVirtioSerialAddrSetFree;
+virDomainVirtioSerialControllerFree;
virDomainVirtTypeFromString;
virDomainVirtTypeToString;
virDomainWatchdogActionTypeFromString;
--
2.7.4 (Apple Git-66)