summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Krempa <pkrempa@redhat.com>2023-04-18 15:30:16 +0200
committerPeter Krempa <pkrempa@redhat.com>2023-05-02 14:32:46 +0200
commite3dff704bf6b94c5e1c44dcc8e08a935fa0a9c5f (patch)
tree748e81a93703e336566ae465c236a5a80e9588e4
parent0d09e79b4217304d02322707123b1b6dbec3bbdf (diff)
downloadlibvirt-e3dff704bf6b94c5e1c44dcc8e08a935fa0a9c5f.tar.gz
util: typedparam: Introduce 'virTypedParamListConcat'
Introduce a helper function to concatenate two virTypedParamLists. This will allow us to refactor qemuDomainGetStatsBlock to not access the list directly. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
-rw-r--r--src/libvirt_private.syms1
-rw-r--r--src/util/virtypedparam.c23
-rw-r--r--src/util/virtypedparam.h4
3 files changed, 28 insertions, 0 deletions
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index c596ef0f87..0f42c2de0b 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -3555,6 +3555,7 @@ virTypedParamListAddLLong;
virTypedParamListAddString;
virTypedParamListAddUInt;
virTypedParamListAddULLong;
+virTypedParamListConcat;
virTypedParamListFree;
virTypedParamListFromParams;
virTypedParamListNew;
diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c
index de3a4e76b4..6ac9a4e2f3 100644
--- a/src/util/virtypedparam.c
+++ b/src/util/virtypedparam.c
@@ -712,6 +712,29 @@ virTypedParamListNew(void)
}
+/**
+ * virTypedParamListConcat:
+ * @to: typed param list to concatenate into
+ * @fromptr: pointer to pointer to a typed param list to concatenate into @to
+ *
+ * Concatenates all params from the virTypedParamList pointed to by @fromptr
+ * into @to and deallocates the list pointed to by @fromptr and clears the
+ * variable.
+ */
+void
+virTypedParamListConcat(virTypedParamList *to,
+ virTypedParamList **fromptr)
+{
+ g_autoptr(virTypedParamList) from = g_steal_pointer(fromptr);
+
+ VIR_RESIZE_N(to->par, to->par_alloc, to->npar, from->npar);
+
+ memcpy(to->par + to->npar, from->par, sizeof(*(to->par)) * from->npar);
+ to->npar += from->npar;
+ from->npar = 0;
+}
+
+
void
virTypedParamListFree(virTypedParamList *list)
{
diff --git a/src/util/virtypedparam.h b/src/util/virtypedparam.h
index 4aa597bc81..45422c2673 100644
--- a/src/util/virtypedparam.h
+++ b/src/util/virtypedparam.h
@@ -156,6 +156,10 @@ virTypedParamList *
virTypedParamListFromParams(virTypedParameterPtr *params,
size_t nparams);
+void
+virTypedParamListConcat(virTypedParamList *to,
+ virTypedParamList **fromptr);
+
int
virTypedParamListAddInt(virTypedParamList *list,
int value,