From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=33146 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Peowy-0007Gi-R7 for qemu-devel@nongnu.org; Mon, 17 Jan 2011 08:16:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Peowk-0006MI-Pm for qemu-devel@nongnu.org; Mon, 17 Jan 2011 08:16:43 -0500 Received: from e8.ny.us.ibm.com ([32.97.182.138]:46175) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Peowk-0006MB-Hs for qemu-devel@nongnu.org; Mon, 17 Jan 2011 08:16:34 -0500 Received: from d01dlp01.pok.ibm.com (d01dlp01.pok.ibm.com [9.56.224.56]) by e8.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p0HCwxaE011224 for ; Mon, 17 Jan 2011 07:59:13 -0500 Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by d01dlp01.pok.ibm.com (Postfix) with ESMTP id DE0C9728051 for ; Mon, 17 Jan 2011 08:16:33 -0500 (EST) Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p0HDGXL8405762 for ; Mon, 17 Jan 2011 08:16:33 -0500 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p0HDGX78031743 for ; Mon, 17 Jan 2011 08:16:33 -0500 From: Michael Roth Date: Mon, 17 Jan 2011 07:15:16 -0600 Message-Id: <1295270117-24760-23-git-send-email-mdroth@linux.vnet.ibm.com> In-Reply-To: <1295270117-24760-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1295270117-24760-1-git-send-email-mdroth@linux.vnet.ibm.com> Subject: [Qemu-devel] [RFC][PATCH v6 22/23] virtagent: integrate virtagent server/client via chardev List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: agl@linux.vnet.ibm.com, stefanha@linux.vnet.ibm.com, Jes.Sorensen@redhat.com, marcel.mittelstaedt@de.ibm.com, mdroth@linux.vnet.ibm.com, markus_mueller@de.ibm.com, aliguori@linux.vnet.ibm.com, ryanh@us.ibm.com, abeekhof@redhat.com This adds a new chardev, virtagent, which actually just passes back a socket chardev after connecting to it and initializing the agent. Signed-off-by: Michael Roth --- qemu-char.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 44 insertions(+), 0 deletions(-) diff --git a/qemu-char.c b/qemu-char.c index edc9ad6..eae49c1 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -2463,6 +2463,49 @@ fail: return NULL; } +#include "virtagent-common.h" + +static CharDriverState *qemu_chr_open_virtagent(QemuOpts *opts) +{ + CharDriverState *chr; + const char *path; + VAContext ctx; + int ret; + + /* revert to/enforce default socket chardev options for virtagent */ + path = qemu_opt_get(opts, "path"); + if (path == NULL) { + path = VA_HOST_PATH_DEFAULT; + } + qemu_opt_set(opts, "path", path); + qemu_opt_set(opts, "server", "on"); + qemu_opt_set(opts, "wait", "off"); + qemu_opt_set(opts, "telnet", "off"); + + chr = qemu_chr_open_socket(opts); + if (chr == NULL) { + goto err; + } + + /* initialize virtagent using the socket we just set up */ + ctx.channel_method = "unix-connect"; + ctx.channel_path = path; + ctx.is_host = true; + ret = va_init(ctx); + ret = 0; + if (ret != 0) { + fprintf(stderr, "error initializing virtagent"); + goto err; + } + + return chr; +err: + if (chr) { + qemu_free(chr); + } + return NULL; +} + static const struct { const char *name; CharDriverState *(*open)(QemuOpts *opts); @@ -2472,6 +2515,7 @@ static const struct { { .name = "udp", .open = qemu_chr_open_udp }, { .name = "msmouse", .open = qemu_chr_open_msmouse }, { .name = "vc", .open = text_console_init }, + { .name = "virtagent", .open = qemu_chr_open_virtagent }, #ifdef _WIN32 { .name = "file", .open = qemu_chr_open_win_file_out }, { .name = "pipe", .open = qemu_chr_open_win_pipe }, -- 1.7.0.4