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
..
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2016-01-04 16:05:18 +00:00
2014-12-16 18:18:49 +00:00
2016-09-23 08:43:56 -04:00
2016-01-04 16:05:18 +00:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2012-02-25 23:18:39 -05:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2014-11-24 15:03:45 +05:30
2016-12-05 16:19:43 +01:00
2016-01-04 16:05:18 +00:00
2013-09-04 20:47:21 +00:00
2014-12-11 21:41:30 +00:00
2016-10-28 22:40:16 -04:00
2015-09-03 20:33:46 +00:00
2015-10-15 14:15:41 -07:00
2015-10-15 14:13:50 -07:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2014-11-24 15:03:45 +05:30
2016-09-23 08:43:56 -04:00
2016-03-20 19:51:42 +01:00
2016-08-03 22:21:37 +00:00
2015-09-15 20:36:50 +00:00
2014-12-11 21:41:30 +00:00
2012-02-25 23:18:39 -05:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2012-02-25 23:18:39 -05:00
2016-01-04 16:05:18 +00:00
2016-04-29 22:18:21 -04:00
2012-02-25 23:18:39 -05:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2016-01-04 16:05:18 +00:00
2016-01-04 16:05:18 +00:00
2012-02-26 21:32:56 -05:00
2016-10-29 23:50:56 -04:00
2016-10-07 10:12:42 +02:00
2016-09-23 08:43:56 -04:00
2015-09-04 16:21:14 +00:00
2016-10-04 16:17:59 +00:00
2016-09-23 08:43:56 -04:00
2016-01-04 16:05:18 +00:00
2012-02-25 23:18:39 -05:00
2016-09-23 08:43:56 -04:00
2015-11-20 22:49:59 +00:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2012-02-26 21:32:56 -05:00
2015-06-17 20:19:04 +00:00
2015-06-12 10:10:18 +00:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2015-06-17 20:16:56 +00:00
2016-09-23 08:43:56 -04:00
2015-10-02 11:34:13 +02:00
2012-02-25 23:18:39 -05:00
2016-09-23 08:43:56 -04:00
2016-01-04 16:05:18 +00:00
2016-03-07 11:53:47 +07:00
2016-01-04 16:05:18 +00:00
2015-06-17 20:11:58 +00:00
2016-01-04 16:05:18 +00:00
2015-10-15 14:22:25 -07:00
2016-09-23 08:43:56 -04:00
2016-08-02 17:18:08 +02:00
2015-10-15 14:23:31 -07:00
2016-01-04 16:05:18 +00:00
2016-01-04 16:05:18 +00:00
2016-06-20 11:11:29 +02:00
2016-09-23 08:43:56 -04:00
2016-11-16 22:46:48 +00:00
2015-11-24 22:24:52 +00:00
2016-02-18 14:55:29 -02:00
2012-02-25 23:18:39 -05:00
2012-02-25 23:18:39 -05:00
2016-09-23 08:43:56 -04:00
2016-09-23 08:43:56 -04:00
2012-02-25 23:18:39 -05:00
2012-02-25 23:18:39 -05:00
2016-11-18 16:49:08 -02:00
2012-02-25 23:18:39 -05:00
2016-09-23 08:43:56 -04:00
2016-01-04 16:05:18 +00:00
2016-06-04 09:19:09 +02:00
2015-06-05 20:04:47 +00:00
2012-02-25 23:18:39 -05:00