From 08734ccd983c4d048ef812d181d5ea9a8860ae45 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 8 Jan 2015 15:31:15 -0800 Subject: Clean up allocrtsig code. --- signal/allocrtsig.c | 55 ++++++++++++++++++----------------------------------- 1 file changed, 19 insertions(+), 36 deletions(-) (limited to 'signal') 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 , 1997. @@ -19,36 +19,18 @@ #include +/* 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 - -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) -- cgit v1.2.3