public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Remove __is_smp
@ 2016-10-15  7:44 Siddhesh Poyarekar
  2016-10-15 20:20 ` Florian Weimer
  0 siblings, 1 reply; 4+ messages in thread
From: Siddhesh Poyarekar @ 2016-10-15  7:44 UTC (permalink / raw)
  To: libc-alpha

The flag is always set to 1, so there is no longer a point in setting
and checking it.

Tested on x86_64 to verify that the testsuite does not regress.

Siddhesh
---
 nptl/nptl-init.c               |  4 ----
 nptl/pthreadP.h                |  3 ---
 nptl/pthread_mutex_lock.c      |  3 ---
 nptl/pthread_mutex_timedlock.c |  2 --
 nptl/smp.h                     | 27 ---------------------------
 nptl/vars.c                    |  3 ---
 6 files changed, 42 deletions(-)
 delete mode 100644 nptl/smp.h

diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index bdbdfed..b5a744c 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -32,7 +32,6 @@
 #include <fork.h>
 #include <version.h>
 #include <shlib-compat.h>
-#include <smp.h>
 #include <lowlevellock.h>
 #include <futex-internal.h>
 #include <kernel-features.h>
@@ -493,9 +492,6 @@ __pthread_initialize_minimal_internal (void)
 #endif
     __libc_pthread_init (&__fork_generation, __reclaim_stacks,
 			 ptr_pthread_functions);
-
-  /* Determine whether the machine is SMP or not.  */
-  __is_smp = is_smp_system ();
 }
 strong_alias (__pthread_initialize_minimal_internal,
 	      __pthread_initialize_minimal)
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 6e0dd09..2364c07 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -178,9 +178,6 @@ extern int __default_pthread_attr_lock attribute_hidden;
 extern size_t __static_tls_size attribute_hidden;
 extern size_t __static_tls_align_m1 attribute_hidden;
 
-/* Flag whether the machine is SMP or not.  */
-extern int __is_smp attribute_hidden;
-
 /* Thread descriptor handling.  */
 extern list_t __stack_user;
 hidden_proto (__stack_user)
diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c
index bdfa529..d48dd0c 100644
--- a/nptl/pthread_mutex_lock.c
+++ b/nptl/pthread_mutex_lock.c
@@ -120,9 +120,6 @@ __pthread_mutex_lock (pthread_mutex_t *mutex)
   else if (__builtin_expect (PTHREAD_MUTEX_TYPE (mutex)
 			  == PTHREAD_MUTEX_ADAPTIVE_NP, 1))
     {
-      if (! __is_smp)
-	goto simple;
-
       if (LLL_MUTEX_TRYLOCK (mutex) != 0)
 	{
 	  int cnt = 0;
diff --git a/nptl/pthread_mutex_timedlock.c b/nptl/pthread_mutex_timedlock.c
index 07f0901..f965883 100644
--- a/nptl/pthread_mutex_timedlock.c
+++ b/nptl/pthread_mutex_timedlock.c
@@ -110,8 +110,6 @@ pthread_mutex_timedlock (pthread_mutex_t *mutex,
 
 
     case PTHREAD_MUTEX_ADAPTIVE_NP:
-      if (! __is_smp)
-	goto simple;
 
       if (lll_trylock (mutex->__data.__lock) != 0)
 	{
diff --git a/nptl/smp.h b/nptl/smp.h
deleted file mode 100644
index bedfb46..0000000
--- a/nptl/smp.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Determine whether the host has multiple processors.  Stub version.
-   Copyright (C) 1996-2016 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 Library General Public License as
-   published by the Free Software Foundation; either version 2 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.
-
-   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, see <http://www.gnu.org/licenses/>.  */
-
-/* Test whether the machine has more than one processor.  This is not the
-   best test but good enough.  More complicated tests would require `malloc'
-   which is not available at that time.  */
-static inline int
-is_smp_system (void)
-{
-  /* Assume all machines are SMP and/or CMT and/or SMT.  */
-  return 1;
-}
diff --git a/nptl/vars.c b/nptl/vars.c
index f09c712..80a605c 100644
--- a/nptl/vars.c
+++ b/nptl/vars.c
@@ -27,9 +27,6 @@ struct pthread_attr __default_pthread_attr attribute_hidden;
 /* Mutex protecting __default_pthread_attr.  */
 int __default_pthread_attr_lock = LLL_LOCK_INITIALIZER;
 
-/* Flag whether the machine is SMP or not.  */
-int __is_smp attribute_hidden;
-
 #ifndef TLS_MULTIPLE_THREADS_IN_TCB
 /* Variable set to a nonzero value either if more than one thread runs or ran,
    or if a single-threaded process is trying to cancel itself.  See
-- 
2.7.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Remove __is_smp
  2016-10-15  7:44 [PATCH] Remove __is_smp Siddhesh Poyarekar
@ 2016-10-15 20:20 ` Florian Weimer
  2016-10-16  3:02   ` Siddhesh Poyarekar
  0 siblings, 1 reply; 4+ messages in thread
From: Florian Weimer @ 2016-10-15 20:20 UTC (permalink / raw)
  To: Siddhesh Poyarekar, libc-alpha

On 10/15/2016 09:44 AM, Siddhesh Poyarekar wrote:
> The flag is always set to 1, so there is no longer a point in setting
> and checking it.

What about the architecture-specific copies of is_smp_system?

Thanks,
Florian

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Remove __is_smp
  2016-10-15 20:20 ` Florian Weimer
@ 2016-10-16  3:02   ` Siddhesh Poyarekar
  2016-10-17 20:14     ` Adhemerval Zanella
  0 siblings, 1 reply; 4+ messages in thread
From: Siddhesh Poyarekar @ 2016-10-16  3:02 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha

On Sunday 16 October 2016 01:49 AM, Florian Weimer wrote:
> On 10/15/2016 09:44 AM, Siddhesh Poyarekar wrote:
>> The flag is always set to 1, so there is no longer a point in setting
>> and checking it.
> 
> What about the architecture-specific copies of is_smp_system?

Sheesh, I didn't see them somehow, probably because I was searching for
__is_smp_system :/

I withdraw my patch.

Siddhesh

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Remove __is_smp
  2016-10-16  3:02   ` Siddhesh Poyarekar
@ 2016-10-17 20:14     ` Adhemerval Zanella
  0 siblings, 0 replies; 4+ messages in thread
From: Adhemerval Zanella @ 2016-10-17 20:14 UTC (permalink / raw)
  To: libc-alpha



On 16/10/2016 01:01, Siddhesh Poyarekar wrote:
> On Sunday 16 October 2016 01:49 AM, Florian Weimer wrote:
>> On 10/15/2016 09:44 AM, Siddhesh Poyarekar wrote:
>>> The flag is always set to 1, so there is no longer a point in setting
>>> and checking it.
>>
>> What about the architecture-specific copies of is_smp_system?
> 
> Sheesh, I didn't see them somehow, probably because I was searching for
> __is_smp_system :/
> 
> I withdraw my patch.
> 
> Siddhesh
> 

I think we can still proceed with this cleanup, it really seems another
old dubious optimization oriented approach that does not justify the
kind of code complexity id adds.

Basically i686 will set it based on '/proc/sys/kernel/version' output
(with came from kernel config), SH will always set to 0 and any other
system will be 1 (from nptl/smp.h).

It is only used on adaptive mutexes (PTHREAD_MUTEX_ADAPTIVE_NP), which
will avoid the spin and jump to default mutex lock algorithm.  It does
seems sense on kernel without SMP support, but I am sceptical about the
gain and usually better for unicore configuration to just avoid 
adaptive mutexes.

I would also say with current glibc usage approach (with even embedded
systems being multicore), this 'optimization' seems even superfluous.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-10-17 20:14 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-15  7:44 [PATCH] Remove __is_smp Siddhesh Poyarekar
2016-10-15 20:20 ` Florian Weimer
2016-10-16  3:02   ` Siddhesh Poyarekar
2016-10-17 20:14     ` Adhemerval Zanella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).