From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:54287) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RpKmw-00010l-Lf for qemu-devel@nongnu.org; Mon, 23 Jan 2012 09:22:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RpKmn-0007lX-5S for qemu-devel@nongnu.org; Mon, 23 Jan 2012 09:22:26 -0500 Received: from mout.perfora.net ([74.208.4.194]:55452) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RpKmm-0007lS-V8 for qemu-devel@nongnu.org; Mon, 23 Jan 2012 09:22:17 -0500 From: Michael Roth Date: Mon, 23 Jan 2012 08:21:38 -0600 Message-Id: <1327328505-31106-1-git-send-email-mdroth@linux.vnet.ibm.com> Subject: [Qemu-devel] qemu-ga: add support for Windows List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: ghammer@redhat.com, aliguori@us.ibm.com These patches apply/work on top of: [PATCH] qemu-ga: Add schema documentation for types [PATCH] qemu-ga: add guest-set-support-level command [PATCH] main-loop: Fix SetEvent() on uninitialized handle on win32 [PATCH] main-loop: For tools, initialize timers as part of qemu_init_main_loop() And can also be obtained from: git://github.com/mdroth/qemu.git qga-win32-v1 These patches add support for Windows to the QEMU guest agent. With these patches the following guest agent commands are supported on Windows: guest-ping guest-info guest-sync guest-shutdown The guest-file* commands can essentially be enabled for Windows as-is, but since mingw does not honor the O_NONBLOCK flag, they'll need to be reworked if we're to retain the current non-blocking behavior. The rest of the commands are currently stubbed out for Windows (qemu-ga will return an "unsupported" error), but it should be easy to implement these going forward with basic Windows support/infrastructure in place. The build was tested using Fedora 15 with a MinGW cross-build target via: configure --enable-guest-agent --cross-prefix=i686-pc-mingw32- make qemu-ga.exe The executable was tested using Windows XP SP3, and partially tested using Windows Server 2008 and Windows 7 (no I/O for the latter 2, having issues with virtio-win drivers atm). GLib 2.28+ for Windows is required. You can install qemu-ga as a start-on-boot service by running: ./qemu-ga --service install And start/stop manually via: net start qemu-ga net stop qemu-ga Many thanks to Gal Hammer for contributing the service integration and shutdown code. Makefile.objs | 8 +- configure | 2 +- qemu-ga.c | 413 ++++++++++++++----------------- qga/channel-posix.c | 246 ++++++++++++++++++ qga/channel-win32.c | 337 +++++++++++++++++++++++++ qga/channel.h | 33 +++ qga/commands-posix.c | 528 ++++++++++++++++++++++++++++++++++++++ qga/commands-win32.c | 130 ++++++++++ qga/commands.c | 86 +++++++ qga/guest-agent-commands.c | 598 -------------------------------------------- qga/guest-agent-core.h | 3 +- qga/service-win32.c | 114 +++++++++ qga/service-win32.h | 30 +++ 14 files changed, 1698 insertions(+), 832 deletions(-)