:p
atchew
Login
The monitor screen can be cluttered after executing commands like `info qtree`. It is useful to have a command to clear current screen, just like linux `clear` command do. This patch has been tested under monitors using stdio, vc, tcp socket, unix socket and serial interfaces. Signed-off-by: Alano Song <AlanoSong@163.com> --- hmp-commands.hx | 14 ++++++++++++++ include/monitor/hmp.h | 1 + monitor/hmp-cmds.c | 5 +++++ 3 files changed, 20 insertions(+) diff --git a/hmp-commands.hx b/hmp-commands.hx index XXXXXXX..XXXXXXX 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -XXX,XX +XXX,XX @@ SRST Show the help for all commands or just for command *cmd*. ERST + { + .name = "clear", + .args_type = "", + .params = "", + .help = "clear the monitor screen", + .cmd = hmp_clear, + .flags = "p", + }, + +SRST +``clear`` + Clear the monitor screen. +ERST + { .name = "commit", .args_type = "device:B", diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h index XXXXXXX..XXXXXXX 100644 --- a/include/monitor/hmp.h +++ b/include/monitor/hmp.h @@ -XXX,XX +XXX,XX @@ void hmp_trace_event(Monitor *mon, const QDict *qdict); void hmp_trace_file(Monitor *mon, const QDict *qdict); void hmp_info_trace_events(Monitor *mon, const QDict *qdict); void hmp_help(Monitor *mon, const QDict *qdict); +void hmp_clear(Monitor *mon, const QDict *qdict); void hmp_info_help(Monitor *mon, const QDict *qdict); void hmp_info_sync_profile(Monitor *mon, const QDict *qdict); void hmp_info_history(Monitor *mon, const QDict *qdict); diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index XXXXXXX..XXXXXXX 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -XXX,XX +XXX,XX @@ void hmp_help(Monitor *mon, const QDict *qdict) hmp_help_cmd(mon, qdict_get_try_str(qdict, "name")); } +void hmp_clear(Monitor *mon, const QDict *qdict) +{ + monitor_printf(mon, "\x1b[3J\x1b[2J\x1b[H"); +} + void hmp_info_help(Monitor *mon, const QDict *qdict) { hmp_help_cmd(mon, "info"); -- 2.43.0
Add `clear` command in monitor, just like linux terminal `clear` command do. --- v2: - Correct the ANSI escape sequence order. - Add more detailed comment in code. v1: - Init commit, see: https://lore.kernel.org/qemu-devel/20260418133927.43012-1-AlanoSong@163.com/ Signed-off-by: Alano Song <AlanoSong@163.com> --- Alano Song (1): monitor: Add `clear` command hmp-commands.hx | 14 ++++++++++++++ include/monitor/hmp.h | 1 + monitor/hmp-cmds.c | 11 +++++++++++ 3 files changed, 26 insertions(+) -- 2.43.0
The monitor screen can be cluttered after executing commands like `info qtree`. It is useful to have a command to clear current screen, just like linux `clear` command do. This patch has been tested under monitors using stdio, vc, tcp socket, unix socket and serial interfaces. Signed-off-by: Alano Song <AlanoSong@163.com> --- hmp-commands.hx | 14 ++++++++++++++ include/monitor/hmp.h | 1 + monitor/hmp-cmds.c | 11 +++++++++++ 3 files changed, 26 insertions(+) diff --git a/hmp-commands.hx b/hmp-commands.hx index XXXXXXX..XXXXXXX 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -XXX,XX +XXX,XX @@ SRST Show the help for all commands or just for command *cmd*. ERST + { + .name = "clear", + .args_type = "", + .params = "", + .help = "clear the monitor screen", + .cmd = hmp_clear, + .flags = "p", + }, + +SRST +``clear`` + Clear the monitor screen. +ERST + { .name = "commit", .args_type = "device:B", diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h index XXXXXXX..XXXXXXX 100644 --- a/include/monitor/hmp.h +++ b/include/monitor/hmp.h @@ -XXX,XX +XXX,XX @@ void hmp_trace_event(Monitor *mon, const QDict *qdict); void hmp_trace_file(Monitor *mon, const QDict *qdict); void hmp_info_trace_events(Monitor *mon, const QDict *qdict); void hmp_help(Monitor *mon, const QDict *qdict); +void hmp_clear(Monitor *mon, const QDict *qdict); void hmp_info_help(Monitor *mon, const QDict *qdict); void hmp_info_sync_profile(Monitor *mon, const QDict *qdict); void hmp_info_history(Monitor *mon, const QDict *qdict); diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index XXXXXXX..XXXXXXX 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -XXX,XX +XXX,XX @@ void hmp_help(Monitor *mon, const QDict *qdict) hmp_help_cmd(mon, qdict_get_try_str(qdict, "name")); } +void hmp_clear(Monitor *mon, const QDict *qdict) +{ + /* + * Send an ANSI escape sequence: + * "\x1b[H" - move cursor to top-left + * "\x1b[2J" - clear visible screen + * "\x1b[3J" - clear scrollback + */ + monitor_printf(mon, "\x1b[H\x1b[2J\x1b[3J"); +} + void hmp_info_help(Monitor *mon, const QDict *qdict) { hmp_help_cmd(mon, "info"); -- 2.43.0