On Mon, 6 Oct 2014 19:38:44 +0800 Zhu Guihua <zhugh.f...@cn.fujitsu.com> wrote:
> Add peripheral_device_del_completion() to let peripheral device del > completion be possible. > > Signed-off-by: Zhu Guihua <zhugh.f...@cn.fujitsu.com> > --- > monitor.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/monitor.c b/monitor.c > index 667efb7..ffe5405 100644 > --- a/monitor.c > +++ b/monitor.c > @@ -4351,6 +4351,29 @@ static void > device_del_bus_completion(ReadLineState *rs, BusState *bus, } > } > > +static void peripheral_device_del_completion(ReadLineState *rs, > + const char *str, size_t > len) +{ > + Object *peripheral; > + GSList *list = NULL, *item; > + > + peripheral = object_resolve_path("/machine/peripheral/", NULL); > + pls remove unnecessary blank line > + if (peripheral == NULL) { > + return; > + } > + > + object_child_foreach(peripheral, > qdev_build_hotpluggable_device_list, > + &list); > + > + for (item = list; item; item = g_slist_next(item)) { > + DeviceState *dev = item->data; add blank line here, pls. > + if (!strncmp(str, dev->id, len)) { > + readline_add_completion(rs, dev->id); > + } > + } > +} > + > void chardev_remove_completion(ReadLineState *rs, int nb_args, const > char *str) { > size_t len; > @@ -4424,6 +4447,7 @@ void device_del_completion(ReadLineState *rs, > int nb_args, const char *str) len = strlen(str); > readline_set_completion_index(rs, len); > device_del_bus_completion(rs, sysbus_get_default(), str, len); All ID-ed devices that might be available for removal are returned by following line, so do we still need above recusive bus walker that gathers duplicate devices from buses? > + peripheral_device_del_completion(rs, str, len); > } > > void object_del_completion(ReadLineState *rs, int nb_args, const > char *str)