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(a)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