From 57d68953c1eb9f7b752993e67d8a56a3ff1d1ce9 Mon Sep 17 00:00:00 2001 From: Krzysztof Swiecicki Date: Wed, 12 Jul 2023 17:11:12 +0200 Subject: [PATCH] [umf] add error translation function to helpers --- source/common/umf_helpers.hpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/source/common/umf_helpers.hpp b/source/common/umf_helpers.hpp index 510af3e244..198684b134 100644 --- a/source/common/umf_helpers.hpp +++ b/source/common/umf_helpers.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -160,6 +161,37 @@ template umf_result_t &getPoolLastStatusRef() { return last_status; } +/// @brief translates UMF return values to UR. +/// This function assumes that the native error of +/// the last failed memory provider is ur_result_t. +inline ur_result_t umf2urResult(umf_result_t umfResult) { + switch (umfResult) { + case UMF_RESULT_SUCCESS: + return UR_RESULT_SUCCESS; + case UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY: + return UR_RESULT_ERROR_OUT_OF_HOST_MEMORY; + case UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC: { + auto hProvider = umfGetLastFailedMemoryProvider(); + if (hProvider == nullptr) { + return UR_RESULT_ERROR_UNKNOWN; + } + + ur_result_t Err = UR_RESULT_ERROR_UNKNOWN; + umfMemoryProviderGetLastNativeError(hProvider, nullptr, + reinterpret_cast(&Err)); + return Err; + } + case UMF_RESULT_ERROR_INVALID_ARGUMENT: + return UR_RESULT_ERROR_INVALID_ARGUMENT; + case UMF_RESULT_ERROR_INVALID_ALIGNMENT: + return UR_RESULT_ERROR_UNSUPPORTED_ALIGNMENT; + case UMF_RESULT_ERROR_NOT_SUPPORTED: + return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; + default: + return UR_RESULT_ERROR_UNKNOWN; + }; +} + } // namespace umf #endif /* UMF_HELPERS_H */