[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/3] coroutine: adding enable/disable options for si
From: |
Alex Barcelo |
Subject: |
[Qemu-devel] [PATCH 3/3] coroutine: adding enable/disable options for sigaltstack method |
Date: |
Mon, 13 Feb 2012 15:42:30 +0100 |
It's possible to enable/disable sigaltstack, but it always has
less priority than ucontext method (to force sigaltstack,
ucontext has to be disabled).
Signed-off-by: Alex Barcelo <address@hidden>
---
Makefile.objs | 4 ++++
configure | 39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/Makefile.objs b/Makefile.objs
index 391e524..8874825 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -17,8 +17,12 @@ coroutine-obj-y += qemu-coroutine-sleep.o
ifeq ($(CONFIG_UCONTEXT_COROUTINE),y)
coroutine-obj-$(CONFIG_POSIX) += coroutine-ucontext.o
else
+ifeq ($(CONFIG_SIGALTSTACK_COROUTINE),y)
+coroutine-obj-$(CONFIG_POSIX) += coroutine-sigaltstack.o
+else
coroutine-obj-$(CONFIG_POSIX) += coroutine-gthread.o
endif
+endif
coroutine-obj-$(CONFIG_WIN32) += coroutine-win32.o
#######################################################################
diff --git a/configure b/configure
index ed40da8..e9c27f3 100755
--- a/configure
+++ b/configure
@@ -191,6 +191,7 @@ zlib="yes"
guest_agent="yes"
libiscsi=""
ucontext=""
+sigaltstack=""
# parse CC options first
for opt do
@@ -803,6 +804,10 @@ for opt do
;;
--disable-ucontext) ucontext="no"
;;
+ --enable-sigaltstack) sigaltstack="yes"
+ ;;
+ --disable-sigaltstack) sigaltstack="no"
+ ;;
*) echo "ERROR: unknown option $opt"; show_help="yes"
;;
esac
@@ -1091,6 +1096,8 @@ echo " --disable-guest-agent disable building of the
QEMU Guest Agent"
echo " --enable-guest-agent enable building of the QEMU Guest Agent"
echo " --disable-ucontext disable ucontext functions for coroutines"
echo " --enable-ucontext enable ucontext functions for coroutines"
+echo " --disable-sigaltstack disable sigaltstack functions for coroutines"
+echo " --enable-sigaltstack enable sigaltstack functions for coroutines"
echo ""
echo "NOTE: The object files are built at the place where configure is
launched"
exit 1
@@ -2745,6 +2752,33 @@ EOF
fi
##########################################
+# check, if there is no ucontext, for
+# sigaltstack
+
+sigaltstack_coroutine=no
+if test "$ucontext_coroutine" = "no" -a "$sigaltstack" != "no" ; then
+ cat > $TMPC << EOF
+#include <signal.h>
+int main(void) {
+ stack_t ss;
+ ss.ss_size = SIGSTKSZ;
+ ss.ss_flags = 0;
+ sigaltstack(&ss, 0);
+}
+EOF
+ if compile_prog "" "" ; then
+ sigaltstack_coroutine=yes
+ elif test "$sigaltstack" = "yes"; then
+ echo
+ echo "Error: sigaltstack check failed"
+ echo "Make sure that sigaltstack is supported"
+ echo
+ exit 1
+ fi
+fi
+
+
+##########################################
# check if we have open_by_handle_at
open_by_hande_at=no
@@ -2936,6 +2970,7 @@ echo "OpenGL support $opengl"
echo "libiscsi support $libiscsi"
echo "build guest agent $guest_agent"
echo "ucontext coroutine support $ucontext_coroutine"
+echo "sigaltstack coroutine support $sigaltstack_coroutine"
if test "$sdl_too_old" = "yes"; then
echo "-> Your SDL version is too old - please upgrade to have SDL support"
@@ -3259,6 +3294,10 @@ if test "$ucontext_coroutine" = "yes" ; then
echo "CONFIG_UCONTEXT_COROUTINE=y" >> $config_host_mak
fi
+if test "$sigaltstack_coroutine" = "yes" ; then
+ echo "CONFIG_SIGALTSTACK_COROUTINE=y" >> $config_host_mak
+fi
+
if test "$open_by_handle_at" = "yes" ; then
echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
fi
--
1.7.5.4
- Re: [Qemu-devel] [PATCH 1/3] coroutine: adding sigaltstack method (.c source), (continued)
Re: [Qemu-devel] [PATCH 1/3] coroutine: adding sigaltstack method (.c source), Stefan Hajnoczi, 2012/02/14
Re: [Qemu-devel] [PATCH 1/3] coroutine: adding sigaltstack method (.c source), Alex Barcelo, 2012/02/14
Re: [Qemu-devel] [PATCH 1/3] coroutine: adding sigaltstack method (.c source), Stefan Hajnoczi, 2012/02/14
Re: [Qemu-devel] [PATCH 1/3] coroutine: adding sigaltstack method (.c source), Alex Barcelo, 2012/02/14
Re: [Qemu-devel] [PATCH 1/3] coroutine: adding sigaltstack method (.c source), Stefan Hajnoczi, 2012/02/14
[Qemu-devel] [PATCH 3/3] coroutine: adding enable/disable options for sigaltstack method,
Alex Barcelo <=
[Qemu-devel] [PATCH 2/3] coroutine: adding control flags (enable/disable) for ucontext compilation, Alex Barcelo, 2012/02/13
Re: [Qemu-devel] [PATCH 0/3] New sigaltstack method for coroutine, Peter Maydell, 2012/02/13