This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.20-510-g08734cc


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  08734ccd983c4d048ef812d181d5ea9a8860ae45 (commit)
      from  24abc200400002f24a12a8858eae1183128db661 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=08734ccd983c4d048ef812d181d5ea9a8860ae45

commit 08734ccd983c4d048ef812d181d5ea9a8860ae45
Author: Roland McGrath <roland@hack.frob.com>
Date:   Thu Jan 8 15:31:15 2015 -0800

    Clean up allocrtsig code.

diff --git a/ChangeLog b/ChangeLog
index 676e72c..a84c0cb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,25 @@
 2015-01-08  Roland McGrath  <roland@hack.frob.com>
 
+	* signal/allocrtsig.c (RESERVED_SIGRT): New macro, defined to 0 if not
+	already defined.
+	[__SIGRTMIN] (init): Function removed.
+	[__SIGRTMIN] (initialized): Variable removed.
+	[!__SIGRTMIN] (current_rtmin, current_rtmax): Variables removed.
+	[__SIGRTMIN] (current_rtmin, current_rtmax): Initialize to
+	__SIGRTMIN + RESERVED_SIGRT and __SIGRTMAX, respectively.
+	(__libc_current_sigrtmin) [__SIGRTMIN]: Don't call init.
+	(__libc_current_sigrtmin) [!__SIGRTMIN]: Just return -1.
+	(__libc_current_sigrtmin): Add __libc_current_sigrtmin_private alias.
+	(__libc_current_sigrtmax) [__SIGRTMIN]: Don't call init.
+	(__libc_current_sigrtmax) [!__SIGRTMIN]: Just return -1.
+	(__libc_current_sigrtmax): Add __libc_current_sigrtmax_private alias.
+	(__libc_allocate_rtsig) [__SIGRTMIN]: Don't call init.
+	(__libc_allocate_rtsig): Add __libc_allocate_rtsig_private alias.
+	* sysdeps/nptl/allocrtsig.c: New file.
+	* sysdeps/unix/sysv/linux/allocrtsig.c: File removed.
+	* sysdeps/unix/sysv/linux/testrtsig.h: File removed.
+	* sysdeps/generic/testrtsig.h: File removed.
+
 	* nptl/pthread_sigmask.c [SIGCANCEL || SIGTIMER || SIGSETXID]: #error.
 	(pthread_sigmask): Call sigprocmask, not __sigprocmask.
 
diff --git a/signal/allocrtsig.c b/signal/allocrtsig.c
index c9af846..0dd0031 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)
diff --git a/sysdeps/generic/testrtsig.h b/sysdeps/generic/testrtsig.h
deleted file mode 100644
index 842ee7f..0000000
--- a/sysdeps/generic/testrtsig.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Test whether RT signals are really available.
-   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.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <sys/utsname.h>
-
-static int
-kernel_has_rtsig (void)
-{
-  return 0;
-}
diff --git a/sysdeps/nptl/allocrtsig.c b/sysdeps/nptl/allocrtsig.c
new file mode 100644
index 0000000..6b1c5b2
--- /dev/null
+++ b/sysdeps/nptl/allocrtsig.c
@@ -0,0 +1,49 @@
+/* Handle real-time signal allocation.  NPTL version.
+   Copyright (C) 2015 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 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, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <nptl/pthreadP.h>
+
+/* Up to three special signals might be used privately by libpthread.
+   Figure out how many unique ones are actually used.  */
+
+#ifdef SIGCANCEL
+# define SIGCANCEL_CONSUMES     1
+#else
+# define SIGCANCEL_CONSUMES     0
+#endif
+
+#if defined SIGTIMER && (!defined SIGCANCEL || SIGTIMER != SIGCANCEL)
+# define SIGTIMER_CONSUMES      1
+#else
+# define SIGTIMER_CONSUMES      0
+#endif
+
+#if (defined SIGSETXID \
+     && (!defined SIGCANCEL || SIGSETXID != SIGCANCEL) \
+     && (!defined SIGTIMER || SIGSETXID != SIGTIMER))
+# define SIGSETXID_CONSUMES     1
+#else
+# define SIGSETXID_CONSUMES     0
+#endif
+
+/* This tells the generic code (included below) how many signal
+   numbers need to be reserved for libpthread's private uses.  */
+#define RESERVED_SIGRT          \
+  (SIGCANCEL_CONSUMES + SIGTIMER_CONSUMES + SIGSETXID_CONSUMES)
+
+#include <signal/allocrtsig.c>
diff --git a/sysdeps/unix/sysv/linux/allocrtsig.c b/sysdeps/unix/sysv/linux/allocrtsig.c
deleted file mode 100644
index 52ce21c..0000000
--- a/sysdeps/unix/sysv/linux/allocrtsig.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <signal.h>
-
-
-static int current_rtmin = __SIGRTMIN + 2;
-static int current_rtmax = __SIGRTMAX;
-
-
-/* We reserve __SIGRTMIN for use as the cancelation signal.  This
-   signal is used internally.  */
-int
-__libc_current_sigrtmin (void)
-{
-  return current_rtmin;
-}
-libc_hidden_def (__libc_current_sigrtmin)
-strong_alias (__libc_current_sigrtmin, __libc_current_sigrtmin_private)
-
-
-int
-__libc_current_sigrtmax (void)
-{
-  return current_rtmax;
-}
-libc_hidden_def (__libc_current_sigrtmax)
-strong_alias (__libc_current_sigrtmax, __libc_current_sigrtmax_private)
-
-
-int
-__libc_allocate_rtsig (int high)
-{
-  if (current_rtmin == -1 || current_rtmin > current_rtmax)
-    /* We don't have anymore signal available.  */
-    return -1;
-
-  return high ? current_rtmin++ : current_rtmax--;
-}
-strong_alias (__libc_allocate_rtsig, __libc_allocate_rtsig_private)
diff --git a/sysdeps/unix/sysv/linux/testrtsig.h b/sysdeps/unix/sysv/linux/testrtsig.h
deleted file mode 100644
index 8b12a84..0000000
--- a/sysdeps/unix/sysv/linux/testrtsig.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Test whether RT signals are really available.
-   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.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <sys/utsname.h>
-
-static int
-kernel_has_rtsig (void)
-{
-  return 1;
-}

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                            |   20 ++++++++++++
 signal/allocrtsig.c                  |   55 ++++++++++++----------------------
 sysdeps/generic/testrtsig.h          |   27 ----------------
 sysdeps/nptl/allocrtsig.c            |   49 ++++++++++++++++++++++++++++++
 sysdeps/unix/sysv/linux/allocrtsig.c |   55 ----------------------------------
 sysdeps/unix/sysv/linux/testrtsig.h  |   27 ----------------
 6 files changed, 88 insertions(+), 145 deletions(-)
 delete mode 100644 sysdeps/generic/testrtsig.h
 create mode 100644 sysdeps/nptl/allocrtsig.c
 delete mode 100644 sysdeps/unix/sysv/linux/allocrtsig.c
 delete mode 100644 sysdeps/unix/sysv/linux/testrtsig.h


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]