From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38095) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XeEyH-0006Qt-1B for qemu-devel@nongnu.org; Tue, 14 Oct 2014 23:10:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XeEy4-0004xM-Ft for qemu-devel@nongnu.org; Tue, 14 Oct 2014 23:09:52 -0400 Received: from cantor2.suse.de ([195.135.220.15]:49383 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XeEy4-0004wy-3M for qemu-devel@nongnu.org; Tue, 14 Oct 2014 23:09:40 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Wed, 15 Oct 2014 05:09:20 +0200 Message-Id: <1413342561-4754-47-git-send-email-afaerber@suse.de> In-Reply-To: <1413342561-4754-1-git-send-email-afaerber@suse.de> References: <1413342561-4754-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PULL 46/47] qmp: Print descriptions of object properties List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Luiz Capitulino , Gonglei , Markus Armbruster , =?UTF-8?q?Andreas=20F=C3=A4rber?= From: Gonglei Add a new "description" field to DevicePropertyInfo. The descriptions can serve as documentation in the code, and they can be used to provide better help. For example: $./qemu-system-x86_64 -device virtio-blk-pci,? Before this patch: virtio-blk-pci.iothread=3Dlink virtio-blk-pci.x-data-plane=3Dbool virtio-blk-pci.scsi=3Dbool virtio-blk-pci.config-wce=3Dbool virtio-blk-pci.serial=3Dstr virtio-blk-pci.secs=3Duint32 virtio-blk-pci.heads=3Duint32 virtio-blk-pci.cyls=3Duint32 virtio-blk-pci.discard_granularity=3Duint32 virtio-blk-pci.bootindex=3Dint32 virtio-blk-pci.opt_io_size=3Duint32 virtio-blk-pci.min_io_size=3Duint16 virtio-blk-pci.physical_block_size=3Duint16 virtio-blk-pci.logical_block_size=3Duint16 virtio-blk-pci.drive=3Dstr virtio-blk-pci.virtio-backend=3Dchild virtio-blk-pci.command_serr_enable=3Don/off virtio-blk-pci.multifunction=3Don/off virtio-blk-pci.rombar=3Duint32 virtio-blk-pci.romfile=3Dstr virtio-blk-pci.addr=3Dpci-devfn virtio-blk-pci.event_idx=3Don/off virtio-blk-pci.indirect_desc=3Don/off virtio-blk-pci.vectors=3Duint32 virtio-blk-pci.ioeventfd=3Don/off virtio-blk-pci.class=3Duint32 After: virtio-blk-pci.iothread=3Dlink virtio-blk-pci.x-data-plane=3Dbool (on/off) virtio-blk-pci.scsi=3Dbool (on/off) virtio-blk-pci.config-wce=3Dbool (on/off) virtio-blk-pci.serial=3Dstr virtio-blk-pci.secs=3Duint32 virtio-blk-pci.heads=3Duint32 virtio-blk-pci.cyls=3Duint32 virtio-blk-pci.discard_granularity=3Duint32 virtio-blk-pci.bootindex=3Dint32 virtio-blk-pci.opt_io_size=3Duint32 virtio-blk-pci.min_io_size=3Duint16 virtio-blk-pci.physical_block_size=3Duint16 (A power of two between 512 a= nd 32768) virtio-blk-pci.logical_block_size=3Duint16 (A power of two between 512 an= d 32768) virtio-blk-pci.drive=3Dstr (ID of a drive to use as a backend) virtio-blk-pci.virtio-backend=3Dchild virtio-blk-pci.command_serr_enable=3Dbool (on/off) virtio-blk-pci.multifunction=3Dbool (on/off) virtio-blk-pci.rombar=3Duint32 virtio-blk-pci.romfile=3Dstr virtio-blk-pci.addr=3Dint32 (Slot and optional function number, example: = 06.0 or 06) virtio-blk-pci.event_idx=3Dbool (on/off) virtio-blk-pci.indirect_desc=3Dbool (on/off) virtio-blk-pci.vectors=3Duint32 virtio-blk-pci.ioeventfd=3Dbool (on/off) virtio-blk-pci.class=3Duint32 Cc: Markus Armbruster Signed-off-by: Gonglei Reviewed-by: Paolo Bonzini Reviewed-by: Michael S. Tsirkin Reviewed-by: Eric Blake Signed-off-by: Andreas F=C3=A4rber --- qapi-schema.json | 4 +++- qdev-monitor.c | 7 ++++++- qmp.c | 13 ++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/qapi-schema.json b/qapi-schema.json index 4f0d7e3..24379ab 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -1615,11 +1615,13 @@ # # @name: the name of the property # @type: the typename of the property +# @description: #optional if specified, the description of the property. +# (since 2.2) # # Since: 1.2 ## { 'type': 'DevicePropertyInfo', - 'data': { 'name': 'str', 'type': 'str' } } + 'data': { 'name': 'str', 'type': 'str', '*description': 'str' } } =20 ## # @device-list-properties: diff --git a/qdev-monitor.c b/qdev-monitor.c index 754437b..fac7d17 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -213,9 +213,14 @@ int qdev_device_help(QemuOpts *opts) } =20 for (prop =3D prop_list; prop; prop =3D prop->next) { - error_printf("%s.%s=3D%s\n", driver, + error_printf("%s.%s=3D%s", driver, prop->value->name, prop->value->type); + if (prop->value->has_description) { + error_printf(" (%s)\n", prop->value->description); + } else { + error_printf("\n"); + } } =20 qapi_free_DevicePropertyInfoList(prop_list); diff --git a/qmp.c b/qmp.c index c6767c4..0b4f131 100644 --- a/qmp.c +++ b/qmp.c @@ -442,7 +442,8 @@ ObjectTypeInfoList *qmp_qom_list_types(bool has_imple= ments, */ static DevicePropertyInfo *make_device_property_info(ObjectClass *klass, const char *name, - const char *default= _type) + const char *default= _type, + const char *descrip= tion) { DevicePropertyInfo *info; Property *prop; @@ -465,7 +466,9 @@ static DevicePropertyInfo *make_device_property_info(= ObjectClass *klass, =20 info =3D g_malloc0(sizeof(*info)); info->name =3D g_strdup(prop->name); - info->type =3D g_strdup(prop->info->legacy_name ?: prop->inf= o->name); + info->type =3D g_strdup(prop->info->name); + info->has_description =3D !!prop->info->description; + info->description =3D g_strdup(prop->info->description); return info; } klass =3D object_class_get_parent(klass); @@ -475,6 +478,9 @@ static DevicePropertyInfo *make_device_property_info(= ObjectClass *klass, info =3D g_malloc0(sizeof(*info)); info->name =3D g_strdup(name); info->type =3D g_strdup(default_type); + info->has_description =3D !!description; + info->description =3D g_strdup(description); + return info; } =20 @@ -521,7 +527,8 @@ DevicePropertyInfoList *qmp_device_list_properties(co= nst char *typename, continue; } =20 - info =3D make_device_property_info(klass, prop->name, prop->type= ); + info =3D make_device_property_info(klass, prop->name, prop->type= , + prop->description); if (!info) { continue; } --=20 1.8.4.5