Patrick Williams | b9af875 | 2023-01-30 13:28:01 -0600 | [diff] [blame^] | 1 | From 4cbb225811205b51b65371d0d8abc2d2af8233b6 Mon Sep 17 00:00:00 2001 |
| 2 | From: Khem Raj <raj.khem@gmail.com> |
| 3 | Date: Thu, 26 Jan 2023 14:56:36 -0800 |
| 4 | Subject: [PATCH] Use std::atomic<int> instead of std::atomic<bool> |
| 5 | |
| 6 | GCC on RISCV does not yet support inline subword atomics [1] |
| 7 | Therefore avoid them until fixed |
| 8 | |
| 9 | Upstream-Status: Pending |
| 10 | |
| 11 | [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104338 |
| 12 | |
| 13 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| 14 | --- |
| 15 | Foundation/include/Poco/AsyncChannel.h | 2 +- |
| 16 | Foundation/src/AsyncChannel.cpp | 5 ++--- |
| 17 | 2 files changed, 3 insertions(+), 4 deletions(-) |
| 18 | |
| 19 | diff --git a/Foundation/include/Poco/AsyncChannel.h b/Foundation/include/Poco/AsyncChannel.h |
| 20 | index 190bae7dd..d73ea6c72 100644 |
| 21 | --- a/Foundation/include/Poco/AsyncChannel.h |
| 22 | +++ b/Foundation/include/Poco/AsyncChannel.h |
| 23 | @@ -111,7 +111,7 @@ private: |
| 24 | NotificationQueue _queue; |
| 25 | std::size_t _queueSize = 0; |
| 26 | std::size_t _dropCount = 0; |
| 27 | - std::atomic<bool> _closed; |
| 28 | + std::atomic<int> _closed; |
| 29 | }; |
| 30 | |
| 31 | |
| 32 | diff --git a/Foundation/src/AsyncChannel.cpp b/Foundation/src/AsyncChannel.cpp |
| 33 | index 37cdec477..e829b180c 100644 |
| 34 | --- a/Foundation/src/AsyncChannel.cpp |
| 35 | +++ b/Foundation/src/AsyncChannel.cpp |
| 36 | @@ -48,11 +48,10 @@ private: |
| 37 | Message _msg; |
| 38 | }; |
| 39 | |
| 40 | - |
| 41 | AsyncChannel::AsyncChannel(Channel::Ptr pChannel, Thread::Priority prio): |
| 42 | _pChannel(pChannel), |
| 43 | _thread("AsyncChannel"), |
| 44 | - _closed(false) |
| 45 | + _closed(0) |
| 46 | { |
| 47 | _thread.setPriority(prio); |
| 48 | } |
| 49 | @@ -95,7 +94,7 @@ void AsyncChannel::open() |
| 50 | |
| 51 | void AsyncChannel::close() |
| 52 | { |
| 53 | - if (!_closed.exchange(true)) |
| 54 | + if (!_closed.exchange(1)) |
| 55 | { |
| 56 | if (_thread.isRunning()) |
| 57 | { |
| 58 | -- |
| 59 | 2.39.1 |
| 60 | |