}
-int
-qemuProcessQMPRun(qemuProcessQMPPtr proc)
+static int
+qemuProcessQMPInit(qemuProcessQMPPtr proc)
+{
+ int ret = -1;
+
+ VIR_DEBUG("proc=%p, emulator=%s", proc, proc->binary);
+
+ ret = 0;
+
+ return ret;
+}
+
+
+static int
+qemuProcessQMPLaunch(qemuProcessQMPPtr proc)
{
virDomainXMLOptionPtr xmlopt = NULL;
const char *machine;
}
+static int
+qemuProcessQMPConnectMonitor(qemuProcessQMPPtr proc)
+{
+ int ret = -1;
+
+ VIR_DEBUG("proc=%p, emulator=%s, proc->pid=%lld",
+ proc, proc->binary, (long long)proc->pid);
+
+ ret = 0;
+
+ return ret;
+}
+
+
+/**
+ * qemuProcessQMPStart:
+ * @proc: QEMU process and connection state created by qemuProcessQMPNew()
+ *
+ * Start and connect to QEMU binary so QMP queries can be made.
+ *
+ * Usage:
+ * proc = qemuProcessQMPNew(binary, libDir, runUid, runGid, forceTCG);
+ * qemuProcessQMPStart(proc);
+ * ** Send QMP Queries to QEMU using monitor (proc->mon) **
+ * qemuProcessQMPStop(proc);
+ * qemuProcessQMPFree(proc);
+ *
+ * Process error output (proc->stderr) remains available in qemuProcessQMP
+ * struct until qemuProcessQMPFree is called.
+ */
+int
+qemuProcessQMPStart(qemuProcessQMPPtr proc)
+{
+ int ret = -1;
+
+ VIR_DEBUG("proc=%p, emulator=%s", proc, proc->binary);
+
+ if (qemuProcessQMPInit(proc) < 0)
+ goto cleanup;
+
+ if (qemuProcessQMPLaunch(proc) < 0)
+ goto stop;
+
+ if (qemuProcessQMPConnectMonitor(proc) < 0)
+ goto stop;
+
+ ret = 0;
+
+ cleanup:
+ return ret;
+
+ stop:
+ qemuProcessQMPStop(proc);
+ goto cleanup;
+}
+
+
void
qemuProcessQMPStop(qemuProcessQMPPtr proc)
{