Commit Message
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
Comments
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
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
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.
@@ -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)
@@ -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)
@@ -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;
@@ -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)
{
deleted file mode 100644
@@ -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;
-}
@@ -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