Add _SC_NSIG.
https://pubs.opengroup.org/onlinepubs/9799919799.2024edition/functions/sysconf.html (2024) says "Austin Group Defect 741 is applied, adding _SC_NSIG".
Change-Id: Ic8372105bac153403ab41369805c46322c25013e
diff --git a/libc/bionic/sysconf.cpp b/libc/bionic/sysconf.cpp
index 571370c..03822ed 100644
--- a/libc/bionic/sysconf.cpp
+++ b/libc/bionic/sysconf.cpp
@@ -210,6 +210,7 @@
// are vestigial anyway, so the "maximum maximum" of NGROUPS_MAX is a good
// enough answer for _SC_NGROUPS_MAX...
return NGROUPS_MAX;
+ case _SC_NSIG: return NSIG;
case _SC_PASS_MAX: return PASS_MAX;
case _SC_2_C_BIND: return _POSIX2_C_BIND;
case _SC_2_C_DEV: return _POSIX2_C_DEV;
diff --git a/libc/include/bits/sysconf.h b/libc/include/bits/sysconf.h
index ecf26ba..303f7c6 100644
--- a/libc/include/bits/sysconf.h
+++ b/libc/include/bits/sysconf.h
@@ -328,6 +328,8 @@
#define _SC_LEVEL4_CACHE_ASSOC 0x009c
/** sysconf() query for the L4 cache line size. Not available on all architectures. */
#define _SC_LEVEL4_CACHE_LINESIZE 0x009d
+/** sysconf() query equivalent to NSIG. Available from API level 37. */
+#define _SC_NSIG 0x009e
__BEGIN_DECLS
diff --git a/tests/headers/posix/unistd_h.c b/tests/headers/posix/unistd_h.c
index f66609d..fdd7bde 100644
--- a/tests/headers/posix/unistd_h.c
+++ b/tests/headers/posix/unistd_h.c
@@ -221,6 +221,9 @@
MACRO(_SC_MQ_OPEN_MAX);
MACRO(_SC_MQ_PRIO_MAX);
MACRO(_SC_NGROUPS_MAX);
+#if defined(__BIONIC__) // New in POSIX 2024.
+ MACRO(_SC_NSIG);
+#endif
MACRO(_SC_OPEN_MAX);
MACRO(_SC_PAGE_SIZE);
MACRO(_SC_PAGESIZE);
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 3143c23..c28a46e 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -1000,6 +1000,9 @@
VERIFY_SYSCONF_POSITIVE(_SC_EXPR_NEST_MAX);
VERIFY_SYSCONF_POSITIVE(_SC_LINE_MAX);
VerifySysconf(_SC_NGROUPS_MAX, "_SC_NGROUPS_MAX", [](long v){return v >= 0 && v <= NGROUPS_MAX;});
+#if defined(__BIONIC__) || defined(_SC_NSIG) // New in POSIX 2024.
+ EXPECT_EQ(NSIG, sysconf(_SC_NSIG));
+#endif
VERIFY_SYSCONF_POSITIVE(_SC_OPEN_MAX);
VERIFY_SYSCONF_POSITIVE(_SC_PASS_MAX);
VERIFY_SYSCONF_POSIX_VERSION(_SC_2_C_BIND);