Change ARG_MAX/_SC_ARG_MAX back to a constant.
As per the lkml thread https://lkml.org/lkml/2017/11/1/946.
Bug: http://b/65818597
Test: ran tests
Change-Id: I7a0610e6903e6761f2b31416e2f5017bd7a60659
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 456ddde..022da4d 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -1017,36 +1017,11 @@
}
TEST(UNISTD_TEST, sysconf_SC_ARG_MAX) {
- // Since Linux 2.6.23, ARG_MAX isn't a constant and depends on RLIMIT_STACK.
-
- // Get our current limit, and set things up so we restore the limit.
- rlimit rl;
- ASSERT_EQ(0, getrlimit(RLIMIT_STACK, &rl));
- uint64_t original_rlim_cur = rl.rlim_cur;
- if (rl.rlim_cur == RLIM_INFINITY) {
- rl.rlim_cur = 8 * 1024 * 1024; // Bionic reports unlimited stacks as 8MiB.
- }
- auto guard = android::base::make_scope_guard([&rl, original_rlim_cur]() {
- rl.rlim_cur = original_rlim_cur;
- ASSERT_EQ(0, setrlimit(RLIMIT_STACK, &rl));
- });
-
- // _SC_ARG_MAX should be 1/4 the stack size.
- EXPECT_EQ(static_cast<long>(rl.rlim_cur / 4), sysconf(_SC_ARG_MAX));
-
- // If you have a really small stack, the kernel still guarantees "32 pages" (fs/exec.c).
- rl.rlim_cur = 1024;
- rl.rlim_max = RLIM_INFINITY;
- ASSERT_EQ(0, setrlimit(RLIMIT_STACK, &rl));
-
- EXPECT_EQ(static_cast<long>(32 * sysconf(_SC_PAGE_SIZE)), sysconf(_SC_ARG_MAX));
-
- // With a 128-page stack limit, we know exactly what _SC_ARG_MAX should be...
- rl.rlim_cur = 128 * sysconf(_SC_PAGE_SIZE);
- rl.rlim_max = RLIM_INFINITY;
- ASSERT_EQ(0, setrlimit(RLIMIT_STACK, &rl));
-
- EXPECT_EQ(static_cast<long>((128 * sysconf(_SC_PAGE_SIZE)) / 4), sysconf(_SC_ARG_MAX));
+ // https://lkml.org/lkml/2017/11/15/813.
+#if !defined(ARG_MAX)
+#define ARG_MAX 131072
+#endif
+ ASSERT_EQ(ARG_MAX, sysconf(_SC_ARG_MAX));
}
TEST(UNISTD_TEST, dup2_same) {