[libvirt] [PATCH] qemu: Use QMP for send-key if supported

Peter Krempa pkrempa at redhat.com
Thu Apr 11 13:06:51 UTC 2013


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




More information about the libvir-list mailing list