exactly that.
+=head1 COMPILETIME CONFIGURATION
+
+These symbols, if used, must be defined when compiling F<eio.c>.
+
+=over 4
+
+=item EIO_STACKSIZE
+
+This symbol governs the stack size for each eio thread. Libeio itself
+was written to use very little stackspace, but when using C<EIO_CUSTOM>
+requests, you might want to increase this.
+
+If this symbol is undefined (the default) then libeio will use its default
+stack size (C<sizeof (long) * 4096> currently). If it is defined, but
+C<0>, then the default operating system stack size will be used. In all
+other cases, the value must be an expression that evaluates to the desired
+stack size.
+
+=back
+
+
=head1 PORTABILITY REQUIREMENTS
In addition to a working ISO-C implementation, libeio relies on a few
# define PTHREAD_STACK_MIN 0
#endif
+#ifndef XTHREAD_STACKSIZE
+# define XTHREAD_STACKSIZE sizeof (long) * 4096
+#endif
+
static int
thread_create (thread_t *tid, void *(*proc)(void *), void *arg)
{
pthread_attr_init (&attr);
pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
- pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN < sizeof (long) * 4096 * 4
- ? sizeof (long) * 4096 * 4 : PTHREAD_STACK_MIN);
+
+ if (XTHREAD_STACKSIZE > 0)
+ pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN > (XTHREAD_STACKSIZE)
+ ? PTHREAD_STACK_MIN : (XTHREAD_STACKSIZE));
+
#ifdef PTHREAD_SCOPE_PROCESS
pthread_attr_setscope (&attr, PTHREAD_SCOPE_PROCESS);
#endif
conf.define("HAVE_GNUTLS", 1)
conf.define("HAVE_CONFIG_H", 1)
+ conf.env.append_value("CCFLAGS", "-DEIO_STACKSIZE=%d" % (4096*8))
# Split off debug variant before adding variant specific defines
debug_env = conf.env.copy()
# Configure default variant
conf.setenv('default')
- conf.env.append_value('CCFLAGS', ['-DNDEBUG', '-O0', '-g'])
- conf.env.append_value('CXXFLAGS', ['-DNDEBUG', '-O0', '-g'])
+ conf.env.append_value('CCFLAGS', ['-DDEBUG', '-O0', '-g'])
+ conf.env.append_value('CXXFLAGS', ['-DDEBUG', '-O0', '-g'])
conf.write_config_header("config.h")
def build(bld):
deps_tgt = join(bld.srcnode.abspath(bld.env),"deps")
v8dir_src = join(deps_src,"v8")
v8dir_tgt = join(deps_tgt, "v8")
- #v8lib = bld.env["staticlib_PATTERN"] % "v8_g"
- v8lib = bld.env["staticlib_PATTERN"] % "v8"
+ v8lib = bld.env["staticlib_PATTERN"] % "v8_g"
+ #v8lib = bld.env["staticlib_PATTERN"] % "v8"
v8 = bld.new_task_gen(
target=join("deps/v8",v8lib),
- #rule='cp -rf %s %s && cd %s && scons -Q mode=debug library=static snapshot=on'
- rule='cp -rf %s %s && cd %s && scons -Q library=static snapshot=on'
+ rule='cp -rf %s %s && cd %s && scons -Q mode=debug library=static snapshot=on'
+ #rule='cp -rf %s %s && cd %s && scons -Q library=static snapshot=on'
% ( v8dir_src , deps_tgt , v8dir_tgt),
before="cxx"
)
bld.env["CPPPATH_V8"] = "deps/v8/include"
- bld.env["STATICLIB_V8"] = "v8"
- #bld.env["STATICLIB_V8"] = "v8_g"
+ #bld.env["STATICLIB_V8"] = "v8"
+ bld.env["STATICLIB_V8"] = "v8_g"
bld.env["LIBPATH_V8"] = v8dir_tgt
bld.env["LINKFLAGS_V8"] = "-pthread"