aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2017-12-07 13:52:11 -0800
committerMartin Braun <martin.braun@ettus.com>2017-12-22 15:05:57 -0800
commitb4d8ef709c6c44b04a15bb88bd8caeb0ddf06736 (patch)
tree3ae3e74d4dc1fd73e544c3cadc6f08b616eaa7f8 /host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp
parent06f6156f85cb11ff40e3abc0fa77eba388789a37 (diff)
downloaduhd-b4d8ef709c6c44b04a15bb88bd8caeb0ddf06736.tar.gz
uhd-b4d8ef709c6c44b04a15bb88bd8caeb0ddf06736.tar.bz2
uhd-b4d8ef709c6c44b04a15bb88bd8caeb0ddf06736.zip
mg: Lock access to setters
Magnesium APIs are not thread-safe and can take a while to execute in some cases. Adding a mutex to setters avoids invalid states of the hardware from API calls. Note that the lock applies to one block at a time. With the two-radios-per-dboard approach, two locks need to be applied and race conditions are still possible. Reviewed-By: Trung Tran <trung.tran@ettus.com>
Diffstat (limited to 'host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp')
-rw-r--r--host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp
index aa70fa7ad..ce96eb200 100644
--- a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp
+++ b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp
@@ -28,6 +28,7 @@
#include <uhd/types/serial.hpp>
#include <uhd/usrp/dboard_manager.hpp>
#include <uhd/usrp/gpio_defs.hpp>
+#include <mutex>
namespace uhd {
namespace rfnoc {
@@ -192,6 +193,9 @@ private:
/**************************************************************************
* Private attributes
*************************************************************************/
+ //! Locks access to setter APIs
+ std::mutex _set_lock;
+
//! Letter representation of the radio we're currently running
std::string _radio_slot;