Clean up whitespace in lock elision patches.

Signed-off-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
Dominik Vogt 2013-07-19 05:16:28 +00:00 committed by Carlos O'Donell
parent d3d3ce982a
commit 075b9322c9
15 changed files with 52 additions and 31 deletions

View File

@ -1,5 +1,20 @@
2013-07-19 Dominik Vogt <vogt@de.ibm.com> 2013-07-19 Dominik Vogt <vogt@de.ibm.com>
* pthread_mutex_lock.c: Fix whitespace.
* pthread_mutex_trylock.c: Likewise.
* sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/x86/elision-conf.c: Likewise.
* sysdeps/unix/sysv/linux/x86/elision-conf.h: Likewise.
* sysdeps/unix/sysv/linux/x86/elision-lock.c: Likewise.
* sysdeps/unix/sysv/linux/x86/elision-timed.c: Likewise.
* sysdeps/unix/sysv/linux/x86/elision-trylock.c: Likewise.
* sysdeps/unix/sysv/linux/x86/force-elision.h: Likewise.
* sysdeps/unix/sysv/linux/x86/hle.h: Likewise.
* sysdeps/unix/sysv/linux/x86/pthread_mutex_cond_lock.c: Likewise.
* sysdeps/unix/sysv/linux/x86/pthread_mutex_lock.c: Likewise.
* sysdeps/unix/sysv/linux/x86/pthread_mutex_timedlock.c: Likewise.
* sysdeps/unix/sysv/linux/x86/pthread_mutex_trylock.c: Likewise.
* sysdeps/unix/sysv/linux/x86/elision-conf.c: * sysdeps/unix/sysv/linux/x86/elision-conf.c:
Remove __rwlock_rtm_enabled and __rwlock_rtm_read_retries. Remove __rwlock_rtm_enabled and __rwlock_rtm_read_retries.
(elision_init): Don't set __rwlock_rtm_enabled. (elision_init): Don't set __rwlock_rtm_enabled.

View File

@ -86,7 +86,7 @@ __pthread_mutex_lock (mutex)
/* This case can never happen on a system without elision, /* This case can never happen on a system without elision,
as the mutex type initialization functions will not as the mutex type initialization functions will not
allow to set the elision flags. */ allow to set the elision flags. */
/* Don't record owner or users for elision case. This is a /* Don't record owner or users for elision case. This is a
tail call. */ tail call. */
return LLL_MUTEX_LOCK_ELISION (mutex); return LLL_MUTEX_LOCK_ELISION (mutex);
} }

View File

@ -31,7 +31,7 @@
#endif #endif
/* We don't force elision in trylock, because this can lead to inconsistent /* We don't force elision in trylock, because this can lead to inconsistent
lock state if the lock was actually busy. */ lock state if the lock was actually busy. */
int int
__pthread_mutex_trylock (mutex) __pthread_mutex_trylock (mutex)
@ -73,7 +73,7 @@ __pthread_mutex_trylock (mutex)
if (lll_trylock_elision (mutex->__data.__lock, if (lll_trylock_elision (mutex->__data.__lock,
mutex->__data.__elision) != 0) mutex->__data.__elision) != 0)
break; break;
/* Don't record the ownership. */ /* Don't record the ownership. */
return 0; return 0;
case PTHREAD_MUTEX_TIMED_NP: case PTHREAD_MUTEX_TIMED_NP:

View File

@ -112,7 +112,7 @@ typedef union
{ {
struct struct
{ {
short __espins; short __espins;
short __elision; short __elision;
# define __spins d.__espins # define __spins d.__espins
# define __elision d.__elision # define __elision d.__elision

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include "config.h" #include "config.h"
#include <pthreadP.h> #include <pthreadP.h>
@ -32,7 +32,7 @@ struct elision_config __elision_aconf =
acquisition attempts. */ acquisition attempts. */
.skip_lock_busy = 3, .skip_lock_busy = 3,
/* How often to not attempt to use elision if a transaction aborted due /* How often to not attempt to use elision if a transaction aborted due
to reasons other than other threads' memory accesses. Expressed in to reasons other than other threads' memory accesses. Expressed in
number of lock acquisition attempts. */ number of lock acquisition attempts. */
.skip_lock_internal_abort = 3, .skip_lock_internal_abort = 3,
/* How often we retry using elision if there is chance for the transaction /* How often we retry using elision if there is chance for the transaction
@ -43,13 +43,14 @@ struct elision_config __elision_aconf =
.skip_trylock_internal_abort = 3, .skip_trylock_internal_abort = 3,
}; };
/* Set when the CPU supports elision. When false elision is never attempted. */ /* Set when the CPU supports elision. When false elision is never attempted.
*/
int __elision_available attribute_hidden; int __elision_available attribute_hidden;
/* Force elision for all new locks. This is used to decide whether existing /* Force elision for all new locks. This is used to decide whether existing
DEFAULT locks should be automatically upgraded to elision in DEFAULT locks should be automatically upgraded to elision in
pthread_mutex_lock(). Disabled for suid programs. Only used when elision pthread_mutex_lock(). Disabled for suid programs. Only used when elision
is available. */ is available. */
int __pthread_force_elision attribute_hidden; int __pthread_force_elision attribute_hidden;

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#ifndef _ELISION_CONF_H #ifndef _ELISION_CONF_H
#define _ELISION_CONF_H 1 #define _ELISION_CONF_H 1

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <pthread.h> #include <pthread.h>
#include "pthreadP.h" #include "pthreadP.h"
@ -58,7 +58,7 @@ __lll_lock_elision (int *futex, short *adapt_count, EXTRAARG int private)
if (*futex == 0) if (*futex == 0)
return 0; return 0;
/* Lock was busy. Fall back to normal locking. /* Lock was busy. Fall back to normal locking.
Could also _xend here but xabort with 0xff code Could also _xend here but xabort with 0xff code
is more visible in the profiler. */ is more visible in the profiler. */
_xabort (_ABORT_LOCK_BUSY); _xabort (_ABORT_LOCK_BUSY);
@ -69,12 +69,12 @@ __lll_lock_elision (int *futex, short *adapt_count, EXTRAARG int private)
if ((status & _XABORT_EXPLICIT) if ((status & _XABORT_EXPLICIT)
&& _XABORT_CODE (status) == _ABORT_LOCK_BUSY) && _XABORT_CODE (status) == _ABORT_LOCK_BUSY)
{ {
/* Right now we skip here. Better would be to wait a bit /* Right now we skip here. Better would be to wait a bit
and retry. This likely needs some spinning. */ and retry. This likely needs some spinning. */
if (*adapt_count != aconf.skip_lock_busy) if (*adapt_count != aconf.skip_lock_busy)
*adapt_count = aconf.skip_lock_busy; *adapt_count = aconf.skip_lock_busy;
} }
/* Internal abort. There is no chance for retry. /* Internal abort. There is no chance for retry.
Use the normal locking and next time use lock. Use the normal locking and next time use lock.
Be careful to avoid writing to the lock. */ Be careful to avoid writing to the lock. */
else if (*adapt_count != aconf.skip_lock_internal_abort) else if (*adapt_count != aconf.skip_lock_internal_abort)

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <time.h> #include <time.h>
#include <elision-conf.h> #include <elision-conf.h>

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <pthread.h> #include <pthread.h>
#include <pthreadP.h> #include <pthreadP.h>
@ -24,14 +24,14 @@
#define aconf __elision_aconf #define aconf __elision_aconf
/* Try to elide a futex trylock. FUTEX is the futex variable. ADAPT_COUNT is the /* Try to elide a futex trylock. FUTEX is the futex variable. ADAPT_COUNT is
adaptation counter in the mutex. */ the adaptation counter in the mutex. */
int int
__lll_trylock_elision (int *futex, short *adapt_count) __lll_trylock_elision (int *futex, short *adapt_count)
{ {
/* Implement POSIX semantics by forbiding nesting /* Implement POSIX semantics by forbiding nesting
trylock. Sorry. After the abort the code is re-executed trylock. Sorry. After the abort the code is re-executed
non transactional and if the lock was already locked non transactional and if the lock was already locked
return an error. */ return an error. */
_xabort (_ABORT_NESTED_TRYLOCK); _xabort (_ABORT_NESTED_TRYLOCK);
@ -46,7 +46,7 @@ __lll_trylock_elision (int *futex, short *adapt_count)
if (*futex == 0) if (*futex == 0)
return 0; return 0;
/* Lock was busy. Fall back to normal locking. /* Lock was busy. Fall back to normal locking.
Could also _xend here but xabort with 0xff code Could also _xend here but xabort with 0xff code
is more visible in the profiler. */ is more visible in the profiler. */
_xabort (_ABORT_LOCK_BUSY); _xabort (_ABORT_LOCK_BUSY);
@ -54,12 +54,12 @@ __lll_trylock_elision (int *futex, short *adapt_count)
if (!(status & _XABORT_RETRY)) if (!(status & _XABORT_RETRY))
{ {
/* Internal abort. No chance for retry. For future /* Internal abort. No chance for retry. For future
locks don't try speculation for some time. */ locks don't try speculation for some time. */
if (*adapt_count != aconf.skip_trylock_internal_abort) if (*adapt_count != aconf.skip_trylock_internal_abort)
*adapt_count = aconf.skip_trylock_internal_abort; *adapt_count = aconf.skip_trylock_internal_abort;
} }
/* Could do some retries here. */ /* Could do some retries here. */
} }
else else
{ {

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
/* Check for elision on this lock without upgrading. */ /* Check for elision on this lock without upgrading. */
#define DO_ELISION(m) \ #define DO_ELISION(m) \

View File

@ -1,5 +1,5 @@
/* Shared RTM header. Emulate TSX intrinsics for compilers and assemblers /* Shared RTM header. Emulate TSX intrinsics for compilers and assemblers
that do not support the intrinsics and instructions yet. */ that do not support the intrinsics and instructions yet. */
#ifndef _HLE_H #ifndef _HLE_H
#define _HLE_H 1 #define _HLE_H 1
@ -28,7 +28,7 @@
/* Official RTM intrinsics interface matching gcc/icc, but works /* Official RTM intrinsics interface matching gcc/icc, but works
on older gcc compatible compilers and binutils. on older gcc compatible compilers and binutils.
We should somehow detect if the compiler supports it, because We should somehow detect if the compiler supports it, because
it may be able to generate slightly better code. */ it may be able to generate slightly better code. */
#define _XBEGIN_STARTED (~0u) #define _XBEGIN_STARTED (~0u)
#define _XABORT_EXPLICIT (1 << 0) #define _XABORT_EXPLICIT (1 << 0)

View File

@ -13,9 +13,10 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
/* The cond lock is not actually elided yet, but we still need to handle /* The cond lock is not actually elided yet, but we still need to handle
already elided locks. */ already elided locks. */
#include <elision-conf.h> #include <elision-conf.h>
#include "sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c" #include "sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c"

View File

@ -14,7 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <elision-conf.h> #include <elision-conf.h>
#include "force-elision.h" #include "force-elision.h"

View File

@ -14,7 +14,9 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <elision-conf.h> #include <elision-conf.h>
#include "force-elision.h" #include "force-elision.h"
#include "nptl/pthread_mutex_timedlock.c" #include "nptl/pthread_mutex_timedlock.c"

View File

@ -14,7 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <elision-conf.h> #include <elision-conf.h>
#include "force-elision.h" #include "force-elision.h"