summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-06-13 02:16:09 +0000
committerEric Andersen <andersen@codepoet.org>2002-06-13 02:16:09 +0000
commitbdcefd62125e5e0025879ec9fec7e4e60b3d3516 (patch)
tree7f9669705804bf6d8db5f887e4055f09c43bb1da /libc
parent3a4b78aa11afccfe1eac758d720f437cf20263df (diff)
Fix pthreads to use the rt signals if present
-Erik
Diffstat (limited to 'libc')
-rw-r--r--libc/signal/allocrtsig.c64
1 files changed, 21 insertions, 43 deletions
diff --git a/libc/signal/allocrtsig.c b/libc/signal/allocrtsig.c
index ebebd2a54..2102a15ba 100644
--- a/libc/signal/allocrtsig.c
+++ b/libc/signal/allocrtsig.c
@@ -4,80 +4,58 @@
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
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.
+ 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
- Library General Public License for more details.
+ Lesser 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. */
+ 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 <features.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/syscall.h>
-
-
+
/* Only enable rt signals when it is supported at compile time */
-#ifdef __NR_rt_sigaction
+#ifndef __NR_rt_sigaction
/* In these variables we keep track of the used variables. If the
platform does not support any real-time signals we will define the
values to some unreasonable value which will signal failing of all
the functions below. */
-
+static int current_rtmin = -1;
+static int current_rtmax = -1;
+#else
static int current_rtmin = __SIGRTMIN;
static int current_rtmax = __SIGRTMAX;
-
-
-
-#ifdef __UCLIBC_HAS_THREADS__
-/* Allocate real-time signal with highest/lowest available
- priority. Please note that we don't use a lock since we assume
- this function to be called at program start. */
-int __libc_allocate_rtsig (int high)
-{
- if (current_rtmin > current_rtmax)
- /* We don't have anymore signals available. */
- return -1;
-
- return high ? current_rtmin++ : current_rtmax--;
-}
#endif
/* Return number of available real-time signal with highest priority. */
int __libc_current_sigrtmin (void)
{
- return current_rtmin;
+ return current_rtmin;
}
/* Return number of available real-time signal with lowest priority. */
int __libc_current_sigrtmax (void)
{
- return current_rtmax;
+ return current_rtmax;
}
-#else
-
-#ifdef __UCLIBC_HAS_THREADS__
+/* Allocate real-time signal with highest/lowest available
+ priority. Please note that we don't use a lock since we assume
+ this function to be called at program start. */
int __libc_allocate_rtsig (int high)
{
+ if (current_rtmin == -1 || current_rtmin > current_rtmax)
+ /* We don't have anymore signal available. */
return -1;
-}
-#endif
-int __libc_current_sigrtmin (void)
-{
- return -1;
+ return high ? current_rtmin++ : current_rtmax--;
}
-
-int __libc_current_sigrtmax (void)
-{
- return -1;
-}
-#endif