Skip to content

Commit 57d6895

Browse files
committed
[umf] add error translation function to helpers
1 parent 0d992a0 commit 57d6895

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

source/common/umf_helpers.hpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <umf/memory_pool_ops.h>
1616
#include <umf/memory_provider.h>
1717
#include <umf/memory_provider_ops.h>
18+
#include <ur_api.h>
1819

1920
#include <functional>
2021
#include <memory>
@@ -160,6 +161,37 @@ template <typename Type> umf_result_t &getPoolLastStatusRef() {
160161
return last_status;
161162
}
162163

164+
/// @brief translates UMF return values to UR.
165+
/// This function assumes that the native error of
166+
/// the last failed memory provider is ur_result_t.
167+
inline ur_result_t umf2urResult(umf_result_t umfResult) {
168+
switch (umfResult) {
169+
case UMF_RESULT_SUCCESS:
170+
return UR_RESULT_SUCCESS;
171+
case UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY:
172+
return UR_RESULT_ERROR_OUT_OF_HOST_MEMORY;
173+
case UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC: {
174+
auto hProvider = umfGetLastFailedMemoryProvider();
175+
if (hProvider == nullptr) {
176+
return UR_RESULT_ERROR_UNKNOWN;
177+
}
178+
179+
ur_result_t Err = UR_RESULT_ERROR_UNKNOWN;
180+
umfMemoryProviderGetLastNativeError(hProvider, nullptr,
181+
reinterpret_cast<int32_t *>(&Err));
182+
return Err;
183+
}
184+
case UMF_RESULT_ERROR_INVALID_ARGUMENT:
185+
return UR_RESULT_ERROR_INVALID_ARGUMENT;
186+
case UMF_RESULT_ERROR_INVALID_ALIGNMENT:
187+
return UR_RESULT_ERROR_UNSUPPORTED_ALIGNMENT;
188+
case UMF_RESULT_ERROR_NOT_SUPPORTED:
189+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
190+
default:
191+
return UR_RESULT_ERROR_UNKNOWN;
192+
};
193+
}
194+
163195
} // namespace umf
164196

165197
#endif /* UMF_HELPERS_H */

0 commit comments

Comments
 (0)