[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