On Wed, Mar 27, 2019 at 12:35:06PM +0300, Vladimir Davydov wrote:
diff --git a/src/lib/core/fiber.c b/src/lib/core/fiber.c
index 922a0bfe8..d3cb18a15 100644
--- a/src/lib/core/fiber.c
+++ b/src/lib/core/fiber.c
@@ -107,18 +107,25 @@ pthread_t main_thread_id;
static size_t page_size;
static bool stack_growsdown;
+/** Indices in fiber stack sizes (FSS) */
enum {
+ FSS_IDX_MINIMAL,
+ FSS_IDX_WATERMARK,
+ FSS_IDX_DEFAULT,
+};
+
+/** Fiber stack sizes */
+static size_t fiber_stack_size[] = {
/* The minimum allowable fiber stack size in bytes */
- FIBER_STACK_SIZE_MINIMAL = 16384,
+ [FSS_IDX_MINIMAL] = 16384,
+ /* Stack size watermark in bytes */
+ [FSS_IDX_WATERMARK] = 65536,
/* Default fiber stack size in bytes */
- FIBER_STACK_SIZE_DEFAULT = 524288,
- /* Stack size watermark in bytes. */
- FIBER_STACK_SIZE_WATERMARK = 65536,
+ [FSS_IDX_DEFAULT] = 524288,
};
Please avoid unrelated changes. If you want to rename or refactor
something, do it in a separate patch to ease review.
Anyway, I don't see much point in this change - in Tarantool code it's
common to use a enum for storing constants.
+/**
+ * Initialize early parameters of the stack
+ * and setup default variables.
+ */
+static void
+fiber_stack_init(void)
+{
+ static const char default_size_name[] = "FIBER_STACK_SIZE_DEFAULT";
There's a risk it may conflict with another environment variable.
At the very least, we should prefix it with TARANTOOL_.
However, I don't think that using an environmental variable is a proper
way to go. After all, Tarantool is an application server so we typically
set system variables right from Lua code.
Can we introduce a function in the fiber module for this? The tricky
part is that it should change the stack size of the calling fiber,
I guess.