add sysconf keys/values for signal stack size
authorRich Felker <dalias@aerifal.cx>
Fri, 26 Aug 2022 14:20:46 +0000 (10:20 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 26 Aug 2022 14:20:46 +0000 (10:20 -0400)
as a result of ISA extensions exploding register file sizes on some
archs, using a constant for minimum signal stack size no longer seems
viably future-proof. add sysconf keys allowing the kernel to provide a
machine-dependent minimum applications can query to ensure they
allocate sufficient space for stacks. the key names and indices align
with the same functionality in glibc.

see commit d5a5045382315e36588ca225889baa36ed0ed38f for previous
action on this subject.

ultimately, the macros MINSIGSTKSZ and SIGSTKSZ probably need to be
deprecated, but that is standards-amendment work outside the scope of
a single implementation.

include/unistd.h
src/conf/sysconf.c

index 80be3b2..0e8149e 100644 (file)
@@ -425,6 +425,8 @@ pid_t gettid(void);
 #define _SC_XOPEN_STREAMS      246
 #define _SC_THREAD_ROBUST_PRIO_INHERIT 247
 #define _SC_THREAD_ROBUST_PRIO_PROTECT 248
+#define _SC_MINSIGSTKSZ        249
+#define _SC_SIGSTKSZ   250
 
 #define _CS_PATH       0
 #define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS     1
index 3baaed3..33220da 100644 (file)
@@ -165,6 +165,9 @@ long sysconf(int name)
                [_SC_XOPEN_STREAMS] = JT_ZERO,
                [_SC_THREAD_ROBUST_PRIO_INHERIT] = -1,
                [_SC_THREAD_ROBUST_PRIO_PROTECT] = -1,
+
+               [_SC_MINSIGSTKSZ] = MINSIGSTKSZ,
+               [_SC_SIGSTKSZ] = SIGSTKSZ,
        };
 
        if (name >= sizeof(values)/sizeof(values[0]) || !values[name]) {