Luiz Capitulino <lcapitul...@redhat.com> writes: > On Thu, 11 Nov 2010 16:47:41 +0100 > Markus Armbruster <arm...@redhat.com> wrote: > >> Luiz Capitulino <lcapitul...@redhat.com> writes: >> >> > On Wed, 10 Nov 2010 14:20:12 +0100 >> > Markus Armbruster <arm...@redhat.com> wrote: >> > >> >> Luiz Capitulino <lcapitul...@redhat.com> writes: >> [...] >> >> > diff --git a/qmp-commands.hx b/qmp-commands.hx >> >> > index 793cf1c..b344096 100644 >> >> > --- a/qmp-commands.hx >> >> > +++ b/qmp-commands.hx >> >> > @@ -761,6 +761,51 @@ Example: >> >> > >> >> > Note: This command must be issued before issuing any other command. >> >> > >> >> > +EQMP >> >> > + >> >> > + { >> >> > + .name = "hmp_passthrough", >> >> > + .args_type = "command-line:s,cpu-index:i?", >> >> > + .params = "", >> >> > + .help = "", >> >> > + .user_print = monitor_user_noop, >> >> > + .mhandler.cmd_new = do_hmp_passthrough, >> >> > + }, >> >> > + >> >> > +SQMP >> >> > +hmp_passthrough >> >> > +--------------- >> >> > + >> >> > +Execute a Human Monitor command. >> >> > + >> >> > +Arguments: >> >> > + >> >> > +- command-line: the command name and its arguments, just like the >> >> > + Human Monitor's shell (json-string) >> >> > +- cpu-index: select the CPU number to be used by commands which access >> >> > CPU >> >> > + data, like 'info registers'. The Monitor selects CPU 0 if >> >> > this >> >> > + argument is not provided (json-int, optional) >> >> > + >> >> > +Example: >> >> > + >> >> > +-> { "execute": "hmp_passthrough", "arguments": { "command-line": >> >> > "info kvm" } } >> >> > +<- { "return": "kvm support: enabled\r\n" } >> >> > + >> >> > +Notes: >> >> > + >> >> > +(1) The Human Monitor is NOT an stable interface, this means that >> >> > command >> >> > + names, arguments and responses can change or be removed at ANY >> >> > time. >> >> > + Applications that rely on long term stability guarantees should NOT >> >> > + use this command >> >> > + >> >> > +(2) Limitations: >> >> > + >> >> > + o This command is stateless, this means that commands that depend >> >> > + on state information (such as getfd) might not work >> >> > + >> >> > + o Commands that prompt the user for data (eg. 'cont' when the block >> >> > + device is encrypted) don't currently work >> >> > + >> >> > 3. Query Commands >> >> > ================= >> >> >> >> In the real human monitor, cpu-index is state (Monitor member mon_cpu). >> >> For pass through, you shift that state into the client (argument >> >> cpu-index). Is there any other state that could need shifting? You >> >> mention getfd. >> > >> > Surprisingly or not, this is a very important question for QMP itself. >> > >> > Anthony has said that we should make it stateless, and I do think this >> > is good because it seems to simplify things considerably. >> > >> > However, I haven't thought about how to make things like getfd stateless. >> >> Hmm, that sounds like we should investigate the getfd problem sooner >> rather than later. > > Absolutely, but this shouldn't prevent this series of being merged, right?
Right.