* [Qemu-devel] monitor: Command completion for various commands
@ 2014-05-19 23:01 Hani Benhabiles
2014-05-19 23:01 ` [Qemu-devel] [PATCH 1/7] monitor: Add ringbuf_write and ringbuf_read argument completion Hani Benhabiles
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Hani Benhabiles @ 2014-05-19 23:01 UTC (permalink / raw)
To: qemu-devel
A set of patches adding completion support for various hmp commands. Following
other series that were merged earlier.
Hani Benhabiles (7):
monitor: Add ringbuf_write and ringbuf_read argument completion.
monitor: Add watchdog_action argument completion.
monitor: Add migrate_set_capability completion.
monitor: Add host_net_add device argument completion.
readline: Make completion strings always unique.
monitor: Add host_net_remove arguments completion.
monitor: Add delvm and loadvm argument completion.
hmp-commands.hx | 10 ++-
hmp.h | 11 ++++
include/sysemu/char.h | 3 +-
monitor.c | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++
qemu-char.c | 2 +-
util/readline.c | 6 ++
6 files changed, 202 insertions(+), 4 deletions(-)
--
1.8.3.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 1/7] monitor: Add ringbuf_write and ringbuf_read argument completion.
2014-05-19 23:01 [Qemu-devel] monitor: Command completion for various commands Hani Benhabiles
@ 2014-05-19 23:01 ` Hani Benhabiles
2014-05-19 23:01 ` [Qemu-devel] [PATCH 2/7] monitor: Add watchdog_action " Hani Benhabiles
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Hani Benhabiles @ 2014-05-19 23:01 UTC (permalink / raw)
To: qemu-devel
Export chr_is_ringbuf() function. Also remove left-over function prototypes
while at it.
Signed-off-by: Hani Benhabiles <hani@linux.com>
---
hmp-commands.hx | 2 ++
hmp.h | 2 ++
include/sysemu/char.h | 3 +--
monitor.c | 39 +++++++++++++++++++++++++++++++++++++++
qemu-char.c | 2 +-
5 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index 2e462c0..dcec5ef 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -852,6 +852,7 @@ ETEXI
.params = "device data",
.help = "Write to a ring buffer character device",
.mhandler.cmd = hmp_ringbuf_write,
+ .command_completion = ringbuf_write_completion,
},
STEXI
@@ -868,6 +869,7 @@ ETEXI
.params = "device size",
.help = "Read from a ring buffer character device",
.mhandler.cmd = hmp_ringbuf_read,
+ .command_completion = ringbuf_write_completion,
},
STEXI
diff --git a/hmp.h b/hmp.h
index aba59e9..212e5d2 100644
--- a/hmp.h
+++ b/hmp.h
@@ -103,5 +103,7 @@ void chardev_add_completion(ReadLineState *rs, int nb_args, const char *str);
void set_link_completion(ReadLineState *rs, int nb_args, const char *str);
void netdev_add_completion(ReadLineState *rs, int nb_args, const char *str);
void netdev_del_completion(ReadLineState *rs, int nb_args, const char *str);
+void ringbuf_write_completion(ReadLineState *rs, int nb_args, const char *str);
+void ringbuf_read_completion(ReadLineState *rs, int nb_args, const char *str);
#endif
diff --git a/include/sysemu/char.h b/include/sysemu/char.h
index b81a6ff..7f5eeb3 100644
--- a/include/sysemu/char.h
+++ b/include/sysemu/char.h
@@ -286,9 +286,8 @@ void qemu_chr_add_handlers(CharDriverState *s,
void qemu_chr_be_generic_open(CharDriverState *s);
void qemu_chr_accept_input(CharDriverState *s);
int qemu_chr_add_client(CharDriverState *s, int fd);
-void qemu_chr_info_print(Monitor *mon, const QObject *ret_data);
-void qemu_chr_info(Monitor *mon, QObject **ret_data);
CharDriverState *qemu_chr_find(const char *name);
+bool chr_is_ringbuf(const CharDriverState *chr);
QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename);
diff --git a/monitor.c b/monitor.c
index 593679a..93eb6d8 100644
--- a/monitor.c
+++ b/monitor.c
@@ -4411,6 +4411,45 @@ void chardev_remove_completion(ReadLineState *rs, int nb_args, const char *str)
qapi_free_ChardevInfoList(start);
}
+static void ringbuf_completion(ReadLineState *rs, const char *str)
+{
+ size_t len;
+ ChardevInfoList *list, *start;
+
+ len = strlen(str);
+ readline_set_completion_index(rs, len);
+
+ start = list = qmp_query_chardev(NULL);
+ while (list) {
+ ChardevInfo *chr_info = list->value;
+
+ if (!strncmp(chr_info->label, str, len)) {
+ CharDriverState *chr = qemu_chr_find(chr_info->label);
+ if (chr && chr_is_ringbuf(chr)) {
+ readline_add_completion(rs, chr_info->label);
+ }
+ }
+ list = list->next;
+ }
+ qapi_free_ChardevInfoList(start);
+}
+
+void ringbuf_read_completion(ReadLineState *rs, int nb_args, const char *str)
+{
+ if (nb_args != 2) {
+ return;
+ }
+ ringbuf_completion(rs, str);
+}
+
+void ringbuf_write_completion(ReadLineState *rs, int nb_args, const char *str)
+{
+ if (nb_args != 2) {
+ return;
+ }
+ ringbuf_completion(rs, str);
+}
+
void device_del_completion(ReadLineState *rs, int nb_args, const char *str)
{
size_t len;
diff --git a/qemu-char.c b/qemu-char.c
index 54ed244..34c8f08 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2849,7 +2849,7 @@ fail:
return NULL;
}
-static bool chr_is_ringbuf(const CharDriverState *chr)
+bool chr_is_ringbuf(const CharDriverState *chr)
{
return chr->chr_write == ringbuf_chr_write;
}
--
1.8.3.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 2/7] monitor: Add watchdog_action argument completion.
2014-05-19 23:01 [Qemu-devel] monitor: Command completion for various commands Hani Benhabiles
2014-05-19 23:01 ` [Qemu-devel] [PATCH 1/7] monitor: Add ringbuf_write and ringbuf_read argument completion Hani Benhabiles
@ 2014-05-19 23:01 ` Hani Benhabiles
2014-05-19 23:01 ` [Qemu-devel] [PATCH 3/7] monitor: Add migrate_set_capability completion Hani Benhabiles
2014-05-19 23:05 ` [Qemu-devel] monitor: Command completion for various commands Hani Benhabiles
3 siblings, 0 replies; 6+ messages in thread
From: Hani Benhabiles @ 2014-05-19 23:01 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Hani Benhabiles <hani@linux.com>
---
hmp-commands.hx | 1 +
hmp.h | 2 ++
monitor.c | 14 ++++++++++++++
3 files changed, 17 insertions(+)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index dcec5ef..45e1763 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1359,6 +1359,7 @@ ETEXI
.params = "[reset|shutdown|poweroff|pause|debug|none]",
.help = "change watchdog action",
.mhandler.cmd = do_watchdog_action,
+ .command_completion = watchdog_action_completion,
},
STEXI
diff --git a/hmp.h b/hmp.h
index 212e5d2..a70804d 100644
--- a/hmp.h
+++ b/hmp.h
@@ -105,5 +105,7 @@ void netdev_add_completion(ReadLineState *rs, int nb_args, const char *str);
void netdev_del_completion(ReadLineState *rs, int nb_args, const char *str);
void ringbuf_write_completion(ReadLineState *rs, int nb_args, const char *str);
void ringbuf_read_completion(ReadLineState *rs, int nb_args, const char *str);
+void watchdog_action_completion(ReadLineState *rs, int nb_args,
+ const char *str);
#endif
diff --git a/monitor.c b/monitor.c
index 93eb6d8..fb300c2 100644
--- a/monitor.c
+++ b/monitor.c
@@ -4558,6 +4558,20 @@ void netdev_del_completion(ReadLineState *rs, int nb_args, const char *str)
}
}
+void watchdog_action_completion(ReadLineState *rs, int nb_args, const char *str)
+{
+ if (nb_args != 2) {
+ return;
+ }
+ readline_set_completion_index(rs, strlen(str));
+ add_completion_option(rs, str, "reset");
+ add_completion_option(rs, str, "shutdown");
+ add_completion_option(rs, str, "poweroff");
+ add_completion_option(rs, str, "pause");
+ add_completion_option(rs, str, "debug");
+ add_completion_option(rs, str, "none");
+}
+
static void monitor_find_completion_by_table(Monitor *mon,
const mon_cmd_t *cmd_table,
char **args,
--
1.8.3.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 3/7] monitor: Add migrate_set_capability completion.
2014-05-19 23:01 [Qemu-devel] monitor: Command completion for various commands Hani Benhabiles
2014-05-19 23:01 ` [Qemu-devel] [PATCH 1/7] monitor: Add ringbuf_write and ringbuf_read argument completion Hani Benhabiles
2014-05-19 23:01 ` [Qemu-devel] [PATCH 2/7] monitor: Add watchdog_action " Hani Benhabiles
@ 2014-05-19 23:01 ` Hani Benhabiles
2014-05-19 23:05 ` [Qemu-devel] monitor: Command completion for various commands Hani Benhabiles
3 siblings, 0 replies; 6+ messages in thread
From: Hani Benhabiles @ 2014-05-19 23:01 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Hani Benhabiles <hani@linux.com>
---
hmp-commands.hx | 1 +
hmp.h | 2 ++
monitor.c | 21 +++++++++++++++++++++
3 files changed, 24 insertions(+)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index 45e1763..919af6e 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -975,6 +975,7 @@ ETEXI
.params = "capability state",
.help = "Enable/Disable the usage of a capability for migration",
.mhandler.cmd = hmp_migrate_set_capability,
+ .command_completion = migrate_set_capability_completion,
},
STEXI
diff --git a/hmp.h b/hmp.h
index a70804d..0c814d0 100644
--- a/hmp.h
+++ b/hmp.h
@@ -107,5 +107,7 @@ void ringbuf_write_completion(ReadLineState *rs, int nb_args, const char *str);
void ringbuf_read_completion(ReadLineState *rs, int nb_args, const char *str);
void watchdog_action_completion(ReadLineState *rs, int nb_args,
const char *str);
+void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
+ const char *str);
#endif
diff --git a/monitor.c b/monitor.c
index fb300c2..6a3a5c9 100644
--- a/monitor.c
+++ b/monitor.c
@@ -4572,6 +4572,27 @@ void watchdog_action_completion(ReadLineState *rs, int nb_args, const char *str)
add_completion_option(rs, str, "none");
}
+void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
+ const char *str)
+{
+ size_t len;
+
+ len = strlen(str);
+ readline_set_completion_index(rs, len);
+ if (nb_args == 2) {
+ int i;
+ for (i = 0; i < MIGRATION_CAPABILITY_MAX; i++) {
+ const char *name = MigrationCapability_lookup[i];
+ if (!strncmp(str, name, len)) {
+ readline_add_completion(rs, name);
+ }
+ }
+ } else if (nb_args == 3) {
+ add_completion_option(rs, str, "on");
+ add_completion_option(rs, str, "off");
+ }
+}
+
static void monitor_find_completion_by_table(Monitor *mon,
const mon_cmd_t *cmd_table,
char **args,
--
1.8.3.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 1/7] monitor: Add ringbuf_write and ringbuf_read argument completion.
2014-05-19 23:03 Hani Benhabiles
@ 2014-05-19 23:03 ` Hani Benhabiles
0 siblings, 0 replies; 6+ messages in thread
From: Hani Benhabiles @ 2014-05-19 23:03 UTC (permalink / raw)
To: qemu-devel; +Cc: kwolf, mdroth, lcapitulino, stefanha, imammedo
Export chr_is_ringbuf() function. Also remove left-over function prototypes
while at it.
Signed-off-by: Hani Benhabiles <hani@linux.com>
---
hmp-commands.hx | 2 ++
hmp.h | 2 ++
include/sysemu/char.h | 3 +--
monitor.c | 39 +++++++++++++++++++++++++++++++++++++++
qemu-char.c | 2 +-
5 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index 2e462c0..dcec5ef 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -852,6 +852,7 @@ ETEXI
.params = "device data",
.help = "Write to a ring buffer character device",
.mhandler.cmd = hmp_ringbuf_write,
+ .command_completion = ringbuf_write_completion,
},
STEXI
@@ -868,6 +869,7 @@ ETEXI
.params = "device size",
.help = "Read from a ring buffer character device",
.mhandler.cmd = hmp_ringbuf_read,
+ .command_completion = ringbuf_write_completion,
},
STEXI
diff --git a/hmp.h b/hmp.h
index aba59e9..212e5d2 100644
--- a/hmp.h
+++ b/hmp.h
@@ -103,5 +103,7 @@ void chardev_add_completion(ReadLineState *rs, int nb_args, const char *str);
void set_link_completion(ReadLineState *rs, int nb_args, const char *str);
void netdev_add_completion(ReadLineState *rs, int nb_args, const char *str);
void netdev_del_completion(ReadLineState *rs, int nb_args, const char *str);
+void ringbuf_write_completion(ReadLineState *rs, int nb_args, const char *str);
+void ringbuf_read_completion(ReadLineState *rs, int nb_args, const char *str);
#endif
diff --git a/include/sysemu/char.h b/include/sysemu/char.h
index b81a6ff..7f5eeb3 100644
--- a/include/sysemu/char.h
+++ b/include/sysemu/char.h
@@ -286,9 +286,8 @@ void qemu_chr_add_handlers(CharDriverState *s,
void qemu_chr_be_generic_open(CharDriverState *s);
void qemu_chr_accept_input(CharDriverState *s);
int qemu_chr_add_client(CharDriverState *s, int fd);
-void qemu_chr_info_print(Monitor *mon, const QObject *ret_data);
-void qemu_chr_info(Monitor *mon, QObject **ret_data);
CharDriverState *qemu_chr_find(const char *name);
+bool chr_is_ringbuf(const CharDriverState *chr);
QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename);
diff --git a/monitor.c b/monitor.c
index 593679a..93eb6d8 100644
--- a/monitor.c
+++ b/monitor.c
@@ -4411,6 +4411,45 @@ void chardev_remove_completion(ReadLineState *rs, int nb_args, const char *str)
qapi_free_ChardevInfoList(start);
}
+static void ringbuf_completion(ReadLineState *rs, const char *str)
+{
+ size_t len;
+ ChardevInfoList *list, *start;
+
+ len = strlen(str);
+ readline_set_completion_index(rs, len);
+
+ start = list = qmp_query_chardev(NULL);
+ while (list) {
+ ChardevInfo *chr_info = list->value;
+
+ if (!strncmp(chr_info->label, str, len)) {
+ CharDriverState *chr = qemu_chr_find(chr_info->label);
+ if (chr && chr_is_ringbuf(chr)) {
+ readline_add_completion(rs, chr_info->label);
+ }
+ }
+ list = list->next;
+ }
+ qapi_free_ChardevInfoList(start);
+}
+
+void ringbuf_read_completion(ReadLineState *rs, int nb_args, const char *str)
+{
+ if (nb_args != 2) {
+ return;
+ }
+ ringbuf_completion(rs, str);
+}
+
+void ringbuf_write_completion(ReadLineState *rs, int nb_args, const char *str)
+{
+ if (nb_args != 2) {
+ return;
+ }
+ ringbuf_completion(rs, str);
+}
+
void device_del_completion(ReadLineState *rs, int nb_args, const char *str)
{
size_t len;
diff --git a/qemu-char.c b/qemu-char.c
index 54ed244..34c8f08 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2849,7 +2849,7 @@ fail:
return NULL;
}
-static bool chr_is_ringbuf(const CharDriverState *chr)
+bool chr_is_ringbuf(const CharDriverState *chr)
{
return chr->chr_write == ringbuf_chr_write;
}
--
1.8.3.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] monitor: Command completion for various commands
2014-05-19 23:01 [Qemu-devel] monitor: Command completion for various commands Hani Benhabiles
` (2 preceding siblings ...)
2014-05-19 23:01 ` [Qemu-devel] [PATCH 3/7] monitor: Add migrate_set_capability completion Hani Benhabiles
@ 2014-05-19 23:05 ` Hani Benhabiles
3 siblings, 0 replies; 6+ messages in thread
From: Hani Benhabiles @ 2014-05-19 23:05 UTC (permalink / raw)
To: qemu-devel
On Tue, May 20, 2014 at 12:01:01AM +0100, Hani Benhabiles wrote:
> A set of patches adding completion support for various hmp commands. Following
> other series that were merged earlier.
>
Resent the complete series. Please ignore this incomplete one.
Sorry for the flood.
> Hani Benhabiles (7):
> monitor: Add ringbuf_write and ringbuf_read argument completion.
> monitor: Add watchdog_action argument completion.
> monitor: Add migrate_set_capability completion.
> monitor: Add host_net_add device argument completion.
> readline: Make completion strings always unique.
> monitor: Add host_net_remove arguments completion.
> monitor: Add delvm and loadvm argument completion.
>
> hmp-commands.hx | 10 ++-
> hmp.h | 11 ++++
> include/sysemu/char.h | 3 +-
> monitor.c | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++
> qemu-char.c | 2 +-
> util/readline.c | 6 ++
> 6 files changed, 202 insertions(+), 4 deletions(-)
>
> --
> 1.8.3.2
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-05-19 23:06 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-19 23:01 [Qemu-devel] monitor: Command completion for various commands Hani Benhabiles
2014-05-19 23:01 ` [Qemu-devel] [PATCH 1/7] monitor: Add ringbuf_write and ringbuf_read argument completion Hani Benhabiles
2014-05-19 23:01 ` [Qemu-devel] [PATCH 2/7] monitor: Add watchdog_action " Hani Benhabiles
2014-05-19 23:01 ` [Qemu-devel] [PATCH 3/7] monitor: Add migrate_set_capability completion Hani Benhabiles
2014-05-19 23:05 ` [Qemu-devel] monitor: Command completion for various commands Hani Benhabiles
-- strict thread matches above, loose matches on Subject: below --
2014-05-19 23:03 Hani Benhabiles
2014-05-19 23:03 ` [Qemu-devel] [PATCH 1/7] monitor: Add ringbuf_write and ringbuf_read argument completion Hani Benhabiles
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.