[PATCHv2 2/2] powerpc: Optimize lock elision for pthread_mutex_t
Andreas Schwab
schwab@linux-m68k.org
Thu Sep 3 16:48:00 GMT 2015
"Paul E. Murphy" <murphyp@linux.vnet.ibm.com> writes:
> diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
> index f04c339..4307d44 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
> +++ b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
> @@ -21,12 +21,20 @@
> #include "htm.h"
>
> int
> -__lll_unlock_elision(int *lock, int pshared)
> +__lll_unlock_elision(int *lock, short *adapt_count, int pshared)
> {
> /* When the lock was free we're in a transaction. */
> if (*lock == 0)
> __builtin_tend (0);
> else
> + {
> lll_unlock ((*lock), pshared);
> +
> + /* Update the adapt count AFTER completing the critical section.
> + Doing this here prevents unneeded stalling when entering
> + a critical section. Saving about 8% runtime on P8. */
> + if (*adapt_count > 0)
> + (*adapt_count)--;
> + }
Wrong indentation.
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
More information about the Libc-alpha
mailing list