diff options
-rw-r--r-- | libc/signal/Makefile | 2 | ||||
-rw-r--r-- | libc/signal/sigaction.c | 2 | ||||
-rw-r--r-- | libc/signal/sigsuspend.c | 49 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/syscalls.c | 15 |
4 files changed, 13 insertions, 55 deletions
diff --git a/libc/signal/Makefile b/libc/signal/Makefile index c58717547..c3e7029af 100644 --- a/libc/signal/Makefile +++ b/libc/signal/Makefile @@ -28,7 +28,7 @@ CSRC= allocrtsig.c killpg.c raise.c sigaction.c sigaddset.c sigandset.c \ sigblock.c sigdelset.c sigempty.c sigfillset.c siggetmask.c sighold.c \ sigignore.c sigintr.c sigisempty.c sigismem.c sigjmp.c signal.c \ sigorset.c sigpause.c sigrelse.c sigset.c sigsetmask.c sigsetops.c \ - sigsuspend.c sysv_signal.c + sysv_signal.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) diff --git a/libc/signal/sigaction.c b/libc/signal/sigaction.c index 58cf57b75..849abc745 100644 --- a/libc/signal/sigaction.c +++ b/libc/signal/sigaction.c @@ -160,7 +160,7 @@ int sigaction (int sig, const struct sigaction *act, struct sigaction *oact) k_sigact.sa_restorer = act->sa_restorer; # endif } - result = sigaction(sig, act ? __ptrvalue (&k_sigact) : NULL, + result = __sigaction(sig, act ? __ptrvalue (&k_sigact) : NULL, oact ? __ptrvalue (&k_osigact) : NULL); if (oact && result >= 0) { diff --git a/libc/signal/sigsuspend.c b/libc/signal/sigsuspend.c deleted file mode 100644 index ad6e0fc8e..000000000 --- a/libc/signal/sigsuspend.c +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright (C) 1991, 1996, 1997, 1998 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include <errno.h> -#include <signal.h> -#include <stddef.h> -#include <unistd.h> - - -/* Change the set of blocked signals to SET, - wait until a signal arrives, and restore the set of blocked signals. */ -int __sigsuspend (const sigset_t *set) -{ - sigset_t oset; - int save; - - if (set == NULL) - { - __set_errno (EINVAL); - return -1; - } - - if (sigprocmask (SIG_SETMASK, set, &oset) < 0) - return -1; - - (void) pause(); - save = errno; - - if (sigprocmask (SIG_SETMASK, &oset, (sigset_t *) NULL) < 0) - return -1; - - __set_errno (save); - return -1; -} diff --git a/libc/sysdeps/linux/common/syscalls.c b/libc/sysdeps/linux/common/syscalls.c index 889e15616..36a2ba5c2 100644 --- a/libc/sysdeps/linux/common/syscalls.c +++ b/libc/sysdeps/linux/common/syscalls.c @@ -505,7 +505,7 @@ _syscall0(pid_t, setsid); //#define __NR_sigaction 67 #ifndef __NR_rt_sigaction #define __NR___sigaction __NR_sigaction -#ifdef L_sigaction +#ifdef L___sigaction #include <signal.h> #undef sigaction _syscall3(int, __sigaction, int, signum, const struct sigaction *, act, @@ -532,10 +532,10 @@ _syscall2(int, setregid, gid_t, rgid, gid_t, egid); //#define __NR_sigsuspend 72 #ifndef __NR_rt_sigsuspend #define __NR___sigsuspend __NR_sigsuspend -#ifdef L__sigsuspend +#ifdef L___sigsuspend #include <signal.h> #undef sigsuspend -_syscall3(int, __sigsuspend, int a, unsigned long int b, unsigned long int, c); +_syscall3(int, __sigsuspend, int, a, unsigned long int, b, unsigned long int, c); int sigsuspend (const sigset_t *set) { @@ -1189,6 +1189,7 @@ _syscall3(int, poll, struct pollfd *, fds, unsigned long int, nfds, int, timeout //#define __NR_prctl 172 //#define __NR_rt_sigreturn 173 //#define __NR_rt_sigaction 174 +#ifdef __NR_rt_sigaction #define __NR___rt_sigaction __NR_rt_sigaction #ifdef L___rt_sigaction #include <signal.h> @@ -1196,8 +1197,10 @@ _syscall3(int, poll, struct pollfd *, fds, unsigned long int, nfds, int, timeout _syscall4(int, __rt_sigaction, int, signum, const struct sigaction *, act, struct sigaction *, oldact, size_t, size); #endif +#endif //#define __NR_rt_sigprocmask 175 +#ifdef __NR_rt_sigprocmask #define __NR___rt_sigprocmask __NR_rt_sigprocmask #ifdef L___rt_sigprocmask #include <signal.h> @@ -1209,10 +1212,11 @@ int sigprocmask(int how, const sigset_t *set, sigset_t *oldset) { return __rt_sigprocmask(how, set, oldset, _NSIG/8); } - +#endif #endif //#define __NR_rt_sigpending 176 +#ifdef __NR_rt_sigpending #define __NR___rt_sigpending __NR_rt_sigpending #ifdef L___rt_sigpending #include <signal.h> @@ -1224,11 +1228,13 @@ int sigpending(sigset_t *set) return __rt_sigpending(set, _NSIG/8); } #endif +#endif //#define __NR_rt_sigtimedwait 177 //#define __NR_rt_sigqueueinfo 178 //#define __NR_rt_sigsuspend 179 +#ifdef __NR_rt_sigsuspend #define __NR___rt_sigsuspend __NR_rt_sigsuspend #ifdef L___rt_sigsuspend #include <signal.h> @@ -1240,6 +1246,7 @@ int sigsuspend (const sigset_t *mask) return __rt_sigsuspend(mask, _NSIG/8); } #endif +#endif //#define __NR_pread 180 //#define __NR_pwrite 181 |