aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include/uhdlib/rfnoc/graph.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/include/uhdlib/rfnoc/graph.hpp')
-rw-r--r--host/lib/include/uhdlib/rfnoc/graph.hpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/host/lib/include/uhdlib/rfnoc/graph.hpp b/host/lib/include/uhdlib/rfnoc/graph.hpp
index 286f2303f..c7b06d636 100644
--- a/host/lib/include/uhdlib/rfnoc/graph.hpp
+++ b/host/lib/include/uhdlib/rfnoc/graph.hpp
@@ -63,6 +63,15 @@ public:
*/
void release();
+ /*! Shutdown graph: Permenanently release
+ *
+ * This will release the graph permanently and safely. All ongoing property
+ * and action handling is completed and then disabled (this means that
+ * calling shutdown while blocks are still working will cause actions to not
+ * get delivered).
+ */
+ void shutdown();
+
/*! Return a list of all edges
*/
std::vector<graph_edge_t> enumerate_edges();
@@ -271,16 +280,15 @@ private:
//! Flag to ensure serialized handling of actions
std::atomic_flag _action_handling_ongoing;
- //! Mutex for to avoid the user from sending one message before another
- // message is sent
- std::recursive_mutex _action_mutex;
-
//! Changes to the release/commit state of the graph are locked with this mutex
std::recursive_mutex _release_mutex;
//! This counter gets decremented everytime commit() is called. When zero,
// the graph is committed.
size_t _release_count{1};
+
+ //! A flag if the graph has shut down. Is protected by _release_mutex
+ bool _shutdown{false};
};