summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2012-03-29 16:03:13 -0700
committerJosh Blum <josh@joshknows.com>2012-03-29 16:03:13 -0700
commit86ff7466868504f4e7abcb06a89b59985812f645 (patch)
tree9b191c8624f709de71748820d8ea35678d7ce8bd
parent298d0ae5db4ede18295c6151f83a59b4f75c1599 (diff)
parent7ac203b39c126c4bdb9b2f5494052fd9eea8f21b (diff)
downloaduhd-86ff7466868504f4e7abcb06a89b59985812f645.tar.gz
uhd-86ff7466868504f4e7abcb06a89b59985812f645.tar.bz2
uhd-86ff7466868504f4e7abcb06a89b59985812f645.zip
Merge branch 'maint'
-rwxr-xr-xhost/cmake/debian/preinst.in2
-rwxr-xr-xhost/cmake/debian/prerm.in1
-rwxr-xr-xhost/cmake/redhat/pre_install.in2
-rwxr-xr-xhost/cmake/redhat/pre_uninstall.in1
-rw-r--r--host/lib/usrp/usrp1/soft_time_ctrl.cpp6
-rw-r--r--host/lib/usrp/usrp1/soft_time_ctrl.hpp5
-rw-r--r--host/lib/usrp/usrp1/usrp1_impl.cpp3
7 files changed, 15 insertions, 5 deletions
diff --git a/host/cmake/debian/preinst.in b/host/cmake/debian/preinst.in
index 9e8e50b90..71246b7e7 100755
--- a/host/cmake/debian/preinst.in
+++ b/host/cmake/debian/preinst.in
@@ -17,5 +17,5 @@
#
if [ "$1" = "install" ]; then
- echo
+ echo 'Installing UHD.'
fi
diff --git a/host/cmake/debian/prerm.in b/host/cmake/debian/prerm.in
index 30ce41963..dfe491767 100755
--- a/host/cmake/debian/prerm.in
+++ b/host/cmake/debian/prerm.in
@@ -17,6 +17,7 @@
#
if [ "$1" = "remove" ]; then
+ echo 'Uninstalling UHD.'
rm /etc/udev/rules.d/uhd-usrp.rules
udevadm control --reload-rules
fi
diff --git a/host/cmake/redhat/pre_install.in b/host/cmake/redhat/pre_install.in
index b611fb381..e62d603ab 100755
--- a/host/cmake/redhat/pre_install.in
+++ b/host/cmake/redhat/pre_install.in
@@ -15,3 +15,5 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+
+echo 'Installing UHD.'
diff --git a/host/cmake/redhat/pre_uninstall.in b/host/cmake/redhat/pre_uninstall.in
index f1faa36ce..806da7f7c 100755
--- a/host/cmake/redhat/pre_uninstall.in
+++ b/host/cmake/redhat/pre_uninstall.in
@@ -16,5 +16,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+echo 'Uninstalling UHD.'
rm /etc/udev/rules.d/uhd-usrp.rules
udevadm control --reload-rules
diff --git a/host/lib/usrp/usrp1/soft_time_ctrl.cpp b/host/lib/usrp/usrp1/soft_time_ctrl.cpp
index 90b3a92da..65bdc36d4 100644
--- a/host/lib/usrp/usrp1/soft_time_ctrl.cpp
+++ b/host/lib/usrp/usrp1/soft_time_ctrl.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2011 Ettus Research LLC
+// Copyright 2011-2012 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -207,6 +207,10 @@ public:
return _inline_msg_queue;
}
+ void stop(void){
+ _recv_cmd_task.reset();
+ }
+
private:
boost::mutex _update_mutex;
size_t _nsamps_remaining;
diff --git a/host/lib/usrp/usrp1/soft_time_ctrl.hpp b/host/lib/usrp/usrp1/soft_time_ctrl.hpp
index b92b51252..f418ec35a 100644
--- a/host/lib/usrp/usrp1/soft_time_ctrl.hpp
+++ b/host/lib/usrp/usrp1/soft_time_ctrl.hpp
@@ -1,5 +1,5 @@
//
-// Copyright 2011 Ettus Research LLC
+// Copyright 2011-2012 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -67,6 +67,9 @@ public:
//! Get access to a buffer of inline metadata
virtual transport::bounded_buffer<rx_metadata_t> &get_inline_queue(void) = 0;
+
+ //! Stops threads before deconstruction to avoid race conditions
+ virtual void stop(void) = 0;
};
}} //namespace
diff --git a/host/lib/usrp/usrp1/usrp1_impl.cpp b/host/lib/usrp/usrp1/usrp1_impl.cpp
index 607badda9..1db2efa0d 100644
--- a/host/lib/usrp/usrp1/usrp1_impl.cpp
+++ b/host/lib/usrp/usrp1/usrp1_impl.cpp
@@ -413,8 +413,7 @@ usrp1_impl::~usrp1_impl(void){
this->enable_rx(false);
this->enable_tx(false);
)
- _tree.reset(); //resets counts on sptrs held in tree
- _soft_time_ctrl.reset(); //stops cmd task before proceeding
+ _soft_time_ctrl->stop(); //stops cmd task before proceeding
_io_impl.reset(); //stops vandal before other stuff gets deconstructed
}