From: "Jan-Simon Möller" <dl9pf@gmx.de>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [Patch] Make usermode stacksize (-s) configurable at compile-time
Date: Sun, 25 Oct 2009 16:22:07 +0100 [thread overview]
Message-ID: <200910251622.07800.dl9pf@gmx.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 2935 bytes --]
Hi !
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 <dl9pf@gmx.de>
diff --git a/configure b/configure
index 43d87c5..076f45a 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
@@ -2576,3 +2580,10 @@ d=libuser
mkdir -p $d
rm -f $d/Makefile
ln -s $source_path/Makefile.user $d/Makefile
+
+# change default stacksize in usermode
+#
+if test "$user_mode_stacksize" != "" ; then
+ echo "user_mode_stack $user_mode_stacksize"
+ echo "QEMU_CFLAGS+=-DUSER_MODE_STACKSIZE=$user_mode_stacksize" >> $config_host_mak
+fi
diff --git a/linux-user/main.c b/linux-user/main.c
index 81a1ada..30c0a87 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -51,7 +51,11 @@ 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 */
+#if defined(USER_MODE_STACKSIZE)
+unsigned long x86_stack_size = USER_MODE_STACKSIZE;
+#else
unsigned long x86_stack_size = 512 * 1024;
+#endif
void gemu_log(const char *fmt, ...)
{
[-- Attachment #2: usermode_stacksize.diff --]
[-- Type: text/x-patch, Size: 1867 bytes --]
diff --git a/configure b/configure
index 43d87c5..076f45a 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
@@ -2576,3 +2580,10 @@ d=libuser
mkdir -p $d
rm -f $d/Makefile
ln -s $source_path/Makefile.user $d/Makefile
+
+# change default stacksize in usermode
+#
+if test "$user_mode_stacksize" != "" ; then
+ echo "user_mode_stack $user_mode_stacksize"
+ echo "QEMU_CFLAGS+=-DUSER_MODE_STACKSIZE=$user_mode_stacksize" >> $config_host_mak
+fi
diff --git a/linux-user/main.c b/linux-user/main.c
index 81a1ada..30c0a87 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -51,7 +51,11 @@ 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 */
+#if defined(USER_MODE_STACKSIZE)
+unsigned long x86_stack_size = USER_MODE_STACKSIZE;
+#else
unsigned long x86_stack_size = 512 * 1024;
+#endif
void gemu_log(const char *fmt, ...)
{
next reply other threads:[~2009-10-25 15:22 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-25 15:22 Jan-Simon Möller [this message]
2009-10-25 15:54 ` [Qemu-devel] [Patch] Make usermode stacksize (-s) configurable at compile-time Laurent Desnogues
2009-10-25 17:41 ` Jan-Simon Möller
2009-10-25 17:49 ` Jan-Simon Möller
2009-10-25 21:09 ` [Qemu-devel] " Juan Quintela
2009-10-26 11:37 ` Jan-Simon Möller
2009-10-26 0:53 ` [Qemu-devel] " Jamie Lokier
2009-10-26 12:25 ` Riku Voipio
2009-10-27 19:56 ` Jan-Simon Möller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200910251622.07800.dl9pf@gmx.de \
--to=dl9pf@gmx.de \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).