use the kernel sigaction syscall to avoid relying on glibc one

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1044 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2004-08-03 22:09:30 +00:00
parent 3611a29c09
commit d2bfb39ad2
3 changed files with 39 additions and 11 deletions

23
osdep.h
View file

@ -22,6 +22,29 @@ void *get_mmap_addr(unsigned long size);
extern void __longjmp(jmp_buf env, int val);
#define longjmp __longjmp
#include <signal.h>
/* NOTE: it works only because the glibc sigset_t is >= kernel sigset_t */
struct qemu_sigaction {
union {
void (*_sa_handler)(int);
void (*_sa_sigaction)(int, struct siginfo *, void *);
} _u;
unsigned long sa_flags;
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
int qemu_sigaction(int signum, const struct qemu_sigaction *act,
struct qemu_sigaction *oldact);
#undef sigaction
#undef sa_handler
#undef sa_sigaction
#define sigaction qemu_sigaction
#define sa_handler _u._sa_handler
#define sa_sigaction _u._sa_sigaction
#endif
#endif