aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib
diff options
context:
space:
mode:
authorVirendra Kakade <virendra.kakade@ni.com>2019-02-27 20:11:07 -0600
committerBrent Stapleton <brent.stapleton@ettus.com>2019-05-01 15:17:23 -0700
commit7fdeb444edcc5722aada16ca0c86c4ac6a44ad6f (patch)
tree7f45a8023e6512e09a5a5f7bd62e745fa4993876 /host/lib
parentfe3fa1dd31b6da9c90cf181d64d6829313804cdd (diff)
downloaduhd-7fdeb444edcc5722aada16ca0c86c4ac6a44ad6f.tar.gz
uhd-7fdeb444edcc5722aada16ca0c86c4ac6a44ad6f.tar.bz2
uhd-7fdeb444edcc5722aada16ca0c86c4ac6a44ad6f.zip
mpmd: Fix spurious reclaim call after unclaim
The reclaim task loop is asnychronous to the main thread which can result in spurious reclaim call to the device after unclaim has been called. This is especially risky if the device has already entered a non-serviceable state after unclaim e.g. idle state. Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
Diffstat (limited to 'host/lib')
-rw-r--r--host/lib/usrp/mpmd/mpmd_mboard_impl.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp b/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp
index da4f99794..e2d347778 100644
--- a/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp
+++ b/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp
@@ -302,9 +302,12 @@ mpmd_mboard_impl::mpmd_mboard_impl(
mpmd_mboard_impl::~mpmd_mboard_impl()
{
- UHD_SAFE_CALL(dump_logs(); if (not rpc->request_with_token<bool>("unclaim")) {
- UHD_LOG_WARNING("MPMD", "Failure to ack unclaim!");
- });
+ // Destroy the claimer task to avoid spurious asynchronous reclaim call after the
+ // unclaim.
+ UHD_SAFE_CALL(dump_logs(); _claimer_task.reset();
+ if (not rpc->request_with_token<bool>("unclaim")) {
+ UHD_LOG_WARNING("MPMD", "Failure to ack unclaim!");
+ });
}
/*****************************************************************************