aboutsummaryrefslogtreecommitdiffstats
path: root/host
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 /host
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.
Diffstat (limited to 'host')
-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 */