diff options
| author | Josh Blum <josh@joshknows.com> | 2011-04-22 17:02:07 -0700 | 
|---|---|---|
| committer | Josh Blum <josh@joshknows.com> | 2011-04-22 17:02:07 -0700 | 
| commit | 627075e60e0b893a412e849301ccef5bb2e8a68a (patch) | |
| tree | ef35c3da25ff76dc2feb28677d0e33f54f724cf3 | |
| parent | ef9ca5f928a9ebe4a3f8551698ea4f20f52f6652 (diff) | |
| download | uhd-627075e60e0b893a412e849301ccef5bb2e8a68a.tar.gz uhd-627075e60e0b893a412e849301ccef5bb2e8a68a.tar.bz2 uhd-627075e60e0b893a412e849301ccef5bb2e8a68a.zip | |
uhd: move thread loop condition flag to before barrier (prevents race condition)
| -rw-r--r-- | host/lib/transport/libusb1_zero_copy.cpp | 2 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/io_impl.cpp | 2 | ||||
| -rw-r--r-- | host/lib/usrp/usrp_e100/io_impl.cpp | 2 | 
3 files changed, 3 insertions, 3 deletions
| diff --git a/host/lib/transport/libusb1_zero_copy.cpp b/host/lib/transport/libusb1_zero_copy.cpp index e42cab1d1..ec2077d30 100644 --- a/host/lib/transport/libusb1_zero_copy.cpp +++ b/host/lib/transport/libusb1_zero_copy.cpp @@ -277,10 +277,10 @@ private:      bool _threads_running;      void run_event_loop(boost::barrier &spawn_barrier){ +        _threads_running = true;          spawn_barrier.wait();          set_thread_priority_safe();          libusb_context *context = libusb::session::get_global_session()->get_context(); -        _threads_running = true;          try{              while(_threads_running){                  timeval tv; diff --git a/host/lib/usrp/usrp2/io_impl.cpp b/host/lib/usrp/usrp2/io_impl.cpp index 07cbd2432..005be7ce4 100644 --- a/host/lib/usrp/usrp2/io_impl.cpp +++ b/host/lib/usrp/usrp2/io_impl.cpp @@ -228,9 +228,9 @@ void usrp2_impl::io_impl::recv_pirate_loop(      zero_copy_if::sptr err_xport,      size_t index  ){ +    recv_pirate_crew_raiding = true;      spawn_barrier.wait();      set_thread_priority_safe(); -    recv_pirate_crew_raiding = true;      //store a reference to the flow control monitor (offset by max dsps)      flow_control_monitor &fc_mon = *(this->fc_mons[index*usrp2_mboard_impl::MAX_NUM_DSPS]); diff --git a/host/lib/usrp/usrp_e100/io_impl.cpp b/host/lib/usrp/usrp_e100/io_impl.cpp index cbab5a761..51ff02d3b 100644 --- a/host/lib/usrp/usrp_e100/io_impl.cpp +++ b/host/lib/usrp/usrp_e100/io_impl.cpp @@ -109,9 +109,9 @@ struct usrp_e100_impl::io_impl{  void usrp_e100_impl::io_impl::recv_pirate_loop(      boost::barrier &spawn_barrier, usrp_e100_clock_ctrl::sptr clock_ctrl  ){ +    recv_pirate_crew_raiding = true;      spawn_barrier.wait();      set_thread_priority_safe(); -    recv_pirate_crew_raiding = true;      while(recv_pirate_crew_raiding){          managed_recv_buffer::sptr buff = this->data_xport->get_recv_buff(); | 
