[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Patch] Make usermode stacksize (-s) configurable at co
From: |
Jan-Simon Möller |
Subject: |
Re: [Qemu-devel] [Patch] Make usermode stacksize (-s) configurable at compile-time |
Date: |
Sun, 25 Oct 2009 18:49:44 +0100 |
User-agent: |
KMail/1.10.3 (Linux/2.6.27.29-0.1-default; KDE/4.1.3; x86_64; ; ) |
We encontered problems with the low default value for the stacksize in usermode
(ok, whats "low").
For environments like scratchbox, its hard to use "-s" as qemu is called by
binfmt mechanism.
The attached patch makes this configurable at compile-time.
Signed-off-by: Jan-Simon Möller <address@hidden>
diff --git a/configure b/configure
index 43d87c5..dad9175 100755
--- a/configure
+++ b/configure
@@ -220,6 +220,7 @@ uname_release=""
io_thread="no"
mixemu="no"
kerneldir=""
+user_mode_stacksize=""
aix="no"
blobs="yes"
pkgversion=""
@@ -557,6 +558,8 @@ for opt do
;;
--kerneldir=*) kerneldir="$optarg"
;;
+ --user-mode-stacksize=*) user_mode_stacksize="$optarg"
+ ;;
--with-pkgversion=*) pkgversion=" ($optarg)"
;;
--disable-docs) docs="no"
@@ -713,6 +716,7 @@ echo " --enable-linux-aio enable Linux AIO support"
echo " --enable-io-thread enable IO thread"
echo " --disable-blobs disable installing provided firmware blobs"
echo " --kerneldir=PATH look for kernel includes in PATH"
+echo " --user-mode-stacksize= set default stack size in bytes (as -s, only
in usermode)"
echo ""
echo "NOTE: The object files are built at the place where configure is
launched"
exit 1
@@ -2481,6 +2485,16 @@ if test "$target_user_only" = "yes" -a "$static" = "no"
-a \
ldflags="-pie $ldflags"
fi
+# change default stacksize in usermode
+#
+if test "$target_user_only" = "yes" -a "$user_mode_stacksize" != "" ; then
+ cflags="-DUSER_MODE_STACKSIZE=$user_mode_stacksize $cflags"
+ echo "user_mode_stack $user_mode_stacksize"
+else
+ echo "user_mode_stack default"
+fi
+
+
if test "$target_softmmu" = "yes" -a \( \
"$TARGET_ARCH" = "microblaze" -o \
"$TARGET_ARCH" = "cris" \) ; then
diff --git a/linux-user/main.c b/linux-user/main.c
index 81a1ada..9ac2421 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -51,7 +51,10 @@ const char *qemu_uname_release = CONFIG_UNAME_RELEASE;
/* XXX: on x86 MAP_GROWSDOWN only works if ESP <= address + 32, so
we allocate a bigger stack. Need a better solution, for example
by remapping the process stack directly at the right place */
-unsigned long x86_stack_size = 512 * 1024;
+#ifndef USER_MODE_STACKSIZE
+#define USER_MODE_STACKSIZE (512 * 1024)
+#endif
+unsigned long x86_stack_size = USER_MODE_STACKSIZE;
void gemu_log(const char *fmt, ...)
{
usermode_stacksize.diff
Description: Text Data