On 04/11/13 15:00, Eric Blake wrote:
On 04/11/2013 06:45 AM, Peter Krempa wrote:
Instead of always using HMP use the QMP send-key command introduced in qemu 1.3.
---
+++ b/src/qemu/qemu_monitor.c
@@ -3008,14 +3008,15 @@ int qemuMonitorInjectNMI(qemuMonitorPtr mon)
int qemuMonitorSendKey(qemuMonitorPtr mon,
unsigned int holdtime,
unsigned int *keycodes,
- unsigned int nkeycodes)
+ unsigned int nkeycodes,
+ bool useQMP)
{
int ret;
VIR_DEBUG("mon=%p, holdtime=%u, nkeycodes=%u",
mon, holdtime, nkeycodes);
- if (mon->json)
+ if (mon->json && useQMP)
ret = qemuMonitorJSONSendKey(mon, holdtime, keycodes, nkeycodes);
else
ret = qemuMonitorTextSendKey(mon, holdtime, keycodes, nkeycodes);
I'm not sure I like adding the useQMP parameter. That makes for a leaky
abstraction (the caller is burdened with telling us which version of a
polymorphic function to dispatch to). What we have done in other cases
is to always dispatch to the json code, and then have the json code
_try_ the command, and if the command fails, fall back to the hmp
I saw that approach and I didn't like it thus I created this.
command. See for example qemuMonitorJSONInjectNMI. And if you do it
that way, you don't even need a qemu_capabilities bit, and the caller no
longer has to care about which version of monitor it is talking to.
Peter
--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list