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>