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

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


On 04/11/13 15:41, Daniel P. Berrange wrote:
> On Thu, Apr 11, 2013 at 03:06:51PM +0200, Peter Krempa wrote:
>> 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.
>
> We use that approach for all other monitors commands, and we should
> maintain the consistent approach for this sendkey command too. So
> please make this work as Eric describes.

I already done it that way:
http://www.redhat.com/archives/libvir-list/2013-April/msg00897.html

Peter





More information about the libvir-list mailing list