hmp-commands-info.hx | 5 +- include/system/memory.h | 3 +- monitor/hmp-cmds.c | 3 +- system/memory.c | 150 ++++++++++++++++++++++++++++++++++++---- 4 files changed, 143 insertions(+), 18 deletions(-)
From: Chao Liu <chao.liu@yeah.net>
Hi, all:
After several rounds of discussion, I think that adding a -t option to the
`info mtree` command, which enables the display of tree-like node characters
(e.g., +--, |--), is a better approach.
As BALATON Zoltan pointed out, retaining space-based indentation for displaying
memory region (mr) nodes helps ensure that the output remains easily parseable
by other programs. This also provides better compatibility with existing tools
and scripts.
Users can choose between:
- Without '-t': The default format using spaces for indentation, suitable for
scripting and parsing;
- With '-t': The tree-style format using visual characters, ideal for
human-readable output.
This way, both usability and compatibility are preserved.
---
v7:
- Rebased on the top of current upstream:
d9ce74873a6a ("Merge tag 'pull-vfio-20250611' of https://github.com/legoater/qemu
into staging")
- Add -t option to 'info mtree' for tree-style node display
v6:
- Replaced the bool type with enum mtree_node_type to improve code readability;
- Modified the output to use only one horizontal dash instead of two, and
aligned character printing for a cleaner look.
v5:
- Fix one comment, level 0 no longer prints line characters.
v4:
- When printing the child nodes of a single node, the line characters from the
parent node's level are no longer printed, making the output more concise
and clear overall;
- Use more commonly used ASCII characters, such as '|--' instead of '├──',
and '`--' instead of '└──';
- Control the number of prefix characters to reduce unnecessary output.
v3:
- Use more maintainable c functions instead of macros, as per review comments.
v2:
- Enrich the commit message, add 'info mtree' print example;
- Optimize the code implementation according to the review comments.
--
Regards,
Chao
Chao Liu (1):
system: improve visual representation of node hierarchy in 'info
mtree' output for qemu monitor
hmp-commands-info.hx | 5 +-
include/system/memory.h | 3 +-
monitor/hmp-cmds.c | 3 +-
system/memory.c | 150 ++++++++++++++++++++++++++++++++++++----
4 files changed, 143 insertions(+), 18 deletions(-)
--
2.48.1
Chao Liu <lc00631@tecorigin.com> writes: > From: Chao Liu <chao.liu@yeah.net> > > Hi, all: > > After several rounds of discussion, I think that adding a -t option to the > `info mtree` command, which enables the display of tree-like node characters > (e.g., +--, |--), is a better approach. > > As BALATON Zoltan pointed out, retaining space-based indentation for displaying > memory region (mr) nodes helps ensure that the output remains easily parseable > by other programs. This also provides better compatibility with existing tools > and scripts. If people really feed the output of HMP info mtree to parsers, we should probably provide the information via QMP. > Users can choose between: > > - Without '-t': The default format using spaces for indentation, suitable for > scripting and parsing; > - With '-t': The tree-style format using visual characters, ideal for > human-readable output. > > This way, both usability and compatibility are preserved. Maintaining compatibility is a choice in HMP, not a requirement. I'm not judging, mind.
On 2025/6/16 13:55, Markus Armbruster wrote: > Chao Liu <lc00631@tecorigin.com> writes: > >> From: Chao Liu <chao.liu@yeah.net> >> >> Hi, all: >> >> After several rounds of discussion, I think that adding a -t option to the >> `info mtree` command, which enables the display of tree-like node characters >> (e.g., +--, |--), is a better approach. >> >> As BALATON Zoltan pointed out, retaining space-based indentation for displaying >> memory region (mr) nodes helps ensure that the output remains easily parseable >> by other programs. This also provides better compatibility with existing tools >> and scripts. > > If people really feed the output of HMP info mtree to parsers, we should > probably provide the information via QMP. > Thank you for your helpful advice. I think the next step is to try implementing "info mtree" via QMP first, and then have it called by HMP. I’ve added it to my to-do list, and I’ll try to implement it using QMP in the next phase. >> Users can choose between: >> >> - Without '-t': The default format using spaces for indentation, suitable for >> scripting and parsing; >> - With '-t': The tree-style format using visual characters, ideal for >> human-readable output. >> >> This way, both usability and compatibility are preserved. > > Maintaining compatibility is a choice in HMP, not a requirement. I'm > not judging, mind.
Chao Liu <chao.liu@yeah.net> writes: > On 2025/6/16 13:55, Markus Armbruster wrote: >> Chao Liu <lc00631@tecorigin.com> writes: >> >>> From: Chao Liu <chao.liu@yeah.net> >>> >>> Hi, all: >>> >>> After several rounds of discussion, I think that adding a -t option to the >>> `info mtree` command, which enables the display of tree-like node characters >>> (e.g., +--, |--), is a better approach. >>> >>> As BALATON Zoltan pointed out, retaining space-based indentation for displaying >>> memory region (mr) nodes helps ensure that the output remains easily parseable >>> by other programs. This also provides better compatibility with existing tools >>> and scripts. >> >> If people really feed the output of HMP info mtree to parsers, we should >> probably provide the information via QMP. > > Thank you for your helpful advice. I think the next step is to try implementing "info mtree" via QMP first, and then have it called by HMP. > > I’ve added it to my to-do list, and I’ll try to implement it using QMP in the next phase. First question before you actually do that: use cases for feeding the information to programs? You might have answers already; I'm not on top of prior conversations. [...]
On Mon, 16 Jun 2025, Markus Armbruster wrote: > Chao Liu <chao.liu@yeah.net> writes: > >> On 2025/6/16 13:55, Markus Armbruster wrote: >>> Chao Liu <lc00631@tecorigin.com> writes: >>> >>>> From: Chao Liu <chao.liu@yeah.net> >>>> >>>> Hi, all: >>>> >>>> After several rounds of discussion, I think that adding a -t option to the >>>> `info mtree` command, which enables the display of tree-like node characters >>>> (e.g., +--, |--), is a better approach. >>>> >>>> As BALATON Zoltan pointed out, retaining space-based indentation for displaying >>>> memory region (mr) nodes helps ensure that the output remains easily parseable >>>> by other programs. This also provides better compatibility with existing tools >>>> and scripts. >>> >>> If people really feed the output of HMP info mtree to parsers, we should >>> probably provide the information via QMP. >> >> Thank you for your helpful advice. I think the next step is to try implementing "info mtree" via QMP first, and then have it called by HMP. >> >> I’ve added it to my to-do list, and I’ll try to implement it using QMP in the next phase. > > First question before you actually do that: use cases for feeding the > information to programs? You might have answers already; I'm not on top > of prior conversations. My request was to not make the output much wider than it is now as that would result in broken lines and less readable output. The comment was not about parsing output but keeping the result fit in not too wide terminals as 64 bit addresses makes it wide already. Thus replacing spaces with tree chars is OK with me as long as no new vertical space is added. The first version of patch increased vertical space. Using ASCII chars was request from somebody else but that makes the output look less nice so I'm not sure it worth the change with that. Maybe leaving current output then adding a separate tree mode with the original line drawing chars could satisfy all preferences. Regards, BALATON Zoltan
On 2025/6/16 22:44, Markus Armbruster wrote: > Chao Liu <chao.liu@yeah.net> writes: > >> On 2025/6/16 13:55, Markus Armbruster wrote: >>> Chao Liu <lc00631@tecorigin.com> writes: >>> >>>> From: Chao Liu <chao.liu@yeah.net> >>>> >>>> Hi, all: >>>> >>>> After several rounds of discussion, I think that adding a -t option to the >>>> `info mtree` command, which enables the display of tree-like node characters >>>> (e.g., +--, |--), is a better approach. >>>> >>>> As BALATON Zoltan pointed out, retaining space-based indentation for displaying >>>> memory region (mr) nodes helps ensure that the output remains easily parseable >>>> by other programs. This also provides better compatibility with existing tools >>>> and scripts. >>> >>> If people really feed the output of HMP info mtree to parsers, we should >>> probably provide the information via QMP. >> >> Thank you for your helpful advice. I think the next step is to try implementing "info mtree" via QMP first, and then have it called by HMP. >> >> I’ve added it to my to-do list, and I’ll try to implement it using QMP in the next phase. > > First question before you actually do that: use cases for feeding the > information to programs? You might have answers already; I'm not on top > of prior conversations. > > [...] The main purpose of this patch is not to make the memory-region tree output easier for programs to parse. Instead, it's to make the output clearer when there are many memory regions in the machine. Right now, we use spaces for indentation, which makes it hard to see the hierarchy clearly — I want similar to how the tree command works. During discussions with multiple threads, we also looked into more details, like avoiding the use of special characters.
© 2016 - 2025 Red Hat, Inc.