[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/5] backdoor: Add build infrastructure
From: |
Lluís Vilanova |
Subject: |
[Qemu-devel] [PATCH 2/5] backdoor: Add build infrastructure |
Date: |
Thu, 29 Sep 2011 15:47:38 +0200 |
User-agent: |
StGit/0.15 |
Signed-off-by: Lluís Vilanova <address@hidden>
---
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=
endif
-SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory) BUILD_DIR=$(BUILD_DIR)
+SUBDIR_MAKEFLAGS_=$(if $(V),,--no-print-directory) BUILD_DIR=$(BUILD_DIR)
+SUBDIR_MAKEFLAGS=$(SUBDIR_MAKEFLAGS_) SUBDIR_MAKEFLAGS="$(SUBDIR_MAKEFLAGS_)"
SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %/config-devices.mak.d, $(TARGET_DIRS))
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 += $(addprefix trace/, $(trace-nested-y))
$(trace-obj-y): $(GENERATED_HEADERS)
######################################################################
+# backdoor
+
+backdoor-obj-y += $(addprefix backdoor/qemu/, $(backdoor-nested-y))
+
+ifdef CONFIG_BACKDOOR
+LIBBACKDOOR = libbackdoor/libbackdoor.a
+
+.PHONY: force
+force:
+
+$(LIBBACKDOOR): $(dir $(LIBBACKDOOR))/Makefile force
+ $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) \
+ QEMU_CFLAGS="$(QEMU_CFLAGS)" \
+ TARGET_DIR="$(TARGET_DIR)$(dir $@)/" VPATH="$(VPATH)" \
+ SRC_PATH="$(SRC_PATH)" V="$(V)" "$(notdir $@)")
+endif
+
+######################################################################
# smartcard
libcacard-y = cac.o event.o vcard.o vreader.o vcard_emul_nss.o
vcard_emul_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) += neon_helper.o iwmmxt_helper.o
libobj-y += disas.o
+libobj-$(CONFIG_BACKDOOR) += $(backdoor-obj-y)
+
$(libobj-y): $(GENERATED_HEADERS)
# libqemu
@@ -397,7 +399,7 @@ endif # CONFIG_LINUX_USER
obj-$(CONFIG_GDBSTUB_XML) += gdbstub-xml.o
-$(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y)
+$(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) $(LIBBACKDOOR)
$(call LINK,$^)
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 channel.
+ *
+ * Copyright (C) 2011 Lluís Vilanova <address@hidden>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include <stdint.h>
+#include <sys/types.h>
+
+
+/* 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 different
+ * 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="no"
zero_malloc=""
trace_backend="nop"
trace_file="trace"
+backdoor=""
spice=""
rbd=""
smartcard=""
@@ -540,6 +541,8 @@ for opt do
;;
--with-trace-file=*) trace_file="$optarg"
;;
+ --with-backdoor=*) backdoor="$optarg"
+ ;;
--enable-gprof) gprof="yes"
;;
--static)
@@ -1037,6 +1040,7 @@ echo " --enable-trace-backend=B Set trace backend"
echo " Available backends:"
$("$source_path"/scripts/tracetool --list-backends)
echo " --with-trace-file=NAME Full PATH,NAME of file to store traces"
echo " Default:trace-<pid>"
+echo " --with-backdoor=PATH Directory to build user-provided backdoor
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" = "dtrace"; then
fi
##########################################
+# 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=`readlink -f "$backdoor"`
+fi
+
+
+##########################################
# __sync_fetch_and_and requires at least -march=i486. 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-<pid>"
+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" = "yes"; then
echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak
fi
+# backdoor channel
+if test -n "$backdoor"; then
+ echo "CONFIG_BACKDOOR=y" >> $config_host_mak
+ echo "BACKDOOR_PATH=\"$backdoor\"" >> $config_host_mak
+ QEMU_CFLAGS="-I\"$backdoor\" $QEMU_CFLAGS"
+fi
+
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
echo "MAKE=$make" >> $config_host_mak
@@ -3185,6 +3213,10 @@ if test "$target" = "arm-linux-user" -o "$target" =
"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
echo "# Automatically generated by configure - do not modify" >
$config_target_mak
- [Qemu-devel] [RFC][PATCH 0/5] backdoor: lightweight guest-to-QEMU backdoor channel, Lluís Vilanova, 2011/09/29
- [Qemu-devel] [PATCH 1/5] backdoor: Add documentation, Lluís Vilanova, 2011/09/29
- [Qemu-devel] [PATCH 2/5] backdoor: Add build infrastructure,
Lluís Vilanova <=
- [Qemu-devel] [PATCH 4/5] backdoor: [softmmu] Add QEMU-side proxy to "libbackdoor.a", Lluís Vilanova, 2011/09/29
- Re: [Qemu-devel] [PATCH 4/5] backdoor: [softmmu] Add QEMU-side proxy to "libbackdoor.a", Blue Swirl, 2011/09/29
- Re: [Qemu-devel] [PATCH 4/5] backdoor: [softmmu] Add QEMU-side proxy to "libbackdoor.a", Frans de Boer, 2011/09/29
- Re: [Qemu-devel] [PATCH 4/5] backdoor: [softmmu] Add QEMU-side proxy to "libbackdoor.a", Blue Swirl, 2011/09/30
- Re: [Qemu-devel] [PATCH 4/5] backdoor: [softmmu] Add QEMU-side proxy to "libbackdoor.a", Lluís Vilanova, 2011/09/30
- Re: [Qemu-devel] [PATCH 4/5] backdoor: [softmmu] Add QEMU-side proxy to "libbackdoor.a", Blue Swirl, 2011/09/30
[Qemu-devel] [PATCH 3/5] backdoor: [*-user] Add QEMU-side proxy to "libbackdoor.a", Lluís Vilanova, 2011/09/29