ソースを参照

Fix a few things I'd missed when using old (2.0.x) kernels.
-Erik

Eric Andersen 22 年 前
コミット
c1bb4ddffb

+ 1 - 1
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)

+ 1 - 1
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) {

+ 0 - 49
libc/signal/sigsuspend.c

@@ -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;
-}

+ 11 - 4
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