mirror of
git://git.musl-libc.org/musl
synced 2025-04-11 03:31:50 +00:00
make sigaltstack work (missing macros in signal.h, error conditions)
This commit is contained in:
parent
1b538acb0a
commit
6871fd773d
@ -131,6 +131,8 @@ struct __siginfo
|
|||||||
#define POLL_HUP 6
|
#define POLL_HUP 6
|
||||||
#define SS_ONSTACK 1
|
#define SS_ONSTACK 1
|
||||||
#define SS_DISABLE 2
|
#define SS_DISABLE 2
|
||||||
|
#define MINSIGSTKSZ 2048
|
||||||
|
#define SIGSTKSZ 8192
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SA_NOCLDSTOP 1
|
#define SA_NOCLDSTOP 1
|
||||||
|
@ -137,6 +137,8 @@ struct __siginfo
|
|||||||
#define POLL_HUP 6
|
#define POLL_HUP 6
|
||||||
#define SS_ONSTACK 1
|
#define SS_ONSTACK 1
|
||||||
#define SS_DISABLE 2
|
#define SS_DISABLE 2
|
||||||
|
#define MINSIGSTKSZ 2048
|
||||||
|
#define SIGSTKSZ 8192
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SA_NOCLDSTOP 1
|
#define SA_NOCLDSTOP 1
|
||||||
|
@ -1,8 +1,18 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <errno.h>
|
||||||
#include "syscall.h"
|
#include "syscall.h"
|
||||||
|
|
||||||
int sigaltstack(const stack_t *ss, stack_t *old)
|
int sigaltstack(const stack_t *ss, stack_t *old)
|
||||||
{
|
{
|
||||||
/* depends on kernel struct matching */
|
if (ss) {
|
||||||
|
if (ss->ss_size < MINSIGSTKSZ) {
|
||||||
|
errno = ENOMEM;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (ss->ss_flags & ~SS_DISABLE) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
return syscall2(__NR_sigaltstack, (long)ss, (long)old);
|
return syscall2(__NR_sigaltstack, (long)ss, (long)old);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user