diff options
Diffstat (limited to 'signal/allocrtsig.c')
-rw-r--r-- | signal/allocrtsig.c | 55 |
1 files changed, 19 insertions, 36 deletions
diff --git a/signal/allocrtsig.c b/signal/allocrtsig.c index c9af846cf6..0dd003110f 100644 --- a/signal/allocrtsig.c +++ b/signal/allocrtsig.c @@ -1,4 +1,4 @@ -/* Handle real-time signal allocation. +/* Handle real-time signal allocation. Generic version. Copyright (C) 1997-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -19,36 +19,18 @@ #include <signal.h> +/* Another sysdeps file can #define this and then #include this file. */ +#ifndef RESERVED_SIGRT +# define RESERVED_SIGRT 0 +#endif + /* 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. */ -#ifndef __SIGRTMIN -static int current_rtmin = -1; -static int current_rtmax = -1; -#else -static int current_rtmin; -static int current_rtmax; - -static int initialized; - -#include <testrtsig.h> - -static void -init (void) -{ - if (!kernel_has_rtsig ()) - { - current_rtmin = -1; - current_rtmax = -1; - } - else - { - current_rtmin = __SIGRTMIN; - current_rtmax = __SIGRTMAX; - } - initialized = 1; -} +#ifdef __SIGRTMIN +static int current_rtmin = __SIGRTMIN + RESERVED_SIGRT; +static int current_rtmax = __SIGRTMAX; #endif /* Return number of available real-time signal with highest priority. */ @@ -56,24 +38,26 @@ int __libc_current_sigrtmin (void) { #ifdef __SIGRTMIN - if (!initialized) - init (); -#endif return current_rtmin; +#else + return -1; +#endif } libc_hidden_def (__libc_current_sigrtmin) +strong_alias (__libc_current_sigrtmin, __libc_current_sigrtmin_private) /* Return number of available real-time signal with lowest priority. */ int __libc_current_sigrtmax (void) { #ifdef __SIGRTMIN - if (!initialized) - init (); -#endif return current_rtmax; +#else + return -1; +#endif } libc_hidden_def (__libc_current_sigrtmax) +strong_alias (__libc_current_sigrtmax, __libc_current_sigrtmax_private) /* Allocate real-time signal with highest/lowest available priority. Please note that we don't use a lock since we assume @@ -84,12 +68,11 @@ __libc_allocate_rtsig (int high) #ifndef __SIGRTMIN return -1; #else - if (!initialized) - init (); if (current_rtmin == -1 || current_rtmin > current_rtmax) - /* We don't have anymore signal available. */ + /* We don't have any more signals available. */ return -1; return high ? current_rtmin++ : current_rtmax--; #endif } +strong_alias (__libc_allocate_rtsig, __libc_allocate_rtsig_private) |