blob: cfa3f5c19d0de03384ff3f1a3b884149626db07b [file] [log] [blame]
Rich Felker0b44a032011-02-12 00:22:29 -05001#include <signal.h>
Rich Felker6871fd72011-03-10 10:17:29 -05002#include <errno.h>
Rich Felker0b44a032011-02-12 00:22:29 -05003#include "syscall.h"
4
Rich Felker400c5e52012-09-06 22:44:55 -04005int sigaltstack(const stack_t *restrict ss, stack_t *restrict old)
Rich Felker0b44a032011-02-12 00:22:29 -05006{
Rich Felker6871fd72011-03-10 10:17:29 -05007 if (ss) {
8 if (ss->ss_size < MINSIGSTKSZ) {
9 errno = ENOMEM;
10 return -1;
11 }
Rich Felker4918b7f2019-03-05 11:02:15 -050012 if (ss->ss_flags & SS_ONSTACK) {
Rich Felker6871fd72011-03-10 10:17:29 -050013 errno = EINVAL;
14 return -1;
15 }
16 }
Rich Felkeraa398f52011-03-20 00:16:43 -040017 return syscall(SYS_sigaltstack, ss, old);
Rich Felker0b44a032011-02-12 00:22:29 -050018}