glibc/sysdeps
Torvald Riegel ca6e601a9d Use C11-like atomics instead of plain memory accesses in x86 lock elision.
This uses atomic operations to access lock elision metadata that is accessed
concurrently (ie, adapt_count fields).  The size of the data is less than a
word but accessed only with atomic loads and stores; therefore, we add
support for shorter-size atomic load and stores too.

	* include/atomic.h (__atomic_check_size_ls): New.
	(atomic_load_relaxed, atomic_load_acquire, atomic_store_relaxed,
	atomic_store_release): Use it.
	* sysdeps/x86/elide.h (ACCESS_ONCE): Remove.
	(elision_adapt, ELIDE_LOCK): Use atomics.
	* sysdeps/unix/sysv/linux/x86/elision-lock.c (__lll_lock_elision): Use
	atomics and improve code comments.
	* sysdeps/unix/sysv/linux/x86/elision-trylock.c
	(__lll_trylock_elision): Likewise.
2016-12-05 16:19:43 +01:00
..
aarch64 aarch64: Use explicit offsets in _dl_tlsdesc_dynamic 2016-12-02 16:52:57 +01:00
alpha Add missing hidden_def (__sigsetjmp). 2016-12-01 20:49:25 +00:00
arm Refactor FP_FAST_* into bits/fp-fast.h. 2016-11-29 01:45:00 +00:00
generic ld.so: Remove __libc_memalign 2016-11-30 16:23:58 +01:00
gnu Define wordsize.h macros everywhere 2016-11-04 09:37:44 -07:00
hppa Add missing hidden_def (__sigsetjmp). 2016-12-01 20:49:25 +00:00
i386 Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
ia64 Refactor FP_ILOGB* out of bits/mathdef.h. 2016-12-01 02:56:55 +00:00
ieee754 Fix sysdeps/ieee754 pow handling of sNaN arguments (bug 20916). 2016-12-02 23:21:15 +00:00
init_array Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
m68k Refactor FP_ILOGB* out of bits/mathdef.h. 2016-12-01 02:56:55 +00:00
mach Fix hurd __access_noerrno implementation. 2016-11-18 16:49:08 -02:00
microblaze Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
mips Add missing hidden_def (__sigsetjmp). 2016-12-01 20:49:25 +00:00
nacl Add llogb, llogbf, llogbl. 2016-12-02 01:42:49 +00:00
nios2 Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
nptl Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
posix hurd: fix fcntl visibility 2016-09-18 23:48:55 +02:00
powerpc powerpc: Remove stpcpy internal clash with IFUNC 2016-12-01 15:53:16 -02:00
pthread Installed-header hygiene (BZ#20366): time.h types. 2016-09-23 08:43:56 -04:00
s390 S390: Regenerate ULPs. 2016-12-02 12:52:36 +01:00
sh Add missing hidden_def (__sigsetjmp). 2016-12-01 20:49:25 +00:00
sparc Add missing hidden_def (__sigsetjmp). 2016-12-01 20:49:25 +00:00
tile Add missing hidden_def (__sigsetjmp). 2016-12-01 20:49:25 +00:00
unix Use C11-like atomics instead of plain memory accesses in x86 lock elision. 2016-12-05 16:19:43 +01:00
wordsize-32 Define wordsize.h macros everywhere 2016-11-04 09:37:44 -07:00
wordsize-64 Define wordsize.h macros everywhere 2016-11-04 09:37:44 -07:00
x86 Use C11-like atomics instead of plain memory accesses in x86 lock elision. 2016-12-05 16:19:43 +01:00
x86_64 ld.so: Remove __libc_memalign 2016-11-30 16:23:58 +01:00