diff options
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 15 | ||||
-rw-r--r-- | nptl/pthread_mutex_lock.c | 2 | ||||
-rw-r--r-- | nptl/pthread_mutex_trylock.c | 4 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h | 2 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/elision-conf.c | 11 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/elision-conf.h | 2 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/elision-lock.c | 10 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/elision-timed.c | 2 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/elision-trylock.c | 14 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/force-elision.h | 2 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/hle.h | 6 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_cond_lock.c | 3 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_lock.c | 3 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_timedlock.c | 4 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_trylock.c | 3 |
15 files changed, 52 insertions, 31 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 8aeee8f32e..fc2ef41a94 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,20 @@ 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: Remove __rwlock_rtm_enabled and __rwlock_rtm_read_retries. (elision_init): Don't set __rwlock_rtm_enabled. diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c index b37f39a0a9..76dd903142 100644 --- a/nptl/pthread_mutex_lock.c +++ b/nptl/pthread_mutex_lock.c @@ -86,7 +86,7 @@ __pthread_mutex_lock (mutex) /* This case can never happen on a system without elision, as the mutex type initialization functions will not 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. */ return LLL_MUTEX_LOCK_ELISION (mutex); } diff --git a/nptl/pthread_mutex_trylock.c b/nptl/pthread_mutex_trylock.c index 600c8483b0..24fb05286f 100644 --- a/nptl/pthread_mutex_trylock.c +++ b/nptl/pthread_mutex_trylock.c @@ -31,7 +31,7 @@ #endif /* 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 __pthread_mutex_trylock (mutex) @@ -73,7 +73,7 @@ __pthread_mutex_trylock (mutex) if (lll_trylock_elision (mutex->__data.__lock, mutex->__data.__elision) != 0) break; - /* Don't record the ownership. */ + /* Don't record the ownership. */ return 0; case PTHREAD_MUTEX_TIMED_NP: diff --git a/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h index 1852e07842..28b49bd893 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h @@ -112,7 +112,7 @@ typedef union { struct { - short __espins; + short __espins; short __elision; # define __spins d.__espins # define __elision d.__elision diff --git a/nptl/sysdeps/unix/sysv/linux/x86/elision-conf.c b/nptl/sysdeps/unix/sysv/linux/x86/elision-conf.c index 822d4bd1b6..2fed32b9a9 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/elision-conf.c +++ b/nptl/sysdeps/unix/sysv/linux/x86/elision-conf.c @@ -14,7 +14,7 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ #include "config.h" #include <pthreadP.h> @@ -32,7 +32,7 @@ struct elision_config __elision_aconf = acquisition attempts. */ .skip_lock_busy = 3, /* 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. */ .skip_lock_internal_abort = 3, /* 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, }; -/* 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; -/* 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 - pthread_mutex_lock(). Disabled for suid programs. Only used when elision + pthread_mutex_lock(). Disabled for suid programs. Only used when elision is available. */ int __pthread_force_elision attribute_hidden; diff --git a/nptl/sysdeps/unix/sysv/linux/x86/elision-conf.h b/nptl/sysdeps/unix/sysv/linux/x86/elision-conf.h index 6fa26973dc..02cd2a625c 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/elision-conf.h +++ b/nptl/sysdeps/unix/sysv/linux/x86/elision-conf.h @@ -14,7 +14,7 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ #ifndef _ELISION_CONF_H #define _ELISION_CONF_H 1 diff --git a/nptl/sysdeps/unix/sysv/linux/x86/elision-lock.c b/nptl/sysdeps/unix/sysv/linux/x86/elision-lock.c index de16f1b02f..9d009839b8 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/elision-lock.c +++ b/nptl/sysdeps/unix/sysv/linux/x86/elision-lock.c @@ -14,7 +14,7 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ #include <pthread.h> #include "pthreadP.h" @@ -58,7 +58,7 @@ __lll_lock_elision (int *futex, short *adapt_count, EXTRAARG int private) if (*futex == 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 is more visible in the profiler. */ _xabort (_ABORT_LOCK_BUSY); @@ -69,12 +69,12 @@ __lll_lock_elision (int *futex, short *adapt_count, EXTRAARG int private) if ((status & _XABORT_EXPLICIT) && _XABORT_CODE (status) == _ABORT_LOCK_BUSY) { - /* Right now we skip here. Better would be to wait a bit - and retry. This likely needs some spinning. */ + /* Right now we skip here. Better would be to wait a bit + and retry. This likely needs some spinning. */ if (*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. Be careful to avoid writing to the lock. */ else if (*adapt_count != aconf.skip_lock_internal_abort) diff --git a/nptl/sysdeps/unix/sysv/linux/x86/elision-timed.c b/nptl/sysdeps/unix/sysv/linux/x86/elision-timed.c index 8825d1287e..1532964720 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/elision-timed.c +++ b/nptl/sysdeps/unix/sysv/linux/x86/elision-timed.c @@ -14,7 +14,7 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ #include <time.h> #include <elision-conf.h> diff --git a/nptl/sysdeps/unix/sysv/linux/x86/elision-trylock.c b/nptl/sysdeps/unix/sysv/linux/x86/elision-trylock.c index 689a6fbe2a..f6c47ef42e 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/elision-trylock.c +++ b/nptl/sysdeps/unix/sysv/linux/x86/elision-trylock.c @@ -14,7 +14,7 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ #include <pthread.h> #include <pthreadP.h> @@ -24,14 +24,14 @@ #define aconf __elision_aconf -/* Try to elide a futex trylock. FUTEX is the futex variable. ADAPT_COUNT is the - adaptation counter in the mutex. */ +/* Try to elide a futex trylock. FUTEX is the futex variable. ADAPT_COUNT is + the adaptation counter in the mutex. */ int __lll_trylock_elision (int *futex, short *adapt_count) { /* 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 return an error. */ _xabort (_ABORT_NESTED_TRYLOCK); @@ -46,7 +46,7 @@ __lll_trylock_elision (int *futex, short *adapt_count) if (*futex == 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 is more visible in the profiler. */ _xabort (_ABORT_LOCK_BUSY); @@ -54,12 +54,12 @@ __lll_trylock_elision (int *futex, short *adapt_count) 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. */ if (*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 { diff --git a/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h b/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h index 703e930be1..9789905608 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h +++ b/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h @@ -14,7 +14,7 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ /* Check for elision on this lock without upgrading. */ #define DO_ELISION(m) \ diff --git a/nptl/sysdeps/unix/sysv/linux/x86/hle.h b/nptl/sysdeps/unix/sysv/linux/x86/hle.h index a08f0fa711..4a7b9e3bf7 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/hle.h +++ b/nptl/sysdeps/unix/sysv/linux/x86/hle.h @@ -1,5 +1,5 @@ -/* Shared RTM header. Emulate TSX intrinsics for compilers and assemblers - that do not support the intrinsics and instructions yet. */ +/* Shared RTM header. Emulate TSX intrinsics for compilers and assemblers + that do not support the intrinsics and instructions yet. */ #ifndef _HLE_H #define _HLE_H 1 @@ -28,7 +28,7 @@ /* Official RTM intrinsics interface matching gcc/icc, but works on older gcc compatible compilers and binutils. 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 _XABORT_EXPLICIT (1 << 0) diff --git a/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_cond_lock.c b/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_cond_lock.c index 962f101073..fe64e022d9 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_cond_lock.c +++ b/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_cond_lock.c @@ -13,9 +13,10 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ /* The cond lock is not actually elided yet, but we still need to handle already elided locks. */ #include <elision-conf.h> + #include "sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c" diff --git a/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_lock.c b/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_lock.c index e639460530..37b122f47e 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_lock.c +++ b/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_lock.c @@ -14,7 +14,8 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ + #include <elision-conf.h> #include "force-elision.h" diff --git a/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_timedlock.c b/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_timedlock.c index 5115d0304a..ddc6d929b3 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_timedlock.c +++ b/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_timedlock.c @@ -14,7 +14,9 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ + #include <elision-conf.h> #include "force-elision.h" + #include "nptl/pthread_mutex_timedlock.c" diff --git a/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_trylock.c b/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_trylock.c index 9bb4a659d4..0148acaea5 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_trylock.c +++ b/nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_trylock.c @@ -14,7 +14,8 @@ 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/>. */ + <http://www.gnu.org/licenses/>. */ + #include <elision-conf.h> #include "force-elision.h" |