From 0e70982b4da62e18d961a85c10d93e8ecf06a0d6 Mon Sep 17 00:00:00 2001 From: Avi Kivity <avi@cloudius-systems.com> Date: Wed, 22 May 2013 19:31:27 +0300 Subject: [PATCH] sched: tighten up cpu_set memory barriers --- include/sched.hh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/sched.hh b/include/sched.hh index 041116717..cd5e99588 100644 --- a/include/sched.hh +++ b/include/sched.hh @@ -40,12 +40,12 @@ const unsigned max_cpus = sizeof(unsigned long) * 8; class cpu_set { public: explicit cpu_set() : _mask() {} - cpu_set(const cpu_set& other) : _mask(other._mask.load()) {} + cpu_set(const cpu_set& other) : _mask(other._mask.load(std::memory_order_relaxed)) {} void set(unsigned c) { - _mask.fetch_or(1UL << c); + _mask.fetch_or(1UL << c, std::memory_order_release); } void clear(unsigned c) { - _mask.fetch_and(~(1UL << c)); + _mask.fetch_and(~(1UL << c), std::memory_order_release); } class iterator; iterator begin() { @@ -57,7 +57,7 @@ public: cpu_set fetch_clear() { cpu_set ret; if (_mask.load(std::memory_order_relaxed)) { - ret._mask = _mask.exchange(0); + ret._mask = _mask.exchange(0, std::memory_order_acquire); } return ret; } -- GitLab