diff options
author | Josh Blum <josh@joshknows.com> | 2011-04-01 10:40:21 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-04-01 10:40:21 -0700 |
commit | baaa2c55e73f7476ffcd47a2c3ced5edbfeb6f84 (patch) | |
tree | b53a6f43d04d155a5593b3dcdc65ed73f6d125f5 /host/lib/usrp/usrp_e100/io_impl.cpp | |
parent | daf91c0a8877909a7100c2ed0274ef3002de0725 (diff) | |
parent | 1c5076ea68345e74de35cad43e4a4b4adf68fa15 (diff) | |
download | uhd-baaa2c55e73f7476ffcd47a2c3ced5edbfeb6f84.tar.gz uhd-baaa2c55e73f7476ffcd47a2c3ced5edbfeb6f84.tar.bz2 uhd-baaa2c55e73f7476ffcd47a2c3ced5edbfeb6f84.zip |
Merge branch 'use_boost_barrier'
Diffstat (limited to 'host/lib/usrp/usrp_e100/io_impl.cpp')
-rw-r--r-- | host/lib/usrp/usrp_e100/io_impl.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/host/lib/usrp/usrp_e100/io_impl.cpp b/host/lib/usrp/usrp_e100/io_impl.cpp index fc6aaeaee..cbab5a761 100644 --- a/host/lib/usrp/usrp_e100/io_impl.cpp +++ b/host/lib/usrp/usrp_e100/io_impl.cpp @@ -23,7 +23,8 @@ #include "../../transport/vrt_packet_handler.hpp" #include <boost/bind.hpp> #include <boost/format.hpp> -#include <boost/thread.hpp> +#include <boost/thread/thread.hpp> +#include <boost/thread/barrier.hpp> #include <iostream> using namespace uhd; @@ -93,7 +94,7 @@ struct usrp_e100_impl::io_impl{ bool continuous_streaming; //a pirate's life is the life for me! - void recv_pirate_loop(usrp_e100_clock_ctrl::sptr); + void recv_pirate_loop(boost::barrier &, usrp_e100_clock_ctrl::sptr); bounded_buffer<managed_recv_buffer::sptr> recv_pirate_booty; bounded_buffer<async_metadata_t> async_msg_fifo; boost::thread_group recv_pirate_crew; @@ -105,8 +106,10 @@ struct usrp_e100_impl::io_impl{ * - while raiding, loot for recv buffers * - put booty into the alignment buffer **********************************************************************/ -void usrp_e100_impl::io_impl::recv_pirate_loop(usrp_e100_clock_ctrl::sptr clock_ctrl) -{ +void usrp_e100_impl::io_impl::recv_pirate_loop( + boost::barrier &spawn_barrier, usrp_e100_clock_ctrl::sptr clock_ctrl +){ + spawn_barrier.wait(); set_thread_priority_safe(); recv_pirate_crew_raiding = true; @@ -201,9 +204,12 @@ void usrp_e100_impl::io_init(void){ _iface->poke32(UE_REG_CTRL_TX_POLICY, UE_FLAG_CTRL_TX_POLICY_NEXT_PACKET); //spawn a pirate, yarrr! + boost::barrier spawn_barrier(2); _io_impl->recv_pirate_crew.create_thread(boost::bind( - &usrp_e100_impl::io_impl::recv_pirate_loop, _io_impl.get(), _clock_ctrl + &usrp_e100_impl::io_impl::recv_pirate_loop, _io_impl.get(), + boost::ref(spawn_barrier), _clock_ctrl )); + spawn_barrier.wait(); } void usrp_e100_impl::issue_stream_cmd(const stream_cmd_t &stream_cmd){ |