From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:58675) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R9Gxj-0003GX-Rg for qemu-devel@nongnu.org; Thu, 29 Sep 2011 09:47:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R9Gxf-0004Au-RP for qemu-devel@nongnu.org; Thu, 29 Sep 2011 09:47:43 -0400 Received: from gw.ac.upc.edu ([147.83.30.3]:50998) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R9Gxf-0004Ap-Cb for qemu-devel@nongnu.org; Thu, 29 Sep 2011 09:47:39 -0400 From: =?utf-8?b?TGx1w61z?= Vilanova Date: Thu, 29 Sep 2011 15:47:38 +0200 Message-ID: <20110929134738.19559.86414.stgit@ginnungagap.bsc.es> In-Reply-To: <20110929134727.19559.54734.stgit@ginnungagap.bsc.es> References: <20110929134727.19559.54734.stgit@ginnungagap.bsc.es> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH 2/5] backdoor: Add build infrastructure List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Zhi Yong Wu Signed-off-by: Llu=C3=ADs Vilanova --- Makefile | 3 ++- Makefile.objs | 18 ++++++++++++++++++ Makefile.target | 4 +++- backdoor/qemu/qemu-backdoor.h | 29 +++++++++++++++++++++++++++++ configure | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 backdoor/qemu/qemu-backdoor.h diff --git a/Makefile b/Makefile index 6ed3194..fd7d9d9 100644 --- a/Makefile +++ b/Makefile @@ -40,7 +40,8 @@ else DOCS=3D endif =20 -SUBDIR_MAKEFLAGS=3D$(if $(V),,--no-print-directory) BUILD_DIR=3D$(BUILD_= DIR) +SUBDIR_MAKEFLAGS_=3D$(if $(V),,--no-print-directory) BUILD_DIR=3D$(BUILD= _DIR) +SUBDIR_MAKEFLAGS=3D$(SUBDIR_MAKEFLAGS_) SUBDIR_MAKEFLAGS=3D"$(SUBDIR_MAK= EFLAGS_)" SUBDIR_DEVICES_MAK=3D$(patsubst %, %/config-devices.mak, $(TARGET_DIRS)) SUBDIR_DEVICES_MAK_DEP=3D$(patsubst %, %/config-devices.mak.d, $(TARGET_= DIRS)) =20 diff --git a/Makefile.objs b/Makefile.objs index 1c65087..2493e59 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -395,6 +395,24 @@ trace-obj-y +=3D $(addprefix trace/, $(trace-nested-= y)) $(trace-obj-y): $(GENERATED_HEADERS) =20 ###################################################################### +# backdoor + +backdoor-obj-y +=3D $(addprefix backdoor/qemu/, $(backdoor-nested-y)) + +ifdef CONFIG_BACKDOOR +LIBBACKDOOR =3D libbackdoor/libbackdoor.a + +.PHONY: force +force: + +$(LIBBACKDOOR): $(dir $(LIBBACKDOOR))/Makefile force + $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) \ + QEMU_CFLAGS=3D"$(QEMU_CFLAGS)" \ + TARGET_DIR=3D"$(TARGET_DIR)$(dir $@)/" VPATH=3D"$(VPATH)" \ + SRC_PATH=3D"$(SRC_PATH)" V=3D"$(V)" "$(notdir $@)") +endif + +###################################################################### # smartcard =20 libcacard-y =3D cac.o event.o vcard.o vreader.o vcard_emul_nss.o vcard_e= mul_type.o card_7816.o diff --git a/Makefile.target b/Makefile.target index b00ff4e..565d0a8 100644 --- a/Makefile.target +++ b/Makefile.target @@ -79,6 +79,8 @@ libobj-$(TARGET_ARM) +=3D neon_helper.o iwmmxt_helper.o =20 libobj-y +=3D disas.o =20 +libobj-$(CONFIG_BACKDOOR) +=3D $(backdoor-obj-y) + $(libobj-y): $(GENERATED_HEADERS) =20 # libqemu @@ -397,7 +399,7 @@ endif # CONFIG_LINUX_USER =20 obj-$(CONFIG_GDBSTUB_XML) +=3D gdbstub-xml.o =20 -$(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) +$(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) $(LIBBACKDOOR) $(call LINK,$^) =20 =20 diff --git a/backdoor/qemu/qemu-backdoor.h b/backdoor/qemu/qemu-backdoor.= h new file mode 100644 index 0000000..95cb53f --- /dev/null +++ b/backdoor/qemu/qemu-backdoor.h @@ -0,0 +1,29 @@ +/* + * QEMU-side user-provided callbacks for the backdoor communication chan= nel. + * + * Copyright (C) 2011 Llu=C3=ADs Vilanova + * + * This work is licensed under the terms of the GNU GPL, version 2 or la= ter. + * See the COPYING file in the top-level directory. + */ + +#include +#include + + +/* Initialize the backdoor channel. + * + * @param data_size Size of the data channel. + */ +void qemu_backdoor_init(uint64_t data_size); + +/* Handle an invocation of the backdoor channel. + * + * The command argument can be used to achieve concurrency among differe= nt + * clients (e.g., threads in the guest system) of the backdoor channel (= e.g., + * different clients write to different parts of the data channel). + * + * @param cmd Command to invoke. + * @param data Pointer to the beginning of the data channel. + */ +void qemu_backdoor(uint64_t cmd, void *data); diff --git a/configure b/configure index 24b8df4..e2be271 100755 --- a/configure +++ b/configure @@ -174,6 +174,7 @@ user_pie=3D"no" zero_malloc=3D"" trace_backend=3D"nop" trace_file=3D"trace" +backdoor=3D"" spice=3D"" rbd=3D"" smartcard=3D"" @@ -540,6 +541,8 @@ for opt do ;; --with-trace-file=3D*) trace_file=3D"$optarg" ;; + --with-backdoor=3D*) backdoor=3D"$optarg" + ;; --enable-gprof) gprof=3D"yes" ;; --static) @@ -1037,6 +1040,7 @@ echo " --enable-trace-backend=3DB Set trace backen= d" echo " Available backends:" $("$source_path"/s= cripts/tracetool --list-backends) echo " --with-trace-file=3DNAME Full PATH,NAME of file to store trace= s" echo " Default:trace-" +echo " --with-backdoor=3DPATH Directory to build user-provided back= door library" echo " --disable-spice disable spice" echo " --enable-spice enable spice" echo " --enable-rbd enable building the rados block device = (rbd)" @@ -2514,6 +2518,20 @@ if test "$trace_backend" =3D "dtrace"; then fi =20 ########################################## +# check for a valid directory for backdoor +if test -n "$backdoor"; then + if test ! -f "$backdoor/Makefile"; then + echo + echo "Error: cannot make into '$backdoor'" + echo "Please choose a directory where I can run 'make'" + echo + exit 1 + fi + backdoor=3D`readlink -f "$backdoor"` +fi + + +########################################## # __sync_fetch_and_and requires at least -march=3Di486. Many toolchains # use i686 as default anyway, but for those that don't, an explicit # specification is necessary @@ -2707,6 +2725,9 @@ echo "uuid support $uuid" echo "vhost-net support $vhost_net" echo "Trace backend $trace_backend" echo "Trace output file $trace_file-" +if test -n "$backdoor"; then + echo "Backdoor lib dir $backdoor" +fi echo "spice support $spice" echo "rbd support $rbd" echo "xfsctl support $xfs" @@ -3072,6 +3093,13 @@ if test "$trace_default" =3D "yes"; then echo "CONFIG_TRACE_DEFAULT=3Dy" >> $config_host_mak fi =20 +# backdoor channel +if test -n "$backdoor"; then + echo "CONFIG_BACKDOOR=3Dy" >> $config_host_mak + echo "BACKDOOR_PATH=3D\"$backdoor\"" >> $config_host_mak + QEMU_CFLAGS=3D"-I\"$backdoor\" $QEMU_CFLAGS" +fi + echo "TOOLS=3D$tools" >> $config_host_mak echo "ROMS=3D$roms" >> $config_host_mak echo "MAKE=3D$make" >> $config_host_mak @@ -3185,6 +3213,10 @@ if test "$target" =3D "arm-linux-user" -o "$target= " =3D "armeb-linux-user" -o "$targ mkdir -p $target_dir/nwfpe fi symlink $source_path/Makefile.target $target_dir/Makefile +if test -n "$backdoor"; then + mkdir -p $target_dir/libbackdoor + symlink $backdoor/Makefile $target_dir/libbackdoor/Makefile +fi =20 =20 echo "# Automatically generated by configure - do not modify" > $config_= target_mak