aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-11-06 10:25:26 +1100
committerStefano Brivio <sbrivio@redhat.com>2024-11-07 12:47:03 +0100
commitc560e2f65b625367d3baf0fcf06cf19996407659 (patch)
tree072fc317ed2177b9ccc446e84484e33d67641cf9
parent13fc6d511eb89b15a0941c63ae44f147572b1470 (diff)
downloadpasst-c560e2f65b625367d3baf0fcf06cf19996407659.tar
passt-c560e2f65b625367d3baf0fcf06cf19996407659.tar.gz
passt-c560e2f65b625367d3baf0fcf06cf19996407659.tar.bz2
passt-c560e2f65b625367d3baf0fcf06cf19996407659.tar.lz
passt-c560e2f65b625367d3baf0fcf06cf19996407659.tar.xz
passt-c560e2f65b625367d3baf0fcf06cf19996407659.tar.zst
passt-c560e2f65b625367d3baf0fcf06cf19996407659.zip
Makefile: Don't attempt to auto-detect stack size
We probe the available stack limit in the Makefile using rlimit, then use that to set the size of the stack when we clone() extra threads. But the rlimit at compile time need not be the same as the rlimit at runtime, so that's not particularly sensible. Ideally, we'd set the stack size based on an estimate of the actual maximum stack usage of all our clone()ed functions. We don't have that at the moment, but to keep things simple just set it to 1MiB - that's what the current probe will set things to on my default configuration Fedora 40, so it's likely to be fine in most cases. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r--Makefile6
-rw-r--r--util.h2
2 files changed, 1 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 2a8540a..56bf2e8 100644
--- a/Makefile
+++ b/Makefile
@@ -15,11 +15,6 @@ VERSION ?= $(shell git describe --tags HEAD 2>/dev/null || echo "unknown\ versio
# the IPv6 socket API? (Linux does)
DUAL_STACK_SOCKETS := 1
-RLIMIT_STACK_VAL := $(shell /bin/sh -c 'ulimit -s')
-ifeq ($(RLIMIT_STACK_VAL),unlimited)
-RLIMIT_STACK_VAL := 1024
-endif
-
TARGET ?= $(shell $(CC) -dumpmachine)
# Get 'uname -m'-like architecture description for target
TARGET_ARCH := $(shell echo $(TARGET) | cut -f1 -d- | tr [A-Z] [a-z])
@@ -36,7 +31,6 @@ FLAGS := -Wall -Wextra -Wno-format-zero-length
FLAGS += -pedantic -std=c11 -D_XOPEN_SOURCE=700 -D_GNU_SOURCE
FLAGS += $(FORTIFY_FLAG) -O2 -pie -fPIE
FLAGS += -DPAGE_SIZE=$(shell getconf PAGE_SIZE)
-FLAGS += -DRLIMIT_STACK_VAL=$(RLIMIT_STACK_VAL)
FLAGS += -DVERSION=\"$(VERSION)\"
FLAGS += -DDUAL_STACK_SOCKETS=$(DUAL_STACK_SOCKETS)
diff --git a/util.h b/util.h
index 3fc64cf..c341236 100644
--- a/util.h
+++ b/util.h
@@ -132,7 +132,7 @@ static inline uint32_t ntohl_unaligned(const void *p)
return ntohl(val);
}
-#define NS_FN_STACK_SIZE (RLIMIT_STACK_VAL * 1024 / 8)
+#define NS_FN_STACK_SIZE (1024 * 1024) /* 1MiB */
int do_clone(int (*fn)(void *), char *stack_area, size_t stack_size, int flags,
void *arg);
#define NS_CALL(fn, arg) \