From: Youngjae Cho Date: Mon, 8 Apr 2024 11:34:54 +0000 (+0900) Subject: halapi: Add function checking HAL compatibility X-Git-Tag: accepted/tizen/unified/20240611.122614~30 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=49b72dd51fb6da6e10423ecdb7b63d1234680f9a;p=platform%2Fhal%2Fapi%2Fcommon.git halapi: Add function checking HAL compatibility int hal_common_check_backend_compatibility() : It checks compatibility of the given hal module. Change-Id: I1f4e7a61b709b4bc364400a9ec7f6b920f4eb550 Signed-off-by: Youngjae Cho --- diff --git a/include/hal-common.h b/include/hal-common.h index 9a9dced..3ae6517 100644 --- a/include/hal-common.h +++ b/include/hal-common.h @@ -226,6 +226,15 @@ int hal_common_get_backend_library_names(enum hal_module module, */ int hal_common_check_backend_compatibility_all(enum hal_common_backend_compatibility **arr_compatibility, int *len); +/** + * @brief Check compatibility of the given module + * @param[in] module HAL module for checking compatibility + * @param[out] compatibility Address for storing compatibility result + * @return @c 0 on success, otherwise a negative error value + */ +int hal_common_check_backend_compatibility(enum hal_module module, + enum hal_common_backend_compatibility *compatibility); + #ifdef __cplusplus } #endif diff --git a/src/hal-api-compatibility-checker.c b/src/hal-api-compatibility-checker.c index 660e4fb..f604b6d 100644 --- a/src/hal-api-compatibility-checker.c +++ b/src/hal-api-compatibility-checker.c @@ -410,25 +410,32 @@ static int load_backend_compatibility_from_storage(void) return 0; } -EXPORT -int hal_common_check_backend_compatibility_all(enum hal_common_backend_compatibility **arr_compatibility, int *len) +static int load_backend_compatibility(void) { - enum hal_common_backend_compatibility *arr = NULL; - if (g_compatibility_info_loaded) - goto load_success; + return 0; load_backend_compatibility_from_storage(); if (g_compatibility_info_loaded) - goto load_success; + return 0; load_backend_compatibility_from_manifest(); if (g_compatibility_info_loaded) - goto load_success; + return 0; return -ENODATA; +} + +EXPORT +int hal_common_check_backend_compatibility_all(enum hal_common_backend_compatibility **arr_compatibility, int *len) +{ + int ret; + enum hal_common_backend_compatibility *arr = NULL; + + ret = load_backend_compatibility(); + if (ret != 0) + return ret; -load_success: if (access(HAL_COMMON_DEFAULT_BACKEND_COMPATIBILITY_PATH, F_OK) != 0) store_backend_compatibility_to_storage(); @@ -451,3 +458,27 @@ load_success: return 0; } + +EXPORT +int hal_common_check_backend_compatibility(enum hal_module module, + enum hal_common_backend_compatibility *compatibility) +{ + int ret; + + if (module < HAL_MODULE_UNKNOWN || module >= HAL_MODULE_END) + return -EINVAL; + + if (!compatibility) + return -EINVAL; + + ret = load_backend_compatibility(); + if (ret != 0) + return ret; + + if (access(HAL_COMMON_DEFAULT_BACKEND_COMPATIBILITY_PATH, F_OK) != 0) + store_backend_compatibility_to_storage(); + + *compatibility = g_compatibility_info[module].compat; + + return 0; +}