From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56217) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X07aa-00070T-Sb for qemu-devel@nongnu.org; Thu, 26 Jun 2014 07:11:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X07aQ-0004pc-K2 for qemu-devel@nongnu.org; Thu, 26 Jun 2014 07:11:36 -0400 Received: from mx1.redhat.com ([209.132.183.28]:15212) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X07aQ-0004pX-CW for qemu-devel@nongnu.org; Thu, 26 Jun 2014 07:11:26 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s5QBBO7m009273 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 26 Jun 2014 07:11:25 -0400 From: Laszlo Ersek Date: Thu, 26 Jun 2014 13:11:15 +0200 Message-Id: <1403781075-30989-3-git-send-email-lersek@redhat.com> In-Reply-To: <1403781075-30989-1-git-send-email-lersek@redhat.com> References: <1403781075-30989-1-git-send-email-lersek@redhat.com> Subject: [Qemu-devel] [PATCH for-2.1 v2 2/2] char: report frontend open/closed state in 'query-chardev' List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, mprivozn@redhat.com, kraxel@redhat.com, amit.shah@redhat.com, eblake@redhat.com, lcapitulino@redhat.com In addition to the on-line reporting added in the previous patch, allow libvirt to query frontend state independently of events. Libvirt's path to identify the guest agent channel it cares about differs between the event added in the previous patch and the QMP response field added here. The event identifies the frontend device, by "id". The 'query-chardev' QMP command identifies the backend device (again by "id"). The association is under libvirt's control. RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1080376 Signed-off-by: Laszlo Ersek --- Notes: v2: - rename "frontend_open" to "frontend-open" in the schema [Eric] - "frontend-open" is mandatory [Eric] - advertise / target qemu-2.1 with the new field qapi-schema.json | 8 +++++++- qemu-char.c | 1 + qmp-commands.hx | 19 ++++++++++++++----- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/qapi-schema.json b/qapi-schema.json index d1dc8be..4f968c6 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -210,14 +210,20 @@ # @label: the label of the character device # # @filename: the filename of the character device # +# @frontend-open: shows whether the frontend device attached to this backend +# (eg. with the chardev=... option) is in open or closed state +# (since 2.1) +# # Notes: @filename is encoded using the QEMU command line character device # encoding. See the QEMU man page for details. # # Since: 0.14.0 ## -{ 'type': 'ChardevInfo', 'data': {'label': 'str', 'filename': 'str'} } +{ 'type': 'ChardevInfo', 'data': {'label': 'str', + 'filename': 'str', + 'frontend-open': 'bool'} } ## # @query-chardev: # diff --git a/qemu-char.c b/qemu-char.c index 2e50a10..98fb0ab 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -3703,8 +3703,9 @@ ChardevInfoList *qmp_query_chardev(Error **errp) ChardevInfoList *info = g_malloc0(sizeof(*info)); info->value = g_malloc0(sizeof(*info->value)); info->value->label = g_strdup(chr->label); info->value->filename = g_strdup(chr->filename); + info->value->frontend_open = chr->fe_open; info->next = chr_list; chr_list = info; } diff --git a/qmp-commands.hx b/qmp-commands.hx index e4a1c80..35f5146 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -1920,21 +1920,30 @@ of all devices. Each json-object contain the following: - "label": device's label (json-string) - "filename": device's file (json-string) +- "frontend-open": open/closed state of the frontend device attached to this + backend (json-bool) Example: -> { "execute": "query-chardev" } <- { - "return":[ + "return": [ { - "label":"monitor", - "filename":"stdio" + "label": "charchannel0", + "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server", + "frontend-open": false }, { - "label":"serial0", - "filename":"vc" + "label": "charmonitor", + "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server", + "frontend-open": true + }, + { + "label": "charserial0", + "filename": "pty:/dev/pts/2", + "frontend-open": true } ] } -- 1.8.3.1