aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/e300/e300_fifo_config.cpp
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2017-03-22 23:02:00 -0700
committerMartin Braun <martin.braun@ettus.com>2017-04-12 12:20:43 -0700
commitba04a5f652e6eec19865a67f163a5dc1f7294e45 (patch)
treea310fbbc09fd2066f71a329c8edf6bff2c273816 /host/lib/usrp/e300/e300_fifo_config.cpp
parent2ae347f12ed1ba42f65a800b6ebf3779ee3195c2 (diff)
downloaduhd-ba04a5f652e6eec19865a67f163a5dc1f7294e45.tar.gz
uhd-ba04a5f652e6eec19865a67f163a5dc1f7294e45.tar.bz2
uhd-ba04a5f652e6eec19865a67f163a5dc1f7294e45.zip
utils: Replaced uhd::atomic_uint32_t with std::atomic
Diffstat (limited to 'host/lib/usrp/e300/e300_fifo_config.cpp')
-rw-r--r--host/lib/usrp/e300/e300_fifo_config.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/host/lib/usrp/e300/e300_fifo_config.cpp b/host/lib/usrp/e300/e300_fifo_config.cpp
index 3d0f0d497..556e19120 100644
--- a/host/lib/usrp/e300/e300_fifo_config.cpp
+++ b/host/lib/usrp/e300/e300_fifo_config.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2013-2014 Ettus Research LLC
+// Copyright 2013-2017 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -17,8 +17,9 @@
#ifdef E300_NATIVE
-#include <stdint.h>
#include <uhd/config.hpp>
+#include <stdint.h>
+#include <atomic>
// constants coded into the fpga parameters
static const size_t ZF_CONFIG_BASE = 0x40000000;
@@ -100,9 +101,13 @@ struct e300_fifo_poll_waiter
//NOP
}
+ /*!
+ * Waits until the file descriptor fd has data to read.
+ * Access to the file descriptor is thread safe.
+ */
void wait(const double timeout)
{
- if (_poll_claimed.cas(1, 0))
+ if (_poll_claimed.exchange(true))
{
boost::mutex::scoped_lock l(mutex);
cond.wait(l);
@@ -116,12 +121,12 @@ struct e300_fifo_poll_waiter
if (fds[0].revents & POLLIN)
::read(fd, NULL, 0);
- _poll_claimed.write(0);
+ _poll_claimed = false;
cond.notify_all();
}
}
- uhd::atomic_uint32_t _poll_claimed;
+ std::atomic_bool _poll_claimed;
boost::condition_variable cond;
boost::mutex mutex;
int fd;