File:
[DVB] /
dietlibc /
i386 /
sigaction.c
Revision
1.2:
download - view:
text,
annotated -
select for diffs
Wed Sep 21 07:33:08 2005 UTC (18 years, 8 months ago) by
leitner
Branches:
MAIN
CVS tags:
HEAD
update syscalls
lots of fixes from Markus FX Oberhumer:
* better signal handling error detection
* setjmp.S on i386
* getenv on i386
* sys/stat.h -malign-double fix
* update fcntl.h for MIPS to 2.6.13 version
* jmp_buf is 40*8 instead of 58*8 on ppc64.
* This patch fixes the section of the TOC entries on ppc64
* libstdc++ updates for gcc 4
* remove cstddef and cwchar (no longer needed)
* int -> ssize_t for read and write
* sigjmp.c: __mask_was_saved was not set in all cases!
* another round of ILP64 cleanups
#include <alloca.h>
#include <signal.h>
#include "i386/syscalls.h"
int __rt_sigaction(int signum, const struct sigaction *act, struct sigaction *oldact, long nr);
void __restore_rt(void);
void __restore(void);
int __libc_sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
int __libc_sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) {
struct sigaction *newact = (struct sigaction *)act;
if (act) {
newact = alloca(sizeof(*newact));
newact->sa_handler = act->sa_handler;
newact->sa_flags = act->sa_flags | SA_RESTORER;
newact->sa_restorer = (act->sa_flags & SA_SIGINFO) ? &__restore_rt : &__restore;
newact->sa_mask = act->sa_mask;
}
return __rt_sigaction(signum, newact, oldact, _NSIG/8);
}
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact)
__attribute__((weak,alias("__libc_sigaction")));
LinuxTV legacy CVS <linuxtv.org/cvs>