mirror of https://github.com/xemu-project/xemu.git
docs/devel/writing-monitor-commands: Minor improvements
Avoid "JSON" when talking about the QAPI schema syntax. Capitalize QEMU. Don't claim all HMP commands live in monitor/hmp-cmds.c (this was never true). Fix punctuation and drop inappropriate "the" here and there. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-ID: <20240227115617.237875-3-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
59807e2098
commit
8a62ef7bd9
|
@ -115,8 +115,7 @@ the bottom::
|
|||
##
|
||||
{ 'command': 'hello-world' }
|
||||
|
||||
The "command" keyword defines a new QMP command. It's an JSON object. All
|
||||
schema entries are JSON objects. The line above will instruct the QAPI to
|
||||
The "command" keyword defines a new QMP command. It instructs QAPI to
|
||||
generate any prototypes and the necessary code to marshal and unmarshal
|
||||
protocol data.
|
||||
|
||||
|
@ -138,16 +137,16 @@ There are a few things to be noticed:
|
|||
3. It takes an "Error \*\*" argument. This is required. Later we will see how to
|
||||
return errors and take additional arguments. The Error argument should not
|
||||
be touched if the command doesn't return errors
|
||||
4. We won't add the function's prototype. That's automatically done by the QAPI
|
||||
4. We won't add the function's prototype. That's automatically done by QAPI
|
||||
5. Printing to the terminal is discouraged for QMP commands, we do it here
|
||||
because it's the easiest way to demonstrate a QMP command
|
||||
|
||||
You're done. Now build qemu, run it as suggested in the "Testing" section,
|
||||
You're done. Now build QEMU, run it as suggested in the "Testing" section,
|
||||
and then type the following QMP command::
|
||||
|
||||
{ "execute": "hello-world" }
|
||||
|
||||
Then check the terminal running qemu and look for the "Hello, world" string. If
|
||||
Then check the terminal running QEMU and look for the "Hello, world" string. If
|
||||
you don't see it then something went wrong.
|
||||
|
||||
|
||||
|
@ -201,7 +200,7 @@ There are two important details to be noticed:
|
|||
2. The C implementation signature must follow the schema's argument ordering,
|
||||
which is defined by the "data" member
|
||||
|
||||
Time to test our new version of the "hello-world" command. Build qemu, run it as
|
||||
Time to test our new version of the "hello-world" command. Build QEMU, run it as
|
||||
described in the "Testing" section and then send two commands::
|
||||
|
||||
{ "execute": "hello-world" }
|
||||
|
@ -210,13 +209,13 @@ described in the "Testing" section and then send two commands::
|
|||
}
|
||||
}
|
||||
|
||||
{ "execute": "hello-world", "arguments": { "message": "We love qemu" } }
|
||||
{ "execute": "hello-world", "arguments": { "message": "We love QEMU" } }
|
||||
{
|
||||
"return": {
|
||||
}
|
||||
}
|
||||
|
||||
You should see "Hello, world" and "We love qemu" in the terminal running qemu,
|
||||
You should see "Hello, world" and "We love QEMU" in the terminal running QEMU,
|
||||
if you don't see these strings, then something went wrong.
|
||||
|
||||
|
||||
|
@ -246,7 +245,7 @@ The first argument to the error_setg() function is the Error pointer
|
|||
to pointer, which is passed to all QMP functions. The next argument is a human
|
||||
description of the error, this is a free-form printf-like string.
|
||||
|
||||
Let's test the example above. Build qemu, run it as defined in the "Testing"
|
||||
Let's test the example above. Build QEMU, run it as defined in the "Testing"
|
||||
section, and then issue the following command::
|
||||
|
||||
{ "execute": "hello-world", "arguments": { "message": "all you need is love" } }
|
||||
|
@ -279,9 +278,8 @@ Implementing the HMP command
|
|||
Now that the QMP command is in place, we can also make it available in the human
|
||||
monitor (HMP).
|
||||
|
||||
With the introduction of the QAPI, HMP commands make QMP calls. Most of the
|
||||
time HMP commands are simple wrappers. All HMP commands implementation exist in
|
||||
the monitor/hmp-cmds.c file.
|
||||
With the introduction of QAPI, HMP commands make QMP calls. Most of the
|
||||
time HMP commands are simple wrappers.
|
||||
|
||||
Here's the implementation of the "hello-world" HMP command::
|
||||
|
||||
|
@ -332,17 +330,17 @@ To test this you have to open a user monitor and issue the "hello-world"
|
|||
command. It might be instructive to check the command's documentation with
|
||||
HMP's "help" command.
|
||||
|
||||
Please, check the "-monitor" command-line option to know how to open a user
|
||||
Please check the "-monitor" command-line option to know how to open a user
|
||||
monitor.
|
||||
|
||||
|
||||
Writing more complex commands
|
||||
-----------------------------
|
||||
|
||||
A QMP command is capable of returning any data the QAPI supports like integers,
|
||||
A QMP command is capable of returning any data QAPI supports like integers,
|
||||
strings, booleans, enumerations and user defined types.
|
||||
|
||||
In this section we will focus on user defined types. Please, check the QAPI
|
||||
In this section we will focus on user defined types. Please check the QAPI
|
||||
documentation for information about the other types.
|
||||
|
||||
|
||||
|
@ -463,7 +461,7 @@ There are a number of things to be noticed:
|
|||
member, it comes with a 'has_bootindex' member that needs to be set
|
||||
by the implementation, as shown above
|
||||
|
||||
Time to test the new command. Build qemu, run it as described in the "Testing"
|
||||
Time to test the new command. Build QEMU, run it as described in the "Testing"
|
||||
section and try this::
|
||||
|
||||
{ "execute": "query-option-rom" }
|
||||
|
@ -532,7 +530,7 @@ option-roms" follows::
|
|||
Show the option ROMs.
|
||||
ERST
|
||||
|
||||
To test this, run qemu and type "info option-roms" in the user monitor.
|
||||
To test this, run QEMU and type "info option-roms" in the user monitor.
|
||||
|
||||
|
||||
Writing a debugging aid returning unstructured text
|
||||
|
|
Loading…
Reference in New Issue