* Jag Raman ([email protected]) wrote:
>
>
> On 3/5/2020 5:39 AM, Dr. David Alan Gilbert wrote:
> > * Jagannathan Raman ([email protected]) wrote:
> > > From: Elena Ufimtseva <[email protected]>
> > >
> > > Add "targets" field to HMP command definition to select the targets
> > > which would be supported by each command
> > >
> > > Signed-off-by: Elena Ufimtseva <[email protected]>
> > > Signed-off-by: John G Johnson <[email protected]>
> > > Signed-off-by: Jagannathan Raman <[email protected]>
> > > ---
> > > hmp-commands-info.hx | 10 ++++++++++
> > > hmp-commands.hx | 20 ++++++++++++++++++++
> > > scripts/hxtool | 44 ++++++++++++++++++++++++++++++++++++++++++--
> > > 3 files changed, 72 insertions(+), 2 deletions(-)
> > > mode change 100644 => 100755 scripts/hxtool
> > >
> > > diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
> > > index 257ee7d..631cc76 100644
> > > --- a/hmp-commands-info.hx
> > > +++ b/hmp-commands-info.hx
> > > @@ -19,6 +19,7 @@ ETEXI
> > > .params = "",
> > > .help = "show the version of QEMU",
> > > .cmd = hmp_info_version,
> > > + .targets = "scsi",
> > > .flags = "p",
> > > },
> > > @@ -48,6 +49,7 @@ ETEXI
> > > .params = "",
> > > .help = "show the character devices",
> > > .cmd = hmp_info_chardev,
> > > + .targets = "scsi",
> >
> > I'm a bit confused what this means; is this saying that the scsi-remote
> > will respond to 'info chardev' ? Why would it be interested in info
> > chardev?
>
> We found that QMP/HMP monitor is initialized as a chardev in QEMU. So we
> could use this to get info about the monitors attached to the remote
> process.
Ah OK.
> >
> > > .flags = "p",
> > > },
> > > @@ -64,6 +66,7 @@ ETEXI
> > > .help = "show info of one block device or all block
> > > devices "
> > > "(-n: show named nodes; -v: show details)",
> > > .cmd = hmp_info_block,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -78,6 +81,7 @@ ETEXI
> > > .params = "",
> > > .help = "show block device statistics",
> > > .cmd = hmp_info_blockstats,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -92,6 +96,7 @@ ETEXI
> > > .params = "",
> > > .help = "show progress of ongoing block device
> > > operations",
> > > .cmd = hmp_info_block_jobs,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -167,6 +172,7 @@ ETEXI
> > > .params = "",
> > > .help = "show the command line history",
> > > .cmd = hmp_info_history,
> > > + .targets = "scsi",
> > > .flags = "p",
> > > },
> > > @@ -224,6 +230,7 @@ ETEXI
> > > .params = "",
> > > .help = "show PCI info",
> > > .cmd = hmp_info_pci,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -630,6 +637,7 @@ ETEXI
> > > .params = "",
> > > .help = "show device tree",
> > > .cmd = hmp_info_qtree,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -644,6 +652,7 @@ ETEXI
> > > .params = "",
> > > .help = "show qdev device model list",
> > > .cmd = hmp_info_qdm,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -658,6 +667,7 @@ ETEXI
> > > .params = "[path]",
> > > .help = "show QOM composition tree",
> > > .cmd = hmp_info_qom_tree,
> > > + .targets = "scsi",
> > > .flags = "p",
> > > },
> > > diff --git a/hmp-commands.hx b/hmp-commands.hx
> > > index dc23185..ecc6169 100644
> > > --- a/hmp-commands.hx
> > > +++ b/hmp-commands.hx
> > > @@ -49,6 +49,7 @@ ETEXI
> > > .params = "",
> > > .help = "quit the emulator",
> > > .cmd = hmp_quit,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -82,6 +83,7 @@ ETEXI
> > > .params = "device size",
> > > .help = "resize a block image",
> > > .cmd = hmp_block_resize,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -99,6 +101,7 @@ ETEXI
> > > .params = "device [speed [base]]",
> > > .help = "copy data from a backing file into a block
> > > device",
> > > .cmd = hmp_block_stream,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -113,6 +116,7 @@ ETEXI
> > > .params = "device speed",
> > > .help = "set maximum speed for a background block
> > > operation",
> > > .cmd = hmp_block_job_set_speed,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -129,6 +133,7 @@ ETEXI
> > > "\n\t\t\t if you want to abort the operation
> > > immediately"
> > > "\n\t\t\t instead of keep running until data is
> > > in sync)",
> > > .cmd = hmp_block_job_cancel,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -143,6 +148,7 @@ ETEXI
> > > .params = "device",
> > > .help = "stop an active background block operation",
> > > .cmd = hmp_block_job_complete,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -158,6 +164,7 @@ ETEXI
> > > .params = "device",
> > > .help = "pause an active background block operation",
> > > .cmd = hmp_block_job_pause,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -172,6 +179,7 @@ ETEXI
> > > .params = "device",
> > > .help = "resume a paused background block operation",
> > > .cmd = hmp_block_job_resume,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -186,6 +194,7 @@ ETEXI
> > > .params = "[-f] device",
> > > .help = "eject a removable medium (use -f to force it)",
> > > .cmd = hmp_eject,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -200,6 +209,7 @@ ETEXI
> > > .params = "device",
> > > .help = "remove host block device",
> > > .cmd = hmp_drive_del,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -219,6 +229,7 @@ ETEXI
> > > .params = "device filename [format [read-only-mode]]",
> > > .help = "change a removable medium, optional format",
> > > .cmd = hmp_change,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -732,6 +743,7 @@ ETEXI
> > > .help = "add device, like -device on the command line",
> > > .cmd = hmp_device_add,
> > > .command_completion = device_add_completion,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -747,6 +759,7 @@ ETEXI
> > > .help = "remove device",
> > > .cmd = hmp_device_del,
> > > .command_completion = device_del_completion,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -1351,6 +1364,7 @@ ETEXI
> > > "The -c flag requests QEMU to compress backup
> > > data\n\t\t\t"
> > > "(if the target format supports it).\n\t\t\t",
> > > .cmd = hmp_drive_backup,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @item drive_backup
> > > @@ -1368,6 +1382,7 @@ ETEXI
> > > "[,readonly=on|off][,copy-on-read=on|off]",
> > > .help = "add drive to PCI storage controller",
> > > .cmd = hmp_drive_add,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -1816,6 +1831,7 @@ ETEXI
> > > .help = "add chardev",
> > > .cmd = hmp_chardev_add,
> > > .command_completion = chardev_add_completion,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -1831,6 +1847,7 @@ ETEXI
> > > .params = "id args",
> > > .help = "change chardev",
> > > .cmd = hmp_chardev_change,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -1848,6 +1865,7 @@ ETEXI
> > > .help = "remove chardev",
> > > .cmd = hmp_chardev_remove,
> > > .command_completion = chardev_remove_completion,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -1864,6 +1882,7 @@ ETEXI
> > > .help = "send a break on chardev",
> > > .cmd = hmp_chardev_send_break,
> > > .command_completion = chardev_remove_completion,
> > > + .targets = "scsi",
> > > },
> > > STEXI
> > > @@ -1940,6 +1959,7 @@ ETEXI
> > > .params = "[subcommand]",
> > > .help = "show various information about the system state",
> > > .cmd = hmp_info_help,
> > > + .targets = "scsi",
> > > .sub_table = hmp_info_cmds,
> > > .flags = "p",
> > > },
> > > diff --git a/scripts/hxtool b/scripts/hxtool
> > > old mode 100644
> > > new mode 100755
> > > index 0003e7b..802cbd4
> > > --- a/scripts/hxtool
> > > +++ b/scripts/hxtool
> > > @@ -10,7 +10,14 @@ hxtoh()
> > > STEXI*|ETEXI*|SRST*|ERST*) flag=$(($flag^1))
> > > ;;
> > > *)
> > > - test $flag -eq 1 && printf "%s\n" "$str"
> > > + # Skip line that has ".targets" as it is for multi-process
> > > targets based hmp
> > > + # commands generation.
> > > + echo $str | grep -q '.targets'
> > > + if [ $? -eq 0 ]; then
> > > + continue
> > > + else
> > > + test $flag -eq 1 && printf "%s\n" "$str"
> > > + fi
> > > ;;
> > > esac
> > > done
> > > @@ -84,16 +91,49 @@ hxtotexi()
> > > print_texi_heading "$(expr "$str" :
> > > "ARCHHEADING(\(.*\),.*)")"
> > > ;;
> > > *)
> > > - test $flag -eq 1 && printf '%s\n' "$str"
> > > + # Skip line that has ".targets" as it is for multi-process
> > > targets based hmp
> > > + # commands generation.
> > > + echo $str | grep -q '.targetss'
> >
> > One extra 's' ?
>
> Thanks, we'll fix it.
>
> --
> Jag
>
> >
> > > + if [ $? -eq 0 ]; then
> > > + continue
> > > + else
> > > + test $flag -eq 1 && printf '%s\n' "$str"
> > > + fi
> > > ;;
> > > esac
> > > line=$((line+1))
> > > done
> > > }
> > > +hxtoh_tgt()
> > > +{
> > > + section=""
> > > + flag=1
> > > + use_section=0
> > > + while read -r str; do
> > > + # Print section if it has ".targets" and the second argument
> > > passed to the
> > > + # script, such as "scsi".
> > > + echo "$str" | grep -q -E ".targets.*$1"
> > > + if [ $? -eq 0 ]; then
> > > + use_section=1
> > > + continue
> > > + fi
> > > + case $str in
> > > + HXCOMM*)
> > > + ;;
> > > + STEXI*|ETEXI*) flag=$(($flag^1)); test $use_section -eq 1 &&
> > > printf '%s' "$section"; section=""; use_section=0
> > > + ;;
> > > + *)
> > > + test $flag -eq 1 && section="${section} ${str} ${IFS}"
> > > + ;;
> > > + esac
> > > + done
> > > +}
> > > +
> > > case "$1" in
> > > "-h") hxtoh ;;
> > > "-t") hxtotexi ;;
> > > +"-tgt") hxtoh_tgt $2 ;;
> > > *) exit 1 ;;
> > > esac
> > > --
> > > 1.8.3.1
> > >
> > --
> > Dr. David Alan Gilbert / [email protected] / Manchester, UK
> >
>
--
Dr. David Alan Gilbert / [email protected] / Manchester, UK