summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-05-25 23:19:17 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-05-25 23:19:17 +0000
commit69c643a24e1c75fa3d361179ec6a25c1796c911b (patch)
treeaec60c55c0935c519e0f0d1651e33eb2d1a03b0d
parent37477add8ff244e6d6f48ab7d88f37b3a8b109df (diff)
parent7d1ea8b70c42e0a4182a78630f032af0cee0bfb0 (diff)
downloadml-69c643a24e1c75fa3d361179ec6a25c1796c911b.tar.gz
Snap for 5605988 from 7d1ea8b70c42e0a4182a78630f032af0cee0bfb0 to qt-release
Change-Id: I86de718470012b9b1cdf761a4b159b33ea31ced2
-rw-r--r--nn/runtime/VersionedInterfaces.cpp29
1 files changed, 23 insertions, 6 deletions
diff --git a/nn/runtime/VersionedInterfaces.cpp b/nn/runtime/VersionedInterfaces.cpp
index c72c7d822..d0439b213 100644
--- a/nn/runtime/VersionedInterfaces.cpp
+++ b/nn/runtime/VersionedInterfaces.cpp
@@ -44,6 +44,10 @@ void sendFailureMessage(const sp<IExecutionCallback>& cb) {
cb->notify(ErrorStatus::GENERAL_FAILURE);
}
+void sendFailureMessage(const sp<ExecutionCallback>& cb) {
+ sendFailureMessage(static_cast<sp<IExecutionCallback>>(cb));
+}
+
// This class is thread safe
template <typename ICallback>
class DeathHandler : public hardware::hidl_death_recipient {
@@ -133,21 +137,34 @@ ErrorStatus VersionedIPreparedModel::execute(const Request& request, MeasureTimi
if (mPreparedModelV1_2 != nullptr) {
Return<ErrorStatus> ret = mPreparedModelV1_2->execute_1_2(request, measure, callback);
- callback->wait();
if (!ret.isOk()) {
+ sendFailureMessage(callback);
LOG(ERROR) << "execute_1_2 failure: " << ret.description();
return ErrorStatus::GENERAL_FAILURE;
}
+ if (ret != ErrorStatus::NONE) {
+ sendFailureMessage(callback);
+ LOG(ERROR) << "execute_1_2 returned " << toString(static_cast<ErrorStatus>(ret));
+ return static_cast<ErrorStatus>(ret);
+ }
+ callback->wait();
return static_cast<ErrorStatus>(ret);
} else if (mPreparedModelV1_0 != nullptr) {
Return<ErrorStatus> ret = mPreparedModelV1_0->execute(request, callback);
- callback->wait();
if (!ret.isOk()) {
+ sendFailureMessage(callback);
LOG(ERROR) << "execute failure: " << ret.description();
return ErrorStatus::GENERAL_FAILURE;
}
+ if (ret != ErrorStatus::NONE) {
+ sendFailureMessage(callback);
+ LOG(ERROR) << "execute returned " << toString(static_cast<ErrorStatus>(ret));
+ return static_cast<ErrorStatus>(ret);
+ }
+ callback->wait();
return static_cast<ErrorStatus>(ret);
} else {
+ sendFailureMessage(callback);
LOG(ERROR) << "execute called with no preparedModel";
return ErrorStatus::GENERAL_FAILURE;
}
@@ -432,7 +449,6 @@ std::pair<ErrorStatus, std::shared_ptr<VersionedIPreparedModel>> VersionedIDevic
if (mDeviceV1_2 != nullptr) {
const Return<ErrorStatus> ret = mDeviceV1_2->prepareModel_1_2(model, preference, modelCache,
dataCache, token, callback);
- callback->wait();
if (!ret.isOk()) {
LOG(ERROR) << "prepareModel_1_2 failure: " << ret.description();
return kFailure;
@@ -441,6 +457,7 @@ std::pair<ErrorStatus, std::shared_ptr<VersionedIPreparedModel>> VersionedIDevic
LOG(ERROR) << "prepareModel_1_2 returned " << toString(static_cast<ErrorStatus>(ret));
return kFailure;
}
+ callback->wait();
return {callback->getStatus(), makeVersionedIPreparedModel(callback->getPreparedModel())};
}
@@ -462,7 +479,6 @@ std::pair<ErrorStatus, std::shared_ptr<VersionedIPreparedModel>> VersionedIDevic
if (compliant) {
const Return<ErrorStatus> ret =
mDeviceV1_1->prepareModel_1_1(model11, preference, callback);
- callback->wait();
if (!ret.isOk()) {
LOG(ERROR) << "prepareModel_1_1 failure: " << ret.description();
return kFailure;
@@ -472,6 +488,7 @@ std::pair<ErrorStatus, std::shared_ptr<VersionedIPreparedModel>> VersionedIDevic
<< toString(static_cast<ErrorStatus>(ret));
return kFailure;
}
+ callback->wait();
return {callback->getStatus(),
makeVersionedIPreparedModel(callback->getPreparedModel())};
}
@@ -499,7 +516,6 @@ std::pair<ErrorStatus, std::shared_ptr<VersionedIPreparedModel>> VersionedIDevic
}
if (compliant) {
const Return<ErrorStatus> ret = mDeviceV1_0->prepareModel(model10, callback);
- callback->wait();
if (!ret.isOk()) {
LOG(ERROR) << "prepareModel failure: " << ret.description();
return kFailure;
@@ -508,6 +524,7 @@ std::pair<ErrorStatus, std::shared_ptr<VersionedIPreparedModel>> VersionedIDevic
LOG(ERROR) << "prepareModel returned " << toString(static_cast<ErrorStatus>(ret));
return kFailure;
}
+ callback->wait();
return {callback->getStatus(),
makeVersionedIPreparedModel(callback->getPreparedModel())};
}
@@ -541,7 +558,6 @@ VersionedIDevice::prepareModelFromCache(const hidl_vec<hidl_handle>& modelCache,
if (mDeviceV1_2 != nullptr) {
const Return<ErrorStatus> ret =
mDeviceV1_2->prepareModelFromCache(modelCache, dataCache, token, callback);
- callback->wait();
if (!ret.isOk()) {
LOG(ERROR) << "prepareModelFromCache failure: " << ret.description();
return kFailure;
@@ -551,6 +567,7 @@ VersionedIDevice::prepareModelFromCache(const hidl_vec<hidl_handle>& modelCache,
<< toString(static_cast<ErrorStatus>(ret));
return kFailure;
}
+ callback->wait();
return {callback->getStatus(), makeVersionedIPreparedModel(callback->getPreparedModel())};
}