diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2015-07-24 17:30:04 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2015-07-24 17:30:04 +0100 |
commit | fa0ed2b062dce79cc38550c85bdab9686fccdc40 (patch) | |
tree | 002313a81654c7ab29bda8a735c514d492b88ac5 | |
parent | 776280c4a8d22fa244624aaef3fda65957f8d968 (diff) | |
download | gcc-fa0ed2b062dce79cc38550c85bdab9686fccdc40.zip gcc-fa0ed2b062dce79cc38550c85bdab9686fccdc40.tar.gz gcc-fa0ed2b062dce79cc38550c85bdab9686fccdc40.tar.bz2 |
* include/bits/atomic_futex.h [_GLIBCXX_HAVE_LINUX_FUTEX]
(_M_load_and_test_until): Whitespace.
(_M_load_and_test): Value-initialize the unused durations.
(_M_load_when_equal): Add missing return value.
From-SVN: r226174
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/atomic_futex.h | 15 |
2 files changed, 15 insertions, 7 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0d3eb25..d7dbedd 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2015-07-24 Jonathan Wakely <jwakely@redhat.com> + + * include/bits/atomic_futex.h [_GLIBCXX_HAVE_LINUX_FUTEX] + (_M_load_and_test_until): Whitespace. + (_M_load_and_test): Value-initialize the unused durations. + (_M_load_when_equal): Add missing return value. + 2015-07-24 Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com> * fragment.am (AM_CPPFLAGS): Add CPPFLAGS. diff --git a/libstdc++-v3/include/bits/atomic_futex.h b/libstdc++-v3/include/bits/atomic_futex.h index ca3260d..90317f2 100644 --- a/libstdc++-v3/include/bits/atomic_futex.h +++ b/libstdc++-v3/include/bits/atomic_futex.h @@ -93,15 +93,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { for (;;) { - // Don't bother checking the value again because we expect the caller to - // have done it recently. + // Don't bother checking the value again because we expect the caller + // to have done it recently. // memory_order_relaxed is sufficient because we can rely on just the // modification order (store_notify uses an atomic RMW operation too), // and the futex syscalls synchronize between themselves. _M_data.fetch_or(_Waiter_bit, memory_order_relaxed); - bool __ret; - __ret = _M_futex_wait_until((unsigned*)(void*)&_M_data, - __assumed | _Waiter_bit, __has_timeout, __s, __ns); + bool __ret = _M_futex_wait_until((unsigned*)(void*)&_M_data, + __assumed | _Waiter_bit, + __has_timeout, __s, __ns); // Fetch the current value after waiting (clears _Waiter_bit). __assumed = _M_load(__mo); if (!__ret || ((__operand == __assumed) == __equal)) @@ -119,7 +119,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool __equal, memory_order __mo) { return _M_load_and_test_until(__assumed, __operand, __equal, __mo, - false, chrono::seconds(0), chrono::nanoseconds(0)); + false, {}, {}); } // If a timeout occurs, returns a current value after the timeout; @@ -146,7 +146,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_load_when_not_equal(unsigned __val, memory_order __mo) { unsigned __i = _M_load(__mo); - if ((__i & ~_Waiter_bit) != __val) return; + if ((__i & ~_Waiter_bit) != __val) + return (__i & ~_Waiter_bit); // TODO Spin-wait first. return _M_load_and_test(__i, __val, false, __mo); } |