aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include/uhdlib
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2019-06-01 23:41:47 -0700
committerMartin Braun <martin.braun@ettus.com>2019-11-26 11:49:23 -0800
commit0f8718176993b3460b12720e639b030be9b86943 (patch)
tree81820aad39192e63837c41e557bb6c559136415b /host/lib/include/uhdlib
parentdc9ca94afaa0a1c049eac934ad1c278deedc6766 (diff)
downloaduhd-0f8718176993b3460b12720e639b030be9b86943.tar.gz
uhd-0f8718176993b3460b12720e639b030be9b86943.tar.bz2
uhd-0f8718176993b3460b12720e639b030be9b86943.zip
rfnoc: graph: Add commit/release API
Diffstat (limited to 'host/lib/include/uhdlib')
-rw-r--r--host/lib/include/uhdlib/rfnoc/graph.hpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/host/lib/include/uhdlib/rfnoc/graph.hpp b/host/lib/include/uhdlib/rfnoc/graph.hpp
index fdb4525d1..49dc62551 100644
--- a/host/lib/include/uhdlib/rfnoc/graph.hpp
+++ b/host/lib/include/uhdlib/rfnoc/graph.hpp
@@ -14,6 +14,7 @@
#include <tuple>
#include <memory>
#include <deque>
+#include <atomic>
namespace uhd { namespace rfnoc { namespace detail {
@@ -44,7 +45,7 @@ public:
//const size_t dst_port);
//
- /*! Run initial checks for graph
+ /*! Commit graph and run initial checks
*
* This method can be called anytime, but it's intended to be called when
* the graph has been committed. It will run checks on the graph and run a
@@ -52,8 +53,14 @@ public:
*
* \throws uhd::resolve_error if the properties fail to resolve.
*/
- void initialize();
+ void commit();
+ /*! Opposite of commit()
+ *
+ * Calling this will disable property propagation until commit() has been
+ * called an equal number of times.
+ */
+ void release();
private:
friend class graph_accessor_t;
@@ -254,6 +261,10 @@ private:
//! Mutex for to avoid the user from sending one message before another
// message is sent
std::recursive_mutex _action_mutex;
+
+ //! This counter gets decremented everytime commit() is called. When zero,
+ // the graph is committed.
+ std::atomic<size_t> _release_count{1};
};