2002-05-31 Jeff Johnston <jjohnstn@redhat.com>
* libc/sys/linux/Makefile.am: Add sig.c and sigaction.c.  Also
        make siglist.inc dependent on sig.c instead of signal.c.
        * libc/sys/linux/Makefile.in: Regenerated.
        * libc/sys/linux/sig.c: Rename from signal.c and change code to
        use NSIG instead of _NSIG.
        * libc/sys/linux/sigaction.c: New file.
        * libc/sys/linux/signal.c: Changed to be linux signal() function
        so as to override regular newlib default signal.c.
        * libc/sys/linux/linuxthreads/config.h: Add __ASSUME_REALTIME_SIGNALS
        definition.
        * libc/sys/linux/linuxthreads/testrtsig.h: New file.
        * libc/sys/linux/machine/i386/Makefile.am: Remove sigset.c.
        * libc/sys/linux/machine/i386/Makefile.in: Regenerated.
        * libc/sys/linux/machine/i386/sigset.c: Moved to linux main directory.
        * libc/sys/linux/sigset.c: Moved from machine/i386 directory.
        * libc/sys/linux/sys/signal.h: Redefine NSIG to _NSIG and override
        default linux sigset_t typedef by defining it equal to __sigset_t.
        * libc/unix/sigset.c: Add check so code isn't compiled on systems
        with a sigset_t that isn't implemented with a single int.
			
			
This commit is contained in:
		| @@ -1,3 +1,25 @@ | ||||
| 2002-05-31  Jeff Johnston  <jjohnstn@redhat.com> | ||||
|  | ||||
|         * libc/sys/linux/Makefile.am: Add sig.c and sigaction.c.  Also | ||||
|         make siglist.inc dependent on sig.c instead of signal.c. | ||||
|         * libc/sys/linux/Makefile.in: Regenerated. | ||||
|         * libc/sys/linux/sig.c: Rename from signal.c and change code to | ||||
|         use NSIG instead of _NSIG.  | ||||
|         * libc/sys/linux/sigaction.c: New file. | ||||
|         * libc/sys/linux/signal.c: Changed to be linux signal() function | ||||
|         so as to override regular newlib default signal.c. | ||||
|         * libc/sys/linux/linuxthreads/config.h: Add __ASSUME_REALTIME_SIGNALS | ||||
|         definition. | ||||
|         * libc/sys/linux/linuxthreads/testrtsig.h: New file. | ||||
|         * libc/sys/linux/machine/i386/Makefile.am: Remove sigset.c. | ||||
|         * libc/sys/linux/machine/i386/Makefile.in: Regenerated. | ||||
|         * libc/sys/linux/machine/i386/sigset.c: Moved to linux main directory. | ||||
|         * libc/sys/linux/sigset.c: Moved from machine/i386 directory. | ||||
|         * libc/sys/linux/sys/signal.h: Redefine NSIG to _NSIG and override | ||||
|         default linux sigset_t typedef by defining it equal to __sigset_t. | ||||
|         * libc/unix/sigset.c: Add check so code isn't compiled on systems | ||||
|         with a sigset_t that isn't implemented with a single int. | ||||
|  | ||||
| 2002-05-30  Jeff Johnston  <jjohnstn@redhat.com> | ||||
|  | ||||
|         * libc/sys/linux/Makefile.am: Add support for new files. | ||||
|   | ||||
| @@ -13,8 +13,8 @@ LIB_SOURCES = \ | ||||
| 	brk.c cfspeed.c flockfile.c funlockfile.c gethostname.c getoptlong.c \ | ||||
| 	getreent.c ids.c inode.c io.c io64.c linux.c mmap.c \ | ||||
| 	pread.c pread64.c process.c pwrite.c pwrite64.c raise.c realpath.c \ | ||||
| 	rename.c resource.c sched.c select.c seteuid.c shm_open.c \ | ||||
| 	shm_unlink.c sigaction.c sigqueue.c signal.c siglongjmp.c sigwait.c \ | ||||
| 	rename.c resource.c sched.c select.c seteuid.c shm_open.c shm_unlink.c \ | ||||
| 	sig.c sigaction.c sigqueue.c signal.c siglongjmp.c sigset.c sigwait.c \ | ||||
| 	socket.c sleep.c stack.c sysconf.c sysctl.c systat.c system.c \ | ||||
| 	tcdrain.c tcsendbrk.c termios.c time.c usleep.c wait.c | ||||
|  | ||||
| @@ -62,7 +62,7 @@ crt0.o: machine/crt0.o | ||||
| machine/crt0.o: ; @true | ||||
|  | ||||
|  | ||||
| signal.$(oext):	siglist.inc | ||||
| sig.$(oext):	siglist.inc | ||||
|  | ||||
| siglist.inc: | ||||
| 		$(AWK) '/#define.SIG.*[1-9][0-9]*/ { n[$$3] = $$2 } \ | ||||
|   | ||||
| @@ -104,8 +104,8 @@ LIB_SOURCES = \ | ||||
| 	brk.c cfspeed.c flockfile.c funlockfile.c gethostname.c getoptlong.c \ | ||||
| 	getreent.c ids.c inode.c io.c io64.c linux.c mmap.c \ | ||||
| 	pread.c pread64.c process.c pwrite.c pwrite64.c raise.c realpath.c \ | ||||
| 	rename.c resource.c sched.c select.c seteuid.c shm_open.c \ | ||||
| 	shm_unlink.c sigaction.c sigqueue.c signal.c siglongjmp.c sigwait.c \ | ||||
| 	rename.c resource.c sched.c select.c seteuid.c shm_open.c shm_unlink.c \ | ||||
| 	sig.c sigaction.c sigqueue.c signal.c siglongjmp.c sigset.c sigwait.c \ | ||||
| 	socket.c sleep.c stack.c sysconf.c sysctl.c systat.c system.c \ | ||||
| 	tcdrain.c tcsendbrk.c termios.c time.c usleep.c wait.c | ||||
|  | ||||
| @@ -142,11 +142,11 @@ LIBS = @LIBS@ | ||||
| @USE_LIBTOOL_FALSE@ids.o inode.o io.o io64.o linux.o mmap.o pread.o \ | ||||
| @USE_LIBTOOL_FALSE@pread64.o process.o pwrite.o pwrite64.o raise.o \ | ||||
| @USE_LIBTOOL_FALSE@realpath.o rename.o resource.o sched.o select.o \ | ||||
| @USE_LIBTOOL_FALSE@seteuid.o shm_open.o shm_unlink.o sigaction.o \ | ||||
| @USE_LIBTOOL_FALSE@sigqueue.o signal.o siglongjmp.o sigwait.o socket.o \ | ||||
| @USE_LIBTOOL_FALSE@sleep.o stack.o sysconf.o sysctl.o systat.o system.o \ | ||||
| @USE_LIBTOOL_FALSE@tcdrain.o tcsendbrk.o termios.o time.o usleep.o \ | ||||
| @USE_LIBTOOL_FALSE@wait.o | ||||
| @USE_LIBTOOL_FALSE@seteuid.o shm_open.o shm_unlink.o sig.o sigaction.o \ | ||||
| @USE_LIBTOOL_FALSE@sigqueue.o signal.o siglongjmp.o sigset.o sigwait.o \ | ||||
| @USE_LIBTOOL_FALSE@socket.o sleep.o stack.o sysconf.o sysctl.o systat.o \ | ||||
| @USE_LIBTOOL_FALSE@system.o tcdrain.o tcsendbrk.o termios.o time.o \ | ||||
| @USE_LIBTOOL_FALSE@usleep.o wait.o | ||||
| LTLIBRARIES =  $(noinst_LTLIBRARIES) | ||||
|  | ||||
| @USE_LIBTOOL_TRUE@liblinux_la_DEPENDENCIES =  | ||||
| @@ -156,10 +156,11 @@ LTLIBRARIES =  $(noinst_LTLIBRARIES) | ||||
| @USE_LIBTOOL_TRUE@mmap.lo pread.lo pread64.lo process.lo pwrite.lo \ | ||||
| @USE_LIBTOOL_TRUE@pwrite64.lo raise.lo realpath.lo rename.lo \ | ||||
| @USE_LIBTOOL_TRUE@resource.lo sched.lo select.lo seteuid.lo shm_open.lo \ | ||||
| @USE_LIBTOOL_TRUE@shm_unlink.lo sigaction.lo sigqueue.lo signal.lo \ | ||||
| @USE_LIBTOOL_TRUE@siglongjmp.lo sigwait.lo socket.lo sleep.lo stack.lo \ | ||||
| @USE_LIBTOOL_TRUE@sysconf.lo sysctl.lo systat.lo system.lo tcdrain.lo \ | ||||
| @USE_LIBTOOL_TRUE@tcsendbrk.lo termios.lo time.lo usleep.lo wait.lo | ||||
| @USE_LIBTOOL_TRUE@shm_unlink.lo sig.lo sigaction.lo sigqueue.lo \ | ||||
| @USE_LIBTOOL_TRUE@signal.lo siglongjmp.lo sigset.lo sigwait.lo \ | ||||
| @USE_LIBTOOL_TRUE@socket.lo sleep.lo stack.lo sysconf.lo sysctl.lo \ | ||||
| @USE_LIBTOOL_TRUE@systat.lo system.lo tcdrain.lo tcsendbrk.lo \ | ||||
| @USE_LIBTOOL_TRUE@termios.lo time.lo usleep.lo wait.lo | ||||
| CFLAGS = @CFLAGS@ | ||||
| COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | ||||
| LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | ||||
| @@ -519,7 +520,7 @@ crt0.o: machine/crt0.o | ||||
|  | ||||
| machine/crt0.o: ; @true | ||||
|  | ||||
| signal.$(oext):	siglist.inc | ||||
| sig.$(oext):	siglist.inc | ||||
|  | ||||
| siglist.inc: | ||||
| 		$(AWK) '/#define.SIG.*[1-9][0-9]*/ { n[$$3] = $$2 } \ | ||||
|   | ||||
| @@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = cygnus | ||||
|  | ||||
| INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) | ||||
|  | ||||
| LIB_SOURCES = setjmp.S sigaction.c sigset.c | ||||
| LIB_SOURCES = setjmp.S sigaction.c | ||||
|  | ||||
| liblinuxi386_la_LDFLAGS = -Xcompiler -nostdlib | ||||
|  | ||||
|   | ||||
| @@ -92,7 +92,7 @@ AUTOMAKE_OPTIONS = cygnus | ||||
|  | ||||
| INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) | ||||
|  | ||||
| LIB_SOURCES = setjmp.S sigaction.c sigset.c | ||||
| LIB_SOURCES = setjmp.S sigaction.c | ||||
|  | ||||
| liblinuxi386_la_LDFLAGS = -Xcompiler -nostdlib | ||||
|  | ||||
| @@ -116,12 +116,11 @@ DEFS = @DEFS@ -I. -I$(srcdir) | ||||
| CPPFLAGS = @CPPFLAGS@ | ||||
| LIBS = @LIBS@ | ||||
| lib_a_LIBADD =  | ||||
| @USE_LIBTOOL_FALSE@lib_a_OBJECTS =  setjmp.o sigaction.o sigset.o | ||||
| @USE_LIBTOOL_FALSE@lib_a_OBJECTS =  setjmp.o sigaction.o | ||||
| LTLIBRARIES =  $(noinst_LTLIBRARIES) | ||||
|  | ||||
| liblinuxi386_la_LIBADD =  | ||||
| @USE_LIBTOOL_TRUE@liblinuxi386_la_OBJECTS =  setjmp.lo sigaction.lo \ | ||||
| @USE_LIBTOOL_TRUE@sigset.lo | ||||
| @USE_LIBTOOL_TRUE@liblinuxi386_la_OBJECTS =  setjmp.lo sigaction.lo | ||||
| CFLAGS = @CFLAGS@ | ||||
| COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | ||||
| LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | ||||
|   | ||||
							
								
								
									
										83
									
								
								newlib/libc/sys/linux/sig.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								newlib/libc/sys/linux/sig.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| /* libc/sys/linux/signal.c - Signal handling functions */ | ||||
|  | ||||
| /* Written 2000 by Werner Almesberger */ | ||||
|  | ||||
|  | ||||
| #include <signal.h> | ||||
| #include <unistd.h> | ||||
| #include <sys/types.h> | ||||
| #include <machine/syscall.h> | ||||
|  | ||||
| /* avoid name space pollution */ | ||||
| #define __NR___sgetmask __NR_sgetmask | ||||
| #define __NR___ssetmask __NR_ssetmask | ||||
| #define __NR___rt_sigtimedwait __NR_rt_sigtimedwait | ||||
| #define __NR___rt_sigpending __NR_rt_sigpending | ||||
| #define __NR___rt_sigprocmask __NR_rt_sigprocmask | ||||
| #define __NR___rt_sigsuspend __NR_rt_sigsuspend | ||||
|  | ||||
| _syscall2(int,kill,pid_t,pid,int,sig) | ||||
| _syscall2(__sighandler_t,signal,int,signum,__sighandler_t,handler) | ||||
| _syscall0(int,pause) | ||||
| _syscall1(unsigned int,alarm,unsigned int,seconds) | ||||
|  | ||||
| static _syscall0(int,__sgetmask) | ||||
| static _syscall1(int,__ssetmask,int,newmask) | ||||
| static _syscall2(int,__rt_sigpending,sigset_t *,set,size_t,size) | ||||
| static _syscall4(int,__rt_sigprocmask,int,how,const sigset_t *,set,sigset_t *,oldset,size_t,size) | ||||
| static _syscall2(int,__rt_sigsuspend,const sigset_t *,mask,size_t,size) | ||||
| static _syscall4(int,__rt_sigtimedwait,const sigset_t *,set,siginfo_t *,info,struct timespec *,timeout,size_t,size) | ||||
|  | ||||
| int __sigsuspend (const sigset_t *mask) | ||||
| { | ||||
|     return __rt_sigsuspend(mask, NSIG/8); | ||||
| } | ||||
| weak_alias(__sigsuspend,sigsuspend) | ||||
|  | ||||
| int sigsetmask(int newmask) /* BSD */ | ||||
| { | ||||
|     return __ssetmask(newmask); | ||||
| } | ||||
|  | ||||
| int sigmask(int signum) /* BSD */ | ||||
| { | ||||
|     return 1 << signum; | ||||
| } | ||||
|  | ||||
| int sigblock(int mask) /* BSD */ | ||||
| { | ||||
|     return __ssetmask(mask | __sgetmask()); | ||||
| } | ||||
|  | ||||
| int __libc_raise(int sig) | ||||
| { | ||||
|     return kill(getpid(),sig); | ||||
| } | ||||
| weak_alias(__libc_raise,raise) | ||||
|  | ||||
| int __sigpending(sigset_t *set) | ||||
| { | ||||
|   return __rt_sigpending(set, NSIG/8); | ||||
| } | ||||
| weak_alias(__sigpending,sigpending) | ||||
|  | ||||
| int __sigprocmask (int how,const sigset_t *set,sigset_t *oldset) | ||||
| { | ||||
|   return __rt_sigprocmask(how, set, oldset, NSIG/8); | ||||
| } | ||||
| weak_alias(__sigprocmask,sigprocmask) | ||||
|  | ||||
| int sigtimedwait(const sigset_t *set, siginfo_t *info, | ||||
|                  struct timespec *timeout) | ||||
| { | ||||
|   return __rt_sigtimedwait(set, info, timeout, NSIG/8); | ||||
| } | ||||
|  | ||||
| int sigwaitinfo(const sigset_t *set, siginfo_t *info) | ||||
| { | ||||
|   return __rt_sigtimedwait(set, info, NULL, NSIG/8); | ||||
| } | ||||
|  | ||||
| const char *const sys_siglist[] = { | ||||
| #include "siglist.inc" | ||||
| }; | ||||
| @@ -60,7 +60,7 @@ __libc_sigaction (sig, act, oact) | ||||
|      real size of the user-level sigset_t.  */ | ||||
|   result = __rt_sigaction (sig, | ||||
| 	       act ? (&kact) : NULL, | ||||
| 	       oact ? (&koact) : NULL, _NSIG / 8); | ||||
| 	       oact ? (&koact) : NULL, NSIG / 8); | ||||
|  | ||||
|   if (oact && result >= 0) | ||||
|     { | ||||
|   | ||||
| @@ -1,83 +1,54 @@ | ||||
| /* libc/sys/linux/signal.c - Signal handling functions */ | ||||
| /* BSD-like signal function. | ||||
|    Copyright (C) 1991, 1992, 1996, 1997, 2000 Free Software Foundation, Inc. | ||||
|    This file is part of the GNU C Library. | ||||
|  | ||||
| /* Written 2000 by Werner Almesberger */ | ||||
|    The GNU C Library is free software; you can redistribute it and/or | ||||
|    modify it under the terms of the GNU Lesser General Public | ||||
|    License as published by the Free Software Foundation; either | ||||
|    version 2.1 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 | ||||
|    Lesser General Public License for more details. | ||||
|  | ||||
|    You should have received a copy of the GNU Lesser General Public | ||||
|    License along with the GNU C Library; 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 <unistd.h> | ||||
| #include <sys/types.h> | ||||
| #include <machine/syscall.h> | ||||
| #include <machine/weakalias.h> | ||||
|  | ||||
| /* avoid name space pollution */ | ||||
| #define __NR___sgetmask __NR_sgetmask | ||||
| #define __NR___ssetmask __NR_ssetmask | ||||
| #define __NR___rt_sigtimedwait __NR_rt_sigtimedwait | ||||
| #define __NR___rt_sigpending __NR_rt_sigpending | ||||
| #define __NR___rt_sigprocmask __NR_rt_sigprocmask | ||||
| #define __NR___rt_sigsuspend __NR_rt_sigsuspend | ||||
| sigset_t _sigintr;		/* Set by siginterrupt.  */ | ||||
|  | ||||
| _syscall2(int,kill,pid_t,pid,int,sig) | ||||
| _syscall2(__sighandler_t,signal,int,signum,__sighandler_t,handler) | ||||
| _syscall0(int,pause) | ||||
| _syscall1(unsigned int,alarm,unsigned int,seconds) | ||||
|  | ||||
| static _syscall0(int,__sgetmask) | ||||
| static _syscall1(int,__ssetmask,int,newmask) | ||||
| static _syscall2(int,__rt_sigpending,sigset_t *,set,size_t,size) | ||||
| static _syscall4(int,__rt_sigprocmask,int,how,const sigset_t *,set,sigset_t *,oldset,size_t,size) | ||||
| static _syscall2(int,__rt_sigsuspend,const sigset_t *,mask,size_t,size) | ||||
| static _syscall4(int,__rt_sigtimedwait,const sigset_t *,set,siginfo_t *,info,struct timespec *,timeout,size_t,size) | ||||
|  | ||||
| int __sigsuspend (const sigset_t *mask) | ||||
| /* Set the handler for the signal SIG to HANDLER, | ||||
|    returning the old handler, or SIG_ERR on error.  */ | ||||
| __sighandler_t | ||||
| __bsd_signal (sig, handler) | ||||
|      int sig; | ||||
|      __sighandler_t handler; | ||||
| { | ||||
|     return __rt_sigsuspend(mask, _NSIG/8); | ||||
| } | ||||
| weak_alias(__sigsuspend,sigsuspend) | ||||
|   struct sigaction act, oact; | ||||
|  | ||||
| int sigsetmask(int newmask) /* BSD */ | ||||
| { | ||||
|     return __ssetmask(newmask); | ||||
| } | ||||
|   /* Check signal extents to protect __sigismember.  */ | ||||
|   if (handler == SIG_ERR || sig < 1 || sig >= NSIG) | ||||
|     { | ||||
|       errno = (EINVAL); | ||||
|       return SIG_ERR; | ||||
|     } | ||||
|  | ||||
| int sigmask(int signum) /* BSD */ | ||||
| { | ||||
|     return 1 << signum; | ||||
| } | ||||
|   act.sa_handler = handler; | ||||
|   if (sigemptyset (&act.sa_mask) < 0 | ||||
|       || sigaddset (&act.sa_mask, sig) < 0) | ||||
|     return SIG_ERR; | ||||
|   act.sa_flags = sigismember (&_sigintr, sig) ? 0 : SA_RESTART; | ||||
|   if (sigaction (sig, &act, &oact) < 0) | ||||
|     return SIG_ERR; | ||||
|  | ||||
| int sigblock(int mask) /* BSD */ | ||||
| { | ||||
|     return __ssetmask(mask | __sgetmask()); | ||||
|   return oact.sa_handler; | ||||
| } | ||||
|  | ||||
| int __libc_raise(int sig) | ||||
| { | ||||
|     return kill(getpid(),sig); | ||||
| } | ||||
| weak_alias(__libc_raise,raise) | ||||
|  | ||||
| int __sigpending(sigset_t *set) | ||||
| { | ||||
|   return __rt_sigpending(set, _NSIG/8); | ||||
| } | ||||
| weak_alias(__sigpending,sigpending) | ||||
|  | ||||
| int __sigprocmask (int how,const sigset_t *set,sigset_t *oldset) | ||||
| { | ||||
|   return __rt_sigprocmask(how, set, oldset, _NSIG/8); | ||||
| } | ||||
| weak_alias(__sigprocmask,sigprocmask) | ||||
|  | ||||
| int sigtimedwait(const sigset_t *set, siginfo_t *info, | ||||
|                  struct timespec *timeout) | ||||
| { | ||||
|   return __rt_sigtimedwait(set, info, timeout, _NSIG/8); | ||||
| } | ||||
|  | ||||
| int sigwaitinfo(const sigset_t *set, siginfo_t *info) | ||||
| { | ||||
|   return __rt_sigtimedwait(set, info, NULL, _NSIG/8); | ||||
| } | ||||
|  | ||||
| const char *const sys_siglist[] = { | ||||
| #include "siglist.inc" | ||||
| }; | ||||
| weak_alias (__bsd_signal, bsd_signal) | ||||
| weak_alias (__bsd_signal, signal) | ||||
| weak_alias (__bsd_signal, ssignal) | ||||
|   | ||||
| @@ -12,6 +12,7 @@ | ||||
| #include <bits/sigset.h> | ||||
| #include <errno.h> | ||||
| #include <string.h> | ||||
| #include <machine/weakalias.h> | ||||
| 
 | ||||
| int | ||||
| sigaddset (sigset_t *set, const int signo) | ||||
| @@ -25,8 +26,8 @@ sigaddset (sigset_t *set, const int signo) | ||||
|       return -1; | ||||
|     } | ||||
| 
 | ||||
|   index = (signo - 1) / 32; | ||||
|   mask = 1 << ((signo - 1) % 32); | ||||
|   index = (signo - 1) / (8 * sizeof(long)); | ||||
|   mask = 1 << ((signo - 1) % (8 * sizeof(long))); | ||||
| 
 | ||||
|   st->__val[index] |= mask; | ||||
|   return 0; | ||||
| @@ -46,8 +47,8 @@ sigdelset (sigset_t *set, const int signo) | ||||
|       return -1; | ||||
|     } | ||||
| 
 | ||||
|   index = (signo - 1) / 32; | ||||
|   mask = 1 << ((signo - 1) % 32); | ||||
|   index = (signo - 1) / (8 * sizeof(long)); | ||||
|   mask = 1 << ((signo - 1) % (8 * sizeof(long))); | ||||
| 
 | ||||
|   st->__val[index] &= ~mask; | ||||
|   return 0; | ||||
| @@ -89,8 +90,8 @@ sigismember (const sigset_t *set, int signo) | ||||
|       return -1; | ||||
|     } | ||||
| 
 | ||||
|   index = (signo - 1) / 32; | ||||
|   mask = 1 << ((signo - 1) % 32); | ||||
|   index = (signo - 1) / (8 * sizeof(long)); | ||||
|   mask = 1 << ((signo - 1) % (8 * sizeof(long))); | ||||
| 
 | ||||
|   return (st->__val[index] & mask) != 0; | ||||
| } | ||||
| @@ -5,13 +5,21 @@ | ||||
|  | ||||
| #ifndef _SYS_SIGNAL_H | ||||
| #define _SYS_SIGNAL_H | ||||
| #define _SIGNAL_H | ||||
|  | ||||
| #include <sys/types.h> | ||||
| #include <linux/signal.h> | ||||
| #include <bits/sigset.h> | ||||
| #define _SIGNAL_H | ||||
| #include <bits/signum.h> | ||||
|  | ||||
| /* we want RT signals so we must override the definition of sigset_t | ||||
|    and NSIG */ | ||||
|  | ||||
| #undef NSIG | ||||
| #define NSIG _NSIG | ||||
| #undef sigset_t | ||||
| #define sigset_t __sigset_t | ||||
|  | ||||
| /* --- include/signal.h thinks it knows better :-( --- */ | ||||
|  | ||||
| #undef SIG_DFL | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| #include <signal.h> | ||||
| #include <errno.h> | ||||
|  | ||||
| #ifdef SIG_SETMASK	/* easier than trying to remove from Makefile */ | ||||
| #if defined(SIG_SETMASK) && NSIG <= 32	/* easier than trying to remove from Makefile */ | ||||
|  | ||||
| #undef sigemptyset | ||||
| int | ||||
|   | ||||
		Reference in New Issue
	
	Block a user