diff options
author | Martin Braun <martin.braun@ettus.com> | 2017-03-22 23:02:00 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-04-12 12:20:43 -0700 |
commit | ba04a5f652e6eec19865a67f163a5dc1f7294e45 (patch) | |
tree | a310fbbc09fd2066f71a329c8edf6bff2c273816 /host/lib/usrp/e300/e300_fifo_config.cpp | |
parent | 2ae347f12ed1ba42f65a800b6ebf3779ee3195c2 (diff) | |
download | uhd-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.cpp | 15 |
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; |