From: Chanwoo Choi Date: Thu, 7 Jan 2021 05:35:40 +0000 (+0900) Subject: halapi: common: Change return type of hal_common_put_backend and backend->exit X-Git-Tag: submit/tizen/20210107.062142^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a8a4f31acf54d50b7ba1ab2d3b18122d454ebec2;p=platform%2Fhal%2Fapi%2Fcommon.git halapi: common: Change return type of hal_common_put_backend and backend->exit Change the return type of hal_common_put_backend() and backend->exit() from void to int in order to pass the error value. Change-Id: I155a33e469511319303bd56d3866d3bbfbec786c Signed-off-by: Chanwoo Choi --- diff --git a/include/hal-common-interface.h b/include/hal-common-interface.h index 56b1c3c..39831b9 100644 --- a/include/hal-common-interface.h +++ b/include/hal-common-interface.h @@ -34,7 +34,7 @@ typedef struct __hal_backend { const char *vendor; const unsigned int abi_version; int (*init) (void **data); - void (*exit) (void *data); + int (*exit) (void *data); } hal_backend; #ifdef __cplusplus diff --git a/include/hal-common.h b/include/hal-common.h index e6d025c..e25503b 100644 --- a/include/hal-common.h +++ b/include/hal-common.h @@ -128,8 +128,9 @@ int hal_common_get_backend(enum hal_module handle, void **data); * @brief Put the backend data according to the type of HAL module * @param[in] HAL module id among enum hal_moudle * @param[in] Data pointer where 'hal_backend_[module]_funcs' instance + * @return @c 0 on success, otherwise a negative error value */ -void hal_common_put_backend(enum hal_module handle, void *data); +int hal_common_put_backend(enum hal_module handle, void *data); /** * @brief Check HAL ABI version whehter is suppored or not on current platform diff --git a/src/hal-api-common.c b/src/hal-api-common.c index 03cb953..9be72fa 100644 --- a/src/hal-api-common.c +++ b/src/hal-api-common.c @@ -149,7 +149,7 @@ err: } EXPORT -void hal_common_put_backend(enum hal_module module, void *data) +int hal_common_put_backend(enum hal_module module, void *data) { hal_backend *backend = NULL; void *handle = NULL; @@ -158,22 +158,28 @@ void hal_common_put_backend(enum hal_module module, void *data) /* Check parameter whether is valid or not */ if (module <= HAL_MODULE_UNKNOWN || module >= HAL_MODULE_END) { _E("Invalid parameter of HAL module (%d)\n", module); - return; + return TIZEN_ERROR_INVALID_PARAMETER; } backend = hal_module_info[module].library_backend; handle = hal_module_info[module].library_handle; - if (backend) { - if (backend->exit) - backend->exit(data); - - _I("Put HAL backend: name(%s)/vendor(%s)\n", - backend->name, backend->vendor); + if (backend && backend->exit) { + ret = backend->exit(data); + if (ret < 0) { + _E("Failed to exit backend: name(%s)/vendor(%s)\n", + backend->name, backend->vendor); + return TIZEN_ERROR_INVALID_PARAMETER; + } } if (handle) dlclose(handle); + + _I("Put HAL backend: name(%s)/vendor(%s)\n", + backend->name, backend->vendor); + + return TIZEN_ERROR_NONE; } EXPORT