diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-15 09:29:33 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-15 09:29:33 +0000 |
commit | 885f507317b6c8576ba2e298c2249d27ea6f8404 (patch) | |
tree | 6d9a70d14c2f21d85538a023c7e2e863245c49e6 /libc/sysdeps/linux/hppa | |
parent | 1cfb1a324798f6ed03e49813d8dfe6b28dfb9c4f (diff) |
sigaction overhaul as described in docs/sigaction.txt
Run tested on i386.
Diffstat (limited to 'libc/sysdeps/linux/hppa')
-rw-r--r-- | libc/sysdeps/linux/hppa/bits/kernel_sigaction.h | 15 | ||||
-rw-r--r-- | libc/sysdeps/linux/hppa/bits/sigaction.h | 33 |
2 files changed, 18 insertions, 30 deletions
diff --git a/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h b/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h index 8a8491da0..1c093a522 100644 --- a/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h +++ b/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h @@ -12,15 +12,12 @@ struct old_kernel_sigaction { unsigned long sa_flags; }; -/* This is the sigaction structure from the Linux 2.1.68 kernel. */ +/* In uclibc, userspace struct sigaction is identical to + * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel). + * See sigaction.h + */ -struct kernel_sigaction { - __sighandler_t k_sa_handler; - unsigned long sa_flags; - sigset_t sa_mask; -}; - -extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *, - struct kernel_sigaction *, size_t) attribute_hidden; +extern int __syscall_rt_sigaction (int, const struct sigaction *, + struct sigaction *, size_t) attribute_hidden; #endif diff --git a/libc/sysdeps/linux/hppa/bits/sigaction.h b/libc/sysdeps/linux/hppa/bits/sigaction.h index 33f2b237b..3dac69e73 100644 --- a/libc/sysdeps/linux/hppa/bits/sigaction.h +++ b/libc/sysdeps/linux/hppa/bits/sigaction.h @@ -22,30 +22,21 @@ #endif /* Structure describing the action to be taken when a signal arrives. */ -struct sigaction - { - /* Signal handler. */ +struct sigaction { #ifdef __USE_POSIX199309 - union - { - /* Used if SA_SIGINFO is not set. */ - __sighandler_t sa_handler; - /* Used if SA_SIGINFO is set. */ - void (*sa_sigaction) (int, siginfo_t *, void *); - } - __sigaction_handler; -# define sa_handler __sigaction_handler.sa_handler -# define sa_sigaction __sigaction_handler.sa_sigaction + union { + __sighandler_t sa_handler; + void (*sa_sigaction)(int, siginfo_t *, void *); + } __sigaction_handler; +# define sa_handler __sigaction_handler.sa_handler +# define sa_sigaction __sigaction_handler.sa_sigaction #else - __sighandler_t sa_handler; + __sighandler_t sa_handler; #endif - - /* Special flags. */ - unsigned long int sa_flags; - - /* Additional set of signals to be blocked. */ - __sigset_t sa_mask; - }; + unsigned long sa_flags; + sigset_t sa_mask; + /* HPPA has no sa_restorer field. */ +}; /* Bits in `sa_flags'. */ |