[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V6 05/13] monitor: avoid use of global *cur_mon in r
From: |
Wenchao Xia |
Subject: |
[Qemu-devel] [PATCH V6 05/13] monitor: avoid use of global *cur_mon in readline_completion() |
Date: |
Thu, 11 Jul 2013 11:13:41 +0800 |
Now all completion functions do not use *cur_mon any more, instead
they use rs->mon. In short, structure ReadLineState decide where
the complete action would be taken now.
Tested with the case that qemu have two telnet monitors, auto
completion function works normal.
Take a better look at monitor_init(), it calls readline_init() which
initialize mon->rs, result is mon->rs->mon == mon. Then it calls
qemu_chr_add_handlers(), which make monitor_read() function
take *mon as its opaque. Later, when user input, monitor_read()
is called, where cur_mon is set to *mon by "cur_mon = opaque".
If qemu's monitors run in one thread, then later in
readline_handle_byte() and readline_comletion(), cur_mon is actually
equal to rs->mon, in another word it points to the actuall monitor
instance, so it is safe to replace *cur_mon in those functions.
Signed-off-by: Wenchao Xia <address@hidden>
---
readline.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/readline.c b/readline.c
index c91b324..abf27dd 100644
--- a/readline.c
+++ b/readline.c
@@ -276,7 +276,6 @@ void readline_set_completion_index(ReadLineState *rs, int
index)
static void readline_completion(ReadLineState *rs)
{
- Monitor *mon = cur_mon;
int len, i, j, max_width, nb_cols, max_prefix;
char *cmdline;
@@ -300,7 +299,7 @@ static void readline_completion(ReadLineState *rs)
if (len > 0 && rs->completions[0][len - 1] != '/')
readline_insert_char(rs, ' ');
} else {
- monitor_printf(mon, "\n");
+ monitor_printf(rs->mon, "\n");
max_width = 0;
max_prefix = 0;
for(i = 0; i < rs->nb_completions; i++) {
--
1.7.1
- [Qemu-devel] [PATCH V6 00/13] monitor: support sub command group in auto completion and help, Wenchao Xia, 2013/07/10
- [Qemu-devel] [PATCH V6 06/13] monitor: avoid direct use of global variable *mon_cmds, Wenchao Xia, 2013/07/10
- [Qemu-devel] [PATCH V6 07/13] monitor: code move for parse_cmdline(), Wenchao Xia, 2013/07/10
- [Qemu-devel] [PATCH V6 08/13] monitor: refine parse_cmdline(), Wenchao Xia, 2013/07/10
- [Qemu-devel] [PATCH V6 09/13] monitor: support sub command in help, Wenchao Xia, 2013/07/10
- [Qemu-devel] [PATCH V6 10/13] monitor: refine monitor_find_completion(), Wenchao Xia, 2013/07/10