From nobody Tue May 13 15:40:05 2025 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1675414137; cv=none; d=zohomail.com; s=zohoarc; b=UvewB0+/WJIjaBomL+atmn8M0+fPdy4KJrHUBlEILZnUHY0fL75qZbEpv+kM6U6Qwdv+ShMbkMmlG611WO0OAMNPf9qsk3UnbApip3q8c09I4lzfUqDsruwAjK9gHVfFO5jnK+ZDTLeBTgI5XA+jVPue46RxadJr9Dn2uW9juug= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675414137; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=91SVWpG0i9vNS5vtzak70xhDGswwW/hVC0UO6rEoXVs=; b=WFsaEK4msa15nuZk024BCLlwU5ISnqlXHZlnO9SiwzYl/UXtf5x0ht0+63aUyVINkx735bC+8hHwGhNDPl4GkUIWjCnuiU/1IiJ/jx5qqx2qcy03VOGi5EdWjMVYkolgrGcASyL0G3wVvZCP+iikO+dkMbCceXze8QuR9DCRkD8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1675414137942153.71228497501727; Fri, 3 Feb 2023 00:48:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pNrhz-0008QQ-TV; Fri, 03 Feb 2023 03:46:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pNrho-0008JV-NB for qemu-devel@nongnu.org; Fri, 03 Feb 2023 03:46:03 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pNrhk-0007Tn-Qq for qemu-devel@nongnu.org; Fri, 03 Feb 2023 03:46:00 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-127-Y679Wj9ANqe9FT5Lqi-bxQ-1; Fri, 03 Feb 2023 03:45:54 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1A697802D2A; Fri, 3 Feb 2023 08:45:54 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A53FB112132D; Fri, 3 Feb 2023 08:45:53 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id F1DFF21E6880; Fri, 3 Feb 2023 09:45:49 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1675413955; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=91SVWpG0i9vNS5vtzak70xhDGswwW/hVC0UO6rEoXVs=; b=ivk0JYFPjrqjS0finMhAmUNOwMA2u0CIJaRh1AoLpFPpZnZjBPUHIPYcEm6+2Kh4GcdG1S 9OPBymNUyCMLZ/4cFpNplMsNysDqGJHI6bfrx6jbWrWBw/nwAWG3gnK5lGGQkAP2rvpQRE p0Qkv8yUikfxlTRct5DVT9wzZZ5cQs8= X-MC-Unique: Y679Wj9ANqe9FT5Lqi-bxQ-1 From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org Subject: [PULL 28/35] qdev: Move HMP command completion from monitor to softmmu/ Date: Fri, 3 Feb 2023 09:45:42 +0100 Message-Id: <20230203084549.2622302-29-armbru@redhat.com> In-Reply-To: <20230203084549.2622302-1-armbru@redhat.com> References: <20230203084549.2622302-1-armbru@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1675414138665100001 Content-Type: text/plain; charset="utf-8" This moves the completion code from MAINTAINERS sections "Human Monitor (HMP)" and "QMP" to section "QOM". Signed-off-by: Markus Armbruster Message-Id: <20230124121946.1139465-26-armbru@redhat.com> --- monitor/misc.c | 82 ------------------------------------------ softmmu/qdev-monitor.c | 82 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 82 deletions(-) diff --git a/monitor/misc.c b/monitor/misc.c index a2584df0ca..c76d583b4f 100644 --- a/monitor/misc.c +++ b/monitor/misc.c @@ -1206,88 +1206,6 @@ int get_monitor_def(Monitor *mon, int64_t *pval, con= st char *name) return ret; } =20 -void device_add_completion(ReadLineState *rs, int nb_args, const char *str) -{ - GSList *list, *elt; - size_t len; - - if (nb_args !=3D 2) { - return; - } - - len =3D strlen(str); - readline_set_completion_index(rs, len); - list =3D elt =3D object_class_get_list(TYPE_DEVICE, false); - while (elt) { - DeviceClass *dc =3D OBJECT_CLASS_CHECK(DeviceClass, elt->data, - TYPE_DEVICE); - - if (dc->user_creatable) { - readline_add_completion_of(rs, str, - object_class_get_name(OBJECT_CLASS(dc))); - } - elt =3D elt->next; - } - g_slist_free(list); -} - -static int qdev_add_hotpluggable_device(Object *obj, void *opaque) -{ - GSList **list =3D opaque; - DeviceState *dev =3D (DeviceState *)object_dynamic_cast(obj, TYPE_DEVI= CE); - - if (dev =3D=3D NULL) { - return 0; - } - - if (dev->realized && object_property_get_bool(obj, "hotpluggable", NUL= L)) { - *list =3D g_slist_append(*list, dev); - } - - return 0; -} - -static GSList *qdev_build_hotpluggable_device_list(Object *peripheral) -{ - GSList *list =3D NULL; - - object_child_foreach(peripheral, qdev_add_hotpluggable_device, &list); - - return list; -} - -static void peripheral_device_del_completion(ReadLineState *rs, - const char *str) -{ - Object *peripheral =3D container_get(qdev_get_machine(), "/peripheral"= ); - GSList *list, *item; - - list =3D qdev_build_hotpluggable_device_list(peripheral); - if (!list) { - return; - } - - for (item =3D list; item; item =3D g_slist_next(item)) { - DeviceState *dev =3D item->data; - - if (dev->id) { - readline_add_completion_of(rs, str, dev->id); - } - } - - g_slist_free(list); -} - -void device_del_completion(ReadLineState *rs, int nb_args, const char *str) -{ - if (nb_args !=3D 2) { - return; - } - - readline_set_completion_index(rs, strlen(str)); - peripheral_device_del_completion(rs, str); -} - static int compare_mon_cmd(const void *a, const void *b) { diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c index 4b0ef65780..b8d2c4dadd 100644 --- a/softmmu/qdev-monitor.c +++ b/softmmu/qdev-monitor.c @@ -973,6 +973,88 @@ void hmp_device_del(Monitor *mon, const QDict *qdict) hmp_handle_error(mon, err); } =20 +void device_add_completion(ReadLineState *rs, int nb_args, const char *str) +{ + GSList *list, *elt; + size_t len; + + if (nb_args !=3D 2) { + return; + } + + len =3D strlen(str); + readline_set_completion_index(rs, len); + list =3D elt =3D object_class_get_list(TYPE_DEVICE, false); + while (elt) { + DeviceClass *dc =3D OBJECT_CLASS_CHECK(DeviceClass, elt->data, + TYPE_DEVICE); + + if (dc->user_creatable) { + readline_add_completion_of(rs, str, + object_class_get_name(OBJECT_CLASS(dc))); + } + elt =3D elt->next; + } + g_slist_free(list); +} + +static int qdev_add_hotpluggable_device(Object *obj, void *opaque) +{ + GSList **list =3D opaque; + DeviceState *dev =3D (DeviceState *)object_dynamic_cast(obj, TYPE_DEVI= CE); + + if (dev =3D=3D NULL) { + return 0; + } + + if (dev->realized && object_property_get_bool(obj, "hotpluggable", NUL= L)) { + *list =3D g_slist_append(*list, dev); + } + + return 0; +} + +static GSList *qdev_build_hotpluggable_device_list(Object *peripheral) +{ + GSList *list =3D NULL; + + object_child_foreach(peripheral, qdev_add_hotpluggable_device, &list); + + return list; +} + +static void peripheral_device_del_completion(ReadLineState *rs, + const char *str) +{ + Object *peripheral =3D container_get(qdev_get_machine(), "/peripheral"= ); + GSList *list, *item; + + list =3D qdev_build_hotpluggable_device_list(peripheral); + if (!list) { + return; + } + + for (item =3D list; item; item =3D g_slist_next(item)) { + DeviceState *dev =3D item->data; + + if (dev->id) { + readline_add_completion_of(rs, str, dev->id); + } + } + + g_slist_free(list); +} + +void device_del_completion(ReadLineState *rs, int nb_args, const char *str) +{ + if (nb_args !=3D 2) { + return; + } + + readline_set_completion_index(rs, strlen(str)); + peripheral_device_del_completion(rs, str); +} + BlockBackend *blk_by_qdev_id(const char *id, Error **errp) { DeviceState *dev; --=20 2.39.0