diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-05-25 23:19:17 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-05-25 23:19:17 +0000 |
commit | 69c643a24e1c75fa3d361179ec6a25c1796c911b (patch) | |
tree | aec60c55c0935c519e0f0d1651e33eb2d1a03b0d | |
parent | 37477add8ff244e6d6f48ab7d88f37b3a8b109df (diff) | |
parent | 7d1ea8b70c42e0a4182a78630f032af0cee0bfb0 (diff) | |
download | ml-69c643a24e1c75fa3d361179ec6a25c1796c911b.tar.gz |
Snap for 5605988 from 7d1ea8b70c42e0a4182a78630f032af0cee0bfb0 to qt-release
Change-Id: I86de718470012b9b1cdf761a4b159b33ea31ced2
-rw-r--r-- | nn/runtime/VersionedInterfaces.cpp | 29 |
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())}; } |