aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCiro Nishiguchi <ciro.nishiguchi@ni.com>2019-09-11 15:05:53 -0500
committerMartin Braun <martin.braun@ettus.com>2019-11-26 11:49:43 -0800
commitb59b9ed3a7f62d2a6d7933a18b11b0b29c33c689 (patch)
tree6b88b27324618e861d6b1678bf073e6ac5d9eae8
parent0e2464ad888230054b04a4f3fb192ea8dc5721b0 (diff)
downloaduhd-b59b9ed3a7f62d2a6d7933a18b11b0b29c33c689.tar.gz
uhd-b59b9ed3a7f62d2a6d7933a18b11b0b29c33c689.tar.bz2
uhd-b59b9ed3a7f62d2a6d7933a18b11b0b29c33c689.zip
rfnoc: Hold reference to streamers in rfnoc_graph
Add a shared pointer to the streamers to the rfnoc_graph, so that the streamers are not deallocated before the graph. Nodes in the graph, including the streamers, must remain in memory until the graph is no longer needed.
-rw-r--r--host/lib/rfnoc/rfnoc_graph.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/host/lib/rfnoc/rfnoc_graph.cpp b/host/lib/rfnoc/rfnoc_graph.cpp
index 85e403cbe..60afbdad5 100644
--- a/host/lib/rfnoc/rfnoc_graph.cpp
+++ b/host/lib/rfnoc/rfnoc_graph.cpp
@@ -23,6 +23,7 @@
#include <boost/shared_ptr.hpp> // FIXME remove when rfnoc_device is ready
#include <memory>
+using namespace uhd;
using namespace uhd::rfnoc;
namespace {
@@ -322,13 +323,15 @@ public:
uhd::rx_streamer::sptr create_rx_streamer(
const size_t num_chans, const uhd::stream_args_t& args)
{
- return boost::make_shared<rfnoc_rx_streamer>(num_chans, args);
+ _rx_streamers.push_back(boost::make_shared<rfnoc_rx_streamer>(num_chans, args));
+ return _rx_streamers.back();
}
uhd::tx_streamer::sptr create_tx_streamer(
const size_t num_chans, const uhd::stream_args_t& args)
{
- return boost::make_shared<rfnoc_tx_streamer>(num_chans, args);
+ _tx_streamers.push_back(boost::make_shared<rfnoc_tx_streamer>(num_chans, args));
+ return _tx_streamers.back();
}
size_t get_num_mboards() const
@@ -874,6 +877,12 @@ private:
//! Reference to a packet factory object. Gets initialized just before the GSM
std::unique_ptr<chdr::chdr_packet_factory> _pkt_factory;
+
+ //! Reference to RX streamers
+ std::vector<rx_streamer::sptr> _rx_streamers;
+
+ //! Reference to TX streamers
+ std::vector<tx_streamer::sptr> _tx_streamers;
}; /* class rfnoc_graph_impl */