GitOrigin-RevId: 280cc88092
tags/v1.9.0
@@ -22,6 +22,15 @@ typedef enum { | |||||
ERROR = 3, /*!< Print only errors */ | ERROR = 3, /*!< Print only errors */ | ||||
} LiteLogLevel; | } LiteLogLevel; | ||||
/*! | |||||
* \brief The Error Code | |||||
*/ | |||||
typedef enum { | |||||
OK = 0, | |||||
LITE_INTERNAL_ERROR = 1, | |||||
LITE_UNKNOWN_ERROR = 2, | |||||
} ErrorCode; | |||||
typedef enum { | typedef enum { | ||||
LITE_DEFAULT = 0, //! default backend is mge | LITE_DEFAULT = 0, //! default backend is mge | ||||
} LiteBackend; | } LiteBackend; | ||||
@@ -23,6 +23,15 @@ extern "C" { | |||||
*/ | */ | ||||
LITE_API int LITE_get_version(int* major, int* minor, int* patch); | LITE_API int LITE_get_version(int* major, int* minor, int* patch); | ||||
/*! \brief Get the last error code. | |||||
* \return the current error code | |||||
*/ | |||||
LITE_API ErrorCode LITE_get_last_error_code(); | |||||
/*! \brief Clear the last error code and error message. | |||||
*/ | |||||
LITE_API void LITE_clear_last_error(); | |||||
/*! \brief Get the last error message. | /*! \brief Get the last error message. | ||||
* \return the message pointer | * \return the message pointer | ||||
*/ | */ | ||||
@@ -75,7 +75,7 @@ extern "C" { | |||||
* mask 0b10: async if there are multiple comp nodes with | * mask 0b10: async if there are multiple comp nodes with | ||||
* mask 0b100: always async | * mask 0b100: always async | ||||
*/ | */ | ||||
typedef struct Options { | |||||
typedef struct { | |||||
int weight_preprocess; | int weight_preprocess; | ||||
int fuse_preprocess; | int fuse_preprocess; | ||||
int fake_next_exec; | int fake_next_exec; | ||||
@@ -128,7 +128,7 @@ LITE_API LiteConfig* default_config(); | |||||
* \brief config the network input and output item | * \brief config the network input and output item | ||||
* | * | ||||
*/ | */ | ||||
typedef struct LiteIO { | |||||
typedef struct { | |||||
//! the tensor name in the graph corresponding to the IO | //! the tensor name in the graph corresponding to the IO | ||||
const char* name; | const char* name; | ||||
@@ -157,7 +157,7 @@ extern LITE_API const LiteIO default_io; | |||||
* \brief the input and output information when load the network | * \brief the input and output information when load the network | ||||
* the NetworkIO will remain in the network until the network is destroyed | * the NetworkIO will remain in the network until the network is destroyed | ||||
*/ | */ | ||||
typedef struct LiteNetworkIO { | |||||
typedef struct { | |||||
LiteIO* inputs; | LiteIO* inputs; | ||||
LiteIO* outputs; | LiteIO* outputs; | ||||
size_t input_size; //! the number IO in inputs | size_t input_size; //! the number IO in inputs | ||||
@@ -17,10 +17,20 @@ namespace { | |||||
class ErrorMsg { | class ErrorMsg { | ||||
public: | public: | ||||
std::string& get_error_msg() { return error_msg; } | std::string& get_error_msg() { return error_msg; } | ||||
void set_error_msg(const std::string& msg) { error_msg = msg; } | |||||
ErrorCode get_error_code() { return error_code; } | |||||
void set_error_msg(const std::string& msg, ErrorCode code) { | |||||
error_msg = msg + ", Error Code: " + std::to_string(code); | |||||
error_code = code; | |||||
} | |||||
void clear_error() { | |||||
error_code = ErrorCode::OK; | |||||
error_msg.clear(); | |||||
} | |||||
private: | private: | ||||
std::string error_msg; | std::string error_msg; | ||||
ErrorCode error_code; | |||||
}; | }; | ||||
static LITE_MUTEX mtx_error; | static LITE_MUTEX mtx_error; | ||||
@@ -32,10 +42,20 @@ ErrorMsg& get_global_error() { | |||||
int LiteHandleException(const std::exception& e) { | int LiteHandleException(const std::exception& e) { | ||||
LITE_LOCK_GUARD(mtx_error); | LITE_LOCK_GUARD(mtx_error); | ||||
get_global_error().set_error_msg(e.what()); | |||||
get_global_error().set_error_msg(e.what(), ErrorCode::LITE_INTERNAL_ERROR); | |||||
return -1; | return -1; | ||||
} | } | ||||
ErrorCode LITE_get_last_error_code() { | |||||
LITE_LOCK_GUARD(mtx_error); | |||||
return get_global_error().get_error_code(); | |||||
} | |||||
void LITE_clear_last_error() { | |||||
LITE_LOCK_GUARD(mtx_error); | |||||
get_global_error().clear_error(); | |||||
} | |||||
const char* LITE_get_last_error() { | const char* LITE_get_last_error() { | ||||
LITE_LOCK_GUARD(mtx_error); | LITE_LOCK_GUARD(mtx_error); | ||||
return get_global_error().get_error_msg().c_str(); | return get_global_error().get_error_msg().c_str(); | ||||
@@ -56,7 +56,11 @@ TEST(TestCapiTensor, Basic) { | |||||
//! test error | //! test error | ||||
ASSERT_EQ(LITE_is_pinned_host(c_tensor0, nullptr), -1); | ASSERT_EQ(LITE_is_pinned_host(c_tensor0, nullptr), -1); | ||||
ASSERT_NE(strlen(LITE_get_last_error()), 0); | ASSERT_NE(strlen(LITE_get_last_error()), 0); | ||||
ASSERT_EQ(LITE_get_last_error_code(), ErrorCode::LITE_INTERNAL_ERROR); | |||||
printf("The last error is: %s\n", LITE_get_last_error()); | printf("The last error is: %s\n", LITE_get_last_error()); | ||||
LITE_clear_last_error(); | |||||
ASSERT_EQ(strlen(LITE_get_last_error()), 0); | |||||
ASSERT_EQ(LITE_get_last_error_code(), ErrorCode::OK); | |||||
LITE_destroy_tensor(c_tensor0); | LITE_destroy_tensor(c_tensor0); | ||||
LITE_destroy_tensor(c_tensor1); | LITE_destroy_tensor(c_tensor1); | ||||