diff options
author | Ciro Nishiguchi <ciro.nishiguchi@ni.com> | 2019-09-11 15:05:53 -0500 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2019-11-26 11:49:43 -0800 |
commit | b59b9ed3a7f62d2a6d7933a18b11b0b29c33c689 (patch) | |
tree | 6b88b27324618e861d6b1678bf073e6ac5d9eae8 /host | |
parent | 0e2464ad888230054b04a4f3fb192ea8dc5721b0 (diff) | |
download | uhd-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.cpp | 13 |
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 */ |