diff options
Diffstat (limited to 'usr/klibc/arch/sparc/sigaction.c')
-rw-r--r-- | usr/klibc/arch/sparc/sigaction.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/usr/klibc/arch/sparc/sigaction.c b/usr/klibc/arch/sparc/sigaction.c new file mode 100644 index 0000000..5c31a52 --- /dev/null +++ b/usr/klibc/arch/sparc/sigaction.c @@ -0,0 +1,21 @@ +/* + * sigaction.c + */ + +#include <signal.h> +#include <sys/syscall.h> + +__extern void __sigreturn(void); +__extern int ____rt_sigaction(int, const struct sigaction *, struct sigaction *, + void (*)(void), size_t); + +int __rt_sigaction(int sig, const struct sigaction *act, + struct sigaction *oact, size_t size) +{ + void (*restorer)(void); + + restorer = (act && act->sa_flags & SA_RESTORER) + ? (void (*)(void))((uintptr_t)act->sa_restorer - 8) + : NULL; + return ____rt_sigaction(sig, act, oact, restorer, size); +} |