xref: /aosp_15_r20/external/musl/src/signal/sigaltstack.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <signal.h>
2*c9945492SAndroid Build Coastguard Worker #include <errno.h>
3*c9945492SAndroid Build Coastguard Worker #include "syscall.h"
4*c9945492SAndroid Build Coastguard Worker 
sigaltstack(const stack_t * restrict ss,stack_t * restrict old)5*c9945492SAndroid Build Coastguard Worker int sigaltstack(const stack_t *restrict ss, stack_t *restrict old)
6*c9945492SAndroid Build Coastguard Worker {
7*c9945492SAndroid Build Coastguard Worker 	if (ss) {
8*c9945492SAndroid Build Coastguard Worker 		if (!(ss->ss_flags & SS_DISABLE) && ss->ss_size < MINSIGSTKSZ) {
9*c9945492SAndroid Build Coastguard Worker 			errno = ENOMEM;
10*c9945492SAndroid Build Coastguard Worker 			return -1;
11*c9945492SAndroid Build Coastguard Worker 		}
12*c9945492SAndroid Build Coastguard Worker 		if (ss->ss_flags & SS_ONSTACK) {
13*c9945492SAndroid Build Coastguard Worker 			errno = EINVAL;
14*c9945492SAndroid Build Coastguard Worker 			return -1;
15*c9945492SAndroid Build Coastguard Worker 		}
16*c9945492SAndroid Build Coastguard Worker 	}
17*c9945492SAndroid Build Coastguard Worker 	return syscall(SYS_sigaltstack, ss, old);
18*c9945492SAndroid Build Coastguard Worker }
19