[PATCH RFC 02/10] qemu_dbus: Separate PID read code into qemuDBusGetPID

Michal Privoznik mprivozn at redhat.com
Mon May 9 15:02:09 UTC 2022


In near future it will be necessary to know the PID of DBus
daemon started for QEMU. Move the code into a separate function
(qemuDBusGetPID()) and export it in the header file.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 src/qemu/qemu_dbus.c | 42 +++++++++++++++++++++++++++++-------------
 src/qemu/qemu_dbus.h |  4 ++++
 2 files changed, 33 insertions(+), 13 deletions(-)

diff --git a/src/qemu/qemu_dbus.c b/src/qemu/qemu_dbus.c
index 2ed8f8640d..0eae1aa2fe 100644
--- a/src/qemu/qemu_dbus.c
+++ b/src/qemu/qemu_dbus.c
@@ -146,28 +146,44 @@ qemuDBusStop(virQEMUDriver *driver,
 }
 
 
+int
+qemuDBusGetPID(virQEMUDriver *driver,
+               virDomainObj *vm,
+               pid_t *pid)
+{
+    g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
+    qemuDomainObjPrivate *priv = vm->privateData;
+    g_autofree char *shortName = NULL;
+    g_autofree char *pidfile = NULL;
+
+    if (!priv->dbusDaemonRunning)
+        return 0;
+
+    if (!(shortName = virDomainDefGetShortName(vm->def)))
+        return -1;
+    pidfile = qemuDBusCreatePidFilename(cfg, shortName);
+    if (virPidFileReadPath(pidfile, pid) < 0) {
+        VIR_WARN("Unable to get DBus PID");
+        return -1;
+    }
+
+    return 0;
+}
+
+
 int
 qemuDBusSetupCgroup(virQEMUDriver *driver,
                     virDomainObj *vm,
                     virCgroup *cgroup)
 {
-    g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
-    qemuDomainObjPrivate *priv = vm->privateData;
-    g_autofree char *shortName = NULL;
-    g_autofree char *pidfile = NULL;
     pid_t cpid = -1;
 
-    if (!priv->dbusDaemonRunning)
+    if (qemuDBusGetPID(driver, vm, &cpid) < 0)
+        return -1;
+
+    if (cpid == -1)
         return 0;
 
-    if (!(shortName = virDomainDefGetShortName(vm->def)))
-        return -1;
-    pidfile = qemuDBusCreatePidFilename(cfg, shortName);
-    if (virPidFileReadPath(pidfile, &cpid) < 0) {
-        VIR_WARN("Unable to get DBus PID");
-        return -1;
-    }
-
     return virCgroupAddProcess(cgroup, cpid);
 }
 
diff --git a/src/qemu/qemu_dbus.h b/src/qemu/qemu_dbus.h
index b27f38a591..a079976aa4 100644
--- a/src/qemu/qemu_dbus.h
+++ b/src/qemu/qemu_dbus.h
@@ -34,6 +34,10 @@ void qemuDBusVMStateAdd(virDomainObj *vm, const char *id);
 
 void qemuDBusVMStateRemove(virDomainObj *vm, const char *id);
 
+int qemuDBusGetPID(virQEMUDriver *driver,
+                   virDomainObj *vm,
+                   pid_t *pid);
+
 int qemuDBusSetupCgroup(virQEMUDriver *driver,
                         virDomainObj *vm,
                         virCgroup *cgroup);
-- 
2.35.1



More information about the libvir-list mailing list