summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorTorvald Riegel <triegel@redhat.com>2016-11-30 17:53:11 +0100
committerTorvald Riegel <triegel@redhat.com>2016-12-05 16:19:43 +0100
commitca6e601a9d4a72b3699cca15bad12ac1716bf49a (patch)
treefd761ea31c43377d02f2a097f8030411163d6905 /ChangeLog
parent71be79a25f1d9efeafa5c634c4499281e8c313f2 (diff)
downloadglibc-ca6e601a9d4a72b3699cca15bad12ac1716bf49a.tar.gz
glibc-ca6e601a9d4a72b3699cca15bad12ac1716bf49a.tar.xz
glibc-ca6e601a9d4a72b3699cca15bad12ac1716bf49a.zip
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.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog12
1 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6cbb0a8b98..9c0aaa6e43 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2016-12-05  Torvald Riegel  <triegel@redhat.com>
+
+	* 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-04  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
 	* hurd/hurd.h: Cast errno constants to error_t to fix usage in C++