glibc/nptl/sysdeps/unix/sysv/linux
Andi Kleen e8c659d74e Add elision to pthread_mutex_{try,timed,un}lock
Add elision paths to the basic mutex locks.

The normal path has a check for RTM and upgrades the lock
to RTM when available. Trylocks cannot automatically upgrade,
so they check for elision every time.

We use a 4 byte value in the mutex to store the lock
elision adaptation state. This is separate from the adaptive
spin state and uses a separate field.

Condition variables currently do not support elision.

Recursive mutexes and condition variables may be supported at some point,
but are not in the current implementation. Also "trylock" will
not automatically enable elision unless some other lock call
has been already called on the lock.

This version does not use IFUNC, so it means every lock has one
additional check for elision. Benchmarking showed the overhead
to be negligible.
2013-07-02 08:46:55 -07:00
..
bits Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
i386 Add the low level infrastructure for pthreads lock elision with TSX 2013-07-02 08:46:54 -07:00
powerpc Remove trailing whitespace in nptl. 2013-06-06 12:06:15 +00:00
s390 FUTEX_*_REQUEUE_PI support for non-x86 code 2013-02-18 16:07:10 +05:30
sh Remove trailing whitespace in nptl. 2013-06-06 12:06:15 +00:00
sparc Remove trailing whitespace in nptl. 2013-06-06 12:06:15 +00:00
x86 Add elision to pthread_mutex_{try,timed,un}lock 2013-07-02 08:46:55 -07:00
x86_64 Add the low level infrastructure for pthreads lock elision with TSX 2013-07-02 08:46:54 -07:00
aio_misc.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
allocrtsig.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
createthread.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
fork.c nptl: Fix comment typo in fork.c. 2013-02-21 09:36:43 -05:00
fork.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
getpid.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Implies Initial revision 2002-11-26 22:50:54 +00:00
internaltypes.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
jmp-unwind.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
kernel-posix-timers.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
libc_multiple_threads.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
libc_pthread_init.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
libc-lowlevellock.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
lowlevelbarrier.sym * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_barrier): 2007-05-26 16:19:15 +00:00
lowlevelcond.sym * sysdeps/unix/sysv/linux/internaltypes.h: Introduce 2007-05-29 16:15:48 +00:00
lowlevellock.c Include atomic.h in generic lowlevellock.c. 2013-03-12 23:27:24 -04:00
lowlevelrobustlock.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
lowlevelrobustlock.sym * sysdeps/unix/sysv/linux/not-cancel.h (__openat_not_cancel, 2006-02-15 17:20:33 +00:00
lowlevelrwlock.sym * init.c: Make it compile with older kernel headers. 2007-05-27 18:06:18 +00:00
Makefile Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
mq_notify.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pt-fork.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pt-raise.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pthread_attr_getaffinity.c Avoid access beyond memory bounds in pthread_attr_getaffinity_np 2013-06-14 01:20:06 +05:30
pthread_attr_setaffinity.c Consolidate pthread_attr value validation 2013-04-22 10:28:31 +05:30
pthread_getaffinity.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pthread_getcpuclockid.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pthread_getname.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pthread_kill.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pthread_mutex_cond_lock.c Add elision to pthread_mutex_{try,timed,un}lock 2013-07-02 08:46:55 -07:00
pthread_setaffinity.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pthread_setname.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pthread_sigqueue.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pthread_yield.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
pthread-pi-defines.sym Take lock in pthread_cond_wait cleanup handler only when needed 2012-10-10 12:52:56 +05:30
raise.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
register-atfork.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
rtld-lowlevel.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
sem_post.c sem_post.c: Include atomic.h. 2013-04-07 16:13:02 -04:00
sem_timedwait.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
sem_trywait.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
sem_wait.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
sigtimedwait.c Update. 2003-06-17 22:11:22 +00:00
sigwait.c Update. 2003-06-17 22:11:22 +00:00
sigwaitinfo.c Update. 2003-06-17 22:11:22 +00:00
sleep.c * Makefile (subdir-target-args): New variable. 2006-02-28 07:11:04 +00:00
smp.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
structsem.sym * pthread-errnos.sym: Add EOVERFLOW. 2008-01-10 18:34:43 +00:00
timer_create.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
timer_delete.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
timer_getoverr.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
timer_gettime.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
timer_routines.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
timer_settime.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
unregister-atfork.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
unwindbuf.sym Update. 2003-07-01 03:33:06 +00:00
Versions Update. 2002-12-28 22:19:04 +00:00