From 4b40ecdcf3fd62969d9ac42d2bd09224979fe61a Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Thu, 16 Jun 2022 14:36:55 +0900 Subject: [PATCH 01/16] tests: unittest: Add hook function for handle hal backend library The hal-api-common uses the dlopen/dlsym/dlclose to load/unload the shared library of hal backend and find symbol from hal backend library. For testing hal-api-common functions when building time, re-implement dlopen/dlsym/dlclose for hooking.By implementing the hooking functions, be able to verify the internal logic of hal-api-common functions. Following fucntions are re-implemented for hooking: - void *dlopen(const char *filename, int flags) - int dlclose(void *handle) - void *dlsym(void *handle, const char *symbol) - int access(const char *pathname, int mode) And hal-backend-[module] (e.g., tbm/tdm/audio/camera/devcie/power etc) have to contain the their own hal_backend structure to implement the h/w device-dependent hal backend. Instead of adding the each hal_backend structure for all hal modules, use the common 'hal_backend_module_data' regardless of hal module name. Change-Id: Icbcba49a654f9ed1a287233c9cc0e3efcca508df Signed-off-by: Chanwoo Choi --- tests/unittest/hal-api-common-hook.c | 64 ++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tests/unittest/hal-api-common-hook.c diff --git a/tests/unittest/hal-api-common-hook.c b/tests/unittest/hal-api-common-hook.c new file mode 100644 index 0000000..c55b1cc --- /dev/null +++ b/tests/unittest/hal-api-common-hook.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include + +#include "hal-common-interface.h" + +/* + * All hal-backend-[module] (e.g., tbm/tdm/audio/camera/devcie/power etc) + * have to contain the their own hal_backend structure to implement + * the h/w device-dependent hal backend. Instead of adding the each hal_backend + * structure for all hal modules, use the common hal_backend_module_data + * regardless of hal module name. Below dlsym hooking function doesn't + * check the symbol name and then return the common hal_backend_module_data. + * */ +static int hal_backend_init(void **data) { return 0; } +static int hal_backend_exit(void *data) { return 0; } + +hal_backend hal_backend_module_data = { + .name = "hal-backend-module", + .vendor = "hal-backend-vendor", + .abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .init = hal_backend_init, + .exit = hal_backend_exit, +}; + +/* + * hal-api-common uses the dlopen/dlsym/dlclose/access to load/unload + * the shared library of hal backend and find symbol from hal backend library. + * For testing hal-api-common functions when building time, re-implement + * dlopen/dlsym/dlclose/access for hooking.By implementing the hooking functions, + * be able to verify the internal logic of hal-api-common functions. + */ +void *dlopen(const char *filename, int flags) { + return calloc(1, sizeof(void *)); +} + +int dlclose(void *handle) { + free(handle); + return 0; +} + +void *dlsym(void *handle, const char *symbol) { + return (void *)&hal_backend_module_data; +} + +int access(const char *pathname, int mode) { + return 0; +} -- 2.7.4 From 471e3222a40b1ac50d495f45e872049cb3eef52a Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Thu, 16 Jun 2022 12:48:35 +0900 Subject: [PATCH 02/16] tests: unittest: Add new test for hal_common_get_backend and put_backend function hal_common_get_backend and hal_common_put_backend functions are very important because they are in charge of loading/unloading the hal backend library for all hal backends and also verify the validation checking of the loaded hal backend library. When executing hal_common_get_backend and hal_common_put_backend, there are very complex validation sequence. It means that have to verify the internal logic of both hal_common_get_backend and hal_common_put_backend at the implementation step in order to catch the error. So that add new test for hal_common_get_backend and hal_common_put_backend functions. Change-Id: I8d42e9327248c283d8f01fc8b5f5926e0d371ba5 Signed-off-by: Chanwoo Choi --- tests/unittest/test-hal-api-common.cc | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/unittest/test-hal-api-common.cc b/tests/unittest/test-hal-api-common.cc index 8b1e08a..1fc6486 100644 --- a/tests/unittest/test-hal-api-common.cc +++ b/tests/unittest/test-hal-api-common.cc @@ -607,3 +607,32 @@ TEST_P(HalInfoMatchedTest, test_check_backend_abi_version) { } _hal_api_conf_exit(); } + +TEST_P(HalInfoMatchedTest, test_hal_common_get_backend_valid) { + auto info = GetParam(); + + struct _hal_backend_module_data { + void *data; + } *backend_module_data; + + int ret = hal_common_get_backend(info.module_, (void **)&backend_module_data); + if (strlen(info.library_name_) == 0) + EXPECT_NE(ret, TIZEN_ERROR_NONE); + else + EXPECT_EQ(ret, TIZEN_ERROR_NONE); + + ret = hal_common_put_backend(info.module_, backend_module_data); + EXPECT_EQ(ret, TIZEN_ERROR_NONE); +} + +TEST(HalInfoMatchedTest, test_hal_common_get_backend_invalid_module_id) { + struct _hal_backend_module_data { + void *data; + } *backend_module_data; + + int ret = hal_common_get_backend(HAL_MODULE_UNKNOWN, (void **)&backend_module_data); + EXPECT_NE(ret, TIZEN_ERROR_NONE); + + ret = hal_common_get_backend(HAL_MODULE_END, (void **)&backend_module_data); + EXPECT_NE(ret, TIZEN_ERROR_NONE); +} -- 2.7.4 From 8eb86b233dff2c718bda0cbc20a3a2a8fa3dae61 Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Wed, 22 Jun 2022 00:58:01 +0900 Subject: [PATCH 03/16] tests: unittest: Add new test for hal_common_get_backend_with_library_name Basically, the hal backend library name of each module is already decied such as 'libhal-backend-[module name].so'. But, some module requires the hal backend library loading way with their own library name like 'libhal-backend-[module name]-lidar.so'. When loading the their own library name, hal_common_get_backend_with_library_name and hal_common_put_backend_with_library_name are used. So that add new for hal_common_get/put_backend_with_library_name and add 'backend_module_name' attribute to class HalInfo because 'backend_module_name' is required to check the hal backend name as I mentioned above. Change-Id: Idbd5ae4f23714a4efdb857d2a1ed0885a927e887 Signed-off-by: Chanwoo Choi --- tests/unittest/test-hal-api-common.cc | 107 +++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) diff --git a/tests/unittest/test-hal-api-common.cc b/tests/unittest/test-hal-api-common.cc index 1fc6486..9723266 100644 --- a/tests/unittest/test-hal-api-common.cc +++ b/tests/unittest/test-hal-api-common.cc @@ -80,6 +80,7 @@ class HalInfo { enum hal_group group_; enum hal_license license_; const char *module_name_; + const char *backend_module_name_; const char *library_name_; const char *library_name_64bit_; const char *symbol_name_; @@ -89,12 +90,15 @@ class HalInfo { enum hal_group group, enum hal_license license, const char *module_name, + const char *backend_module_name, const char *library_name, const char *library_name_64bit, const char *symbol_name, vector versions) : module_(module), group_(group), license_(license), - module_name_(module_name), library_name_(library_name), + module_name_(module_name), + backend_module_name_(backend_module_name), + library_name_(library_name), library_name_64bit_(library_name_64bit), symbol_name_(symbol_name), versions_(versions) {} }; @@ -108,6 +112,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT, "HAL_MODULE_TBM", + "tbm", "/hal/lib/libhal-backend-tbm.so", "/hal/lib64/libhal-backend-tbm.so", "hal_backend_tbm_data", @@ -121,6 +126,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT, "HAL_MODULE_TDM", + "tdm", "/hal/lib/libhal-backend-tdm.so", "/hal/lib64/libhal-backend-tdm.so", "hal_backend_tdm_data", @@ -137,6 +143,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {} ), @@ -147,6 +154,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {} ), @@ -154,6 +162,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_AUDIO", + "audio", "/hal/lib/libhal-backend-audio.so", "/hal/lib64/libhal-backend-audio.so", "hal_backend_audio_data", @@ -167,6 +176,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_CAMERA", + "camera", "/hal/lib/libhal-backend-camera.so", "/hal/lib64/libhal-backend-camera.so", "hal_backend_camera_data", @@ -180,6 +190,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_RADIO", + "radio", "/hal/lib/libhal-backend-radio.so", "/hal/lib64/libhal-backend-radio.so", "hal_backend_radio_data", @@ -196,6 +207,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {} ), @@ -206,6 +218,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {} ), @@ -216,6 +229,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {} ), @@ -223,6 +237,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_BLUETOOTH", + "bluetooth", "/hal/lib/libhal-backend-bluetooth.so", "/hal/lib64/libhal-backend-bluetooth.so", "hal_backend_bluetooth_data", @@ -236,6 +251,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_WIFI", + "wifi", "/hal/lib/libhal-backend-wifi.so", "/hal/lib64/libhal-backend-wifi.so", "hal_backend_wifi_data", @@ -252,6 +268,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {} ), @@ -259,6 +276,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_NFC", + "nfc", "/hal/lib/libhal-backend-nfc.so", "/hal/lib64/libhal-backend-nfc.so", "hal_backend_nfc_data", @@ -272,6 +290,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_ZIGBEE", + "zigbee", "/hal/lib/libhal-backend-zigbee.so", "/hal/lib64/libhal-backend-zigbee.so", "hal_backend_zigbee_data", @@ -285,6 +304,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_UWB", + "uwb", "/hal/lib/libhal-backend-uwb.so", "/hal/lib64/libhal-backend-uwb.so", "hal_backend_uwb_data", @@ -301,6 +321,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {} ), @@ -311,6 +332,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {} ), @@ -318,6 +340,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_LOCATION, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_LOCATION", + "location", "/hal/lib/libhal-backend-location.so", "/hal/lib64/libhal-backend-location.so", "hal_backend_location_data", @@ -334,6 +357,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {} ), @@ -341,6 +365,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_POWER", + "power", "/hal/lib/libhal-backend-power.so", "/hal/lib64/libhal-backend-power.so", "hal_backend_power_data", @@ -354,6 +379,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_SENSOR", + "sensor", "/hal/lib/libhal-backend-sensor.so", "/hal/lib64/libhal-backend-sensor.so", "hal_backend_sensor_data", @@ -370,12 +396,14 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "", "", "", + "", {}), HalInfo(HAL_MODULE_DEVICE_BATTERY, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_BATTERY", + "device-battery", "/hal/lib/libhal-backend-device-battery.so", "/hal/lib64/libhal-backend-device-battery.so", "hal_backend_device_battery_data", @@ -389,6 +417,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_BEZEL", + "device-bezel", "/hal/lib/libhal-backend-device-bezel.so", "/hal/lib64/libhal-backend-device-bezel.so", "hal_backend_device_bezel_data", @@ -402,6 +431,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_DISPLAY", + "device-display", "/hal/lib/libhal-backend-device-display.so", "/hal/lib64/libhal-backend-device-display.so", "hal_backend_device_display_data", @@ -415,6 +445,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_IR", + "device-ir", "/hal/lib/libhal-backend-device-ir.so", "/hal/lib64/libhal-backend-device-ir.so", "hal_backend_device_ir_data", @@ -428,6 +459,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_TOUCHSCREEN", + "device-touchscreen", "/hal/lib/libhal-backend-device-touchscreen.so", "/hal/lib64/libhal-backend-device-touchscreen.so", "hal_backend_device_touchscreen_data", @@ -441,6 +473,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_LED", + "device-led", "/hal/lib/libhal-backend-device-led.so", "/hal/lib64/libhal-backend-device-led.so", "hal_backend_device_led_data", @@ -454,6 +487,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_BOARD", + "device-board", "/hal/lib/libhal-backend-device-board.so", "/hal/lib64/libhal-backend-device-board.so", "hal_backend_device_board_data", @@ -467,6 +501,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_EXTERNAL_CONNECTION", + "device-external-connection", "/hal/lib/libhal-backend-device-external-connection.so", "/hal/lib64/libhal-backend-device-external-connection.so", "hal_backend_device_external_connection_data", @@ -480,6 +515,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_THERMAL", + "device-thermal", "/hal/lib/libhal-backend-device-thermal.so", "/hal/lib64/libhal-backend-device-thermal.so", "hal_backend_device_thermal_data", @@ -493,6 +529,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_USB_GADGET", + "device-usb-gadget", "/hal/lib/libhal-backend-device-usb-gadget.so", "/hal/lib64/libhal-backend-device-usb-gadget.so", "hal_backend_device_usb_gadget_data", @@ -506,6 +543,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_HAPTIC", + "device-haptic", "/hal/lib/libhal-backend-device-haptic.so", "/hal/lib64/libhal-backend-device-haptic.so", "hal_backend_device_haptic_data", @@ -519,6 +557,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, "HAL_MODULE_DEVICE_MEMORY", + "device-memory", "/hal/lib/libhal-backend-device-memory.so", "/hal/lib64/libhal-backend-device-memory.so", "hal_backend_device_memory_data", @@ -636,3 +675,69 @@ TEST(HalInfoMatchedTest, test_hal_common_get_backend_invalid_module_id) { ret = hal_common_get_backend(HAL_MODULE_END, (void **)&backend_module_data); EXPECT_NE(ret, TIZEN_ERROR_NONE); } + +TEST_P(HalInfoMatchedTest, test_hal_common_get_backend_with_library_name_valid) { + auto info = GetParam(); + char *library_name = g_strdup_printf("libhal-backend-%s-user-specific.so", + info.backend_module_name_); + struct _hal_backend_module_data { + void *data; + } *backend_module_data; + + int ret = hal_common_get_backend_with_library_name(info.module_, + (void **)&backend_module_data, + library_name); + if (strlen(info.library_name_) == 0) + EXPECT_NE(ret, TIZEN_ERROR_NONE); + else + EXPECT_EQ(ret, TIZEN_ERROR_NONE); + + ret = hal_common_put_backend_with_library_name(info.module_, + backend_module_data, + library_name); + if (strlen(info.library_name_) == 0) + EXPECT_NE(ret, TIZEN_ERROR_NONE); + else + EXPECT_EQ(ret, TIZEN_ERROR_NONE); + + g_free(library_name); +} + +TEST_P(HalInfoMatchedTest, test_hal_common_get_backend_with_library_name_invalid_library_name) { + auto info = GetParam(); + char *library_name = g_strdup_printf("libhal-backend-unknown-module.so"); + struct _hal_backend_module_data { + void *data; + } *backend_module_data; + + int ret = hal_common_get_backend_with_library_name(info.module_, + (void **)&backend_module_data, + library_name); + EXPECT_NE(ret, TIZEN_ERROR_NONE); + + ret = hal_common_put_backend_with_library_name(info.module_, + (void **)&backend_module_data, + library_name); + EXPECT_NE(ret, TIZEN_ERROR_NONE); + + g_free(library_name); +} + +TEST(HalInfoMatchedTest, test_hal_common_get_backend_with_library_name_invalid_module_id) { + char *library_name = g_strdup_printf("libhal-backend-unknown-module.so"); + struct _hal_backend_module_data { + void *data; + } *backend_module_data; + + int ret = hal_common_get_backend_with_library_name(HAL_MODULE_UNKNOWN, + (void **)&backend_module_data, + library_name); + EXPECT_NE(ret, TIZEN_ERROR_NONE); + + ret = hal_common_put_backend_with_library_name(HAL_MODULE_END, + (void **)&backend_module_data, + library_name); + EXPECT_NE(ret, TIZEN_ERROR_NONE); + + g_free(library_name); +} -- 2.7.4 From 53bc52c5cac83368dcbf45bd676c3265237d0df7 Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Tue, 15 Nov 2022 09:43:03 +0900 Subject: [PATCH 04/16] halapi: common: Add HAL_ABI_VERSION_TIZEN_7_5 Add HAL_ABL_VERSION_TIZEN_7_5 after released Tizen-7.0. Because current Tizen Version is 7.5, It needs to add current Tizen version about HAL_ABI_VERSION. If it's not compatible between TIZEN_6.5 and TIZEN_7.5, it needs to modify by modules owner. Change-Id: Ifabd5981e7add0a9b07e08cb8fb14c603febb16f Signed-off-by: Jaehoon Chung --- include/hal-common-interface.h | 2 ++ src/hal-api-list.h | 56 +++++++++++++++++------------------ tests/unittest/hal-api-common-hook.c | 2 +- tests/unittest/test-hal-api-common.cc | 54 ++++++++++++++++----------------- 4 files changed, 58 insertions(+), 56 deletions(-) diff --git a/include/hal-common-interface.h b/include/hal-common-interface.h index 56734ce..b0abf12 100644 --- a/include/hal-common-interface.h +++ b/include/hal-common-interface.h @@ -27,6 +27,7 @@ enum hal_abi_version { HAL_ABI_VERSION_UNKNOWN = 0, HAL_ABI_VERSION_TIZEN_6_5, HAL_ABI_VERSION_TIZEN_7_0, + HAL_ABI_VERSION_TIZEN_7_5, HAL_ABI_VERSION_END, }; @@ -34,6 +35,7 @@ static const char *const hal_abi_version_str[] = { [HAL_ABI_VERSION_UNKNOWN] = "Unknown HAL ABI Version", [HAL_ABI_VERSION_TIZEN_6_5] = "HAL_ABI_VERSION_TIZEN_6_5", [HAL_ABI_VERSION_TIZEN_7_0] = "HAL_ABI_VERSION_TIZEN_7_0", + [HAL_ABI_VERSION_TIZEN_7_5] = "HAL_ABI_VERSION_TIZEN_7_5", }; typedef struct __hal_backend { diff --git a/src/hal-api-list.h b/src/hal-api-list.h index 967caaa..d2fa20e 100644 --- a/src/hal-api-list.h +++ b/src/hal-api-list.h @@ -23,21 +23,21 @@ #define HAL_ABI_VERSION_MAX 10 -enum hal_abi_version g_platform_curr_abi_version = HAL_ABI_VERSION_TIZEN_7_0; +enum hal_abi_version g_platform_curr_abi_version = HAL_ABI_VERSION_TIZEN_7_5; static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_ABI_VERSION_MAX] = { /* HAL_GROUP_GRAPHICS */ [HAL_MODULE_TBM] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_TDM] = { /* FIXME: Need to be filled from configuration file. */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, @@ -58,21 +58,21 @@ static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_A [HAL_MODULE_AUDIO] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_CAMERA] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_RADIO] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, @@ -99,14 +99,14 @@ static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_A [HAL_MODULE_BLUETOOTH] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_WIFI] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, @@ -115,21 +115,21 @@ static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_A [HAL_MODULE_NFC] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_ZIGBEE] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_UWB] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, @@ -144,7 +144,7 @@ static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_A [HAL_MODULE_TELEPHONY] = { /* FIXME: Need to be determined whehter support HAL API or not. */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, @@ -153,7 +153,7 @@ static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_A [HAL_MODULE_LOCATION] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, @@ -164,21 +164,21 @@ static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_A [HAL_MODULE_POWER] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_SENSOR] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_PERIPHERAL] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, @@ -186,84 +186,84 @@ static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_A [HAL_MODULE_DEVICE_BATTERY] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_BEZEL] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_DISPLAY] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_IR] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_TOUCHSCREEN] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_LED] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_BOARD] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_EXTERNAL_CONNECTION] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_THERMAL] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_USB_GADGET] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_HAPTIC] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, [HAL_MODULE_DEVICE_MEMORY] = { /* FIXME: Need to be initialized by configuration file like xml */ [0] = { - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, diff --git a/tests/unittest/hal-api-common-hook.c b/tests/unittest/hal-api-common-hook.c index c55b1cc..268c955 100644 --- a/tests/unittest/hal-api-common-hook.c +++ b/tests/unittest/hal-api-common-hook.c @@ -34,7 +34,7 @@ static int hal_backend_exit(void *data) { return 0; } hal_backend hal_backend_module_data = { .name = "hal-backend-module", .vendor = "hal-backend-vendor", - .abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .abi_version = HAL_ABI_VERSION_TIZEN_7_5, .init = hal_backend_init, .exit = hal_backend_exit, }; diff --git a/tests/unittest/test-hal-api-common.cc b/tests/unittest/test-hal-api-common.cc index 9723266..c544e76 100644 --- a/tests/unittest/test-hal-api-common.cc +++ b/tests/unittest/test-hal-api-common.cc @@ -55,10 +55,10 @@ TEST(HalApiCommonTest, test_symbol_name_invalid_module) { TEST(HalApiCommonTest, test_check_backend_abi_version_invalid_parameter) { int ret; - ret = hal_common_check_backend_abi_version(HAL_MODULE_UNKNOWN, HAL_ABI_VERSION_TIZEN_7_0); + ret = hal_common_check_backend_abi_version(HAL_MODULE_UNKNOWN, HAL_ABI_VERSION_TIZEN_7_5); EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); - ret = hal_common_check_backend_abi_version(HAL_MODULE_END, HAL_ABI_VERSION_TIZEN_7_0); + ret = hal_common_check_backend_abi_version(HAL_MODULE_END, HAL_ABI_VERSION_TIZEN_7_5); EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); ret = hal_common_check_backend_abi_version(HAL_MODULE_TBM, HAL_ABI_VERSION_UNKNOWN); @@ -117,7 +117,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-tbm.so", "hal_backend_tbm_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -131,7 +131,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-tdm.so", "hal_backend_tdm_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -167,7 +167,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-audio.so", "hal_backend_audio_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -181,7 +181,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-camera.so", "hal_backend_camera_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -195,7 +195,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-radio.so", "hal_backend_radio_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -242,7 +242,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-bluetooth.so", "hal_backend_bluetooth_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -256,7 +256,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-wifi.so", "hal_backend_wifi_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -281,7 +281,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-nfc.so", "hal_backend_nfc_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -295,7 +295,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-zigbee.so", "hal_backend_zigbee_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -309,7 +309,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-uwb.so", "hal_backend_uwb_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -345,7 +345,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-location.so", "hal_backend_location_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -370,7 +370,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-power.so", "hal_backend_power_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -384,7 +384,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-sensor.so", "hal_backend_sensor_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -408,7 +408,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-battery.so", "hal_backend_device_battery_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -422,7 +422,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-bezel.so", "hal_backend_device_bezel_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -436,7 +436,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-display.so", "hal_backend_device_display_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -450,7 +450,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-ir.so", "hal_backend_device_ir_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -464,7 +464,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-touchscreen.so", "hal_backend_device_touchscreen_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -478,7 +478,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-led.so", "hal_backend_device_led_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -492,7 +492,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-board.so", "hal_backend_device_board_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -506,7 +506,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-external-connection.so", "hal_backend_device_external_connection_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -520,7 +520,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-thermal.so", "hal_backend_device_thermal_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -534,7 +534,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-usb-gadget.so", "hal_backend_device_usb_gadget_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -548,7 +548,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-haptic.so", "hal_backend_device_haptic_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ), @@ -562,7 +562,7 @@ INSTANTIATE_TEST_CASE_P(HalApiCommonTest, "/hal/lib64/libhal-backend-device-memory.so", "hal_backend_device_memory_data", vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 }} ) -- 2.7.4 From c7bcb2226a1c0b28d503cdfbd0acc91e6a068d92 Mon Sep 17 00:00:00 2001 From: Yunhee Seo Date: Tue, 13 Dec 2022 14:41:42 +0900 Subject: [PATCH 05/16] halapi: common: add DEVICE_INPUT HAL module Add DEVICE_INPUT HAL module to control the input device. Change-Id: Iddb6457850cfe9ce36cb9f20db6dedc7e894a9a4 Signed-off-by: Yunhee Seo --- include/hal-common.h | 1 + src/hal-api-list.h | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/hal-common.h b/include/hal-common.h index 4c197fe..3f2826b 100644 --- a/include/hal-common.h +++ b/include/hal-common.h @@ -74,6 +74,7 @@ enum hal_module { HAL_MODULE_DEVICE_USB_GADGET, HAL_MODULE_DEVICE_HAPTIC, HAL_MODULE_DEVICE_MEMORY, + HAL_MODULE_DEVICE_INPUT, /* * TODO: If need to add new module, have to add it below diff --git a/src/hal-api-list.h b/src/hal-api-list.h index d2fa20e..b3ccf97 100644 --- a/src/hal-api-list.h +++ b/src/hal-api-list.h @@ -267,6 +267,13 @@ static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_A .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5, }, }, + [HAL_MODULE_DEVICE_INPUT] = { + /* FIXME: Need to be initialized by configuration file like xml */ + [0] = { + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + }, + }, }; static struct __hal_module_info g_hal_module_info[] = { @@ -736,6 +743,19 @@ static struct __hal_module_info g_hal_module_info[] = { .abi_versions = abi_version_match_data[HAL_MODULE_DEVICE_MEMORY], .hal_api = true, }, + [HAL_MODULE_DEVICE_INPUT] = { + .group = HAL_GROUP_SYSTEM, + .module = HAL_MODULE_DEVICE_INPUT, + .license = HAL_LICENSE_APACHE_2_0, + .module_name = "HAL_MODULE_DEVICE_INPUT", + .backend_module_name = "device-input", + .library_name = "/hal/lib/libhal-backend-device-input.so", + .library_name_64bit = "/hal/lib64/libhal-backend-device-input.so", + .symbol_name = "hal_backend_device_input_data", + .num_abi_versions = ARRAY_SIZE(abi_version_match_data[HAL_MODULE_DEVICE_INPUT]), + .abi_versions = abi_version_match_data[HAL_MODULE_DEVICE_INPUT], + .hal_api = true, + }, }; #endif /* __HAL_API_LIST_H__ */ -- 2.7.4 From c1a19d673aaf1f73e5cb339661d8376000cbdac8 Mon Sep 17 00:00:00 2001 From: TaeminYeom Date: Thu, 1 Dec 2022 18:28:28 +0900 Subject: [PATCH 06/16] halapi: common: add device power interface To add device wakeup source function in device hal, it is needed. Change-Id: I23d23f758134bea3bc02c488154a737f3e85c1d1 Signed-off-by: TaeminYeom --- include/hal-common.h | 1 + src/hal-api-list.h | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/hal-common.h b/include/hal-common.h index 3f2826b..6b632bb 100644 --- a/include/hal-common.h +++ b/include/hal-common.h @@ -75,6 +75,7 @@ enum hal_module { HAL_MODULE_DEVICE_HAPTIC, HAL_MODULE_DEVICE_MEMORY, HAL_MODULE_DEVICE_INPUT, + HAL_MODULE_DEVICE_POWER, /* * TODO: If need to add new module, have to add it below diff --git a/src/hal-api-list.h b/src/hal-api-list.h index b3ccf97..f928543 100644 --- a/src/hal-api-list.h +++ b/src/hal-api-list.h @@ -274,6 +274,13 @@ static struct hal_abi_version_match abi_version_match_data[HAL_MODULE_END][HAL_A .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_7_0, }, }, + [HAL_MODULE_DEVICE_POWER] = { + /* FIXME: Need to be initialized by configuration file like xml */ + [0] = { + .platform_abi_version = HAL_ABI_VERSION_TIZEN_7_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_7_0, + }, + }, }; static struct __hal_module_info g_hal_module_info[] = { @@ -756,6 +763,19 @@ static struct __hal_module_info g_hal_module_info[] = { .abi_versions = abi_version_match_data[HAL_MODULE_DEVICE_INPUT], .hal_api = true, }, + [HAL_MODULE_DEVICE_POWER] = { + .group = HAL_GROUP_SYSTEM, + .module = HAL_MODULE_DEVICE_POWER, + .license = HAL_LICENSE_APACHE_2_0, + .module_name = "HAL_MODULE_DEVICE_POWER", + .backend_module_name = "device-power", + .library_name = "/hal/lib/libhal-backend-device-power.so", + .library_name_64bit = "/hal/lib64/libhal-backend-device-power.so", + .symbol_name = "hal_backend_device_power_data", + .num_abi_versions = ARRAY_SIZE(abi_version_match_data[HAL_MODULE_DEVICE_POWER]), + .abi_versions = abi_version_match_data[HAL_MODULE_DEVICE_POWER], + .hal_api = true, + }, }; #endif /* __HAL_API_LIST_H__ */ -- 2.7.4 From e4b9e661e0e318a2794034ef24e1b0295c59e882 Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Thu, 22 Dec 2022 12:22:54 +0900 Subject: [PATCH 07/16] hal-api: common: fix the error handling path Before calling hal_api_conf_exit(), it needs to call close_backend(). Otherwise, hal_api_conf_exit will call free(info) before info->backend/handle. Change-Id: If9b3b66d3bb7c9e5d92ebd565815c13bde4babdb Signed-off-by: Jaehoon Chung --- src/hal-api-common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal-api-common.c b/src/hal-api-common.c index d11226b..47f033b 100644 --- a/src/hal-api-common.c +++ b/src/hal-api-common.c @@ -320,8 +320,8 @@ static int __get_backend(enum hal_module module, void **data, return 0; err_dlclose: - _hal_api_conf_exit(); __close_backend(info); + _hal_api_conf_exit(); err: G_UNLOCK(hal_common_lock); return ret; -- 2.7.4 From 7651abc3a41828128d934c79776db281c503fe6f Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Wed, 15 Mar 2023 18:33:04 +0900 Subject: [PATCH 08/16] systemd-hal-firmware-generator: Fix wrong firmware loading path Change-Id: Id83b9b295f878b08eaad41501e779703afa04260 Signed-off-by: Chanwoo Choi --- packaging/systemd-hal-firmware-generator | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/systemd-hal-firmware-generator b/packaging/systemd-hal-firmware-generator index b8f3dd7..0932e57 100644 --- a/packaging/systemd-hal-firmware-generator +++ b/packaging/systemd-hal-firmware-generator @@ -2,4 +2,4 @@ PATH=/bin:/usr/bin:/sbin:/usr/sbin -echo "/hal/lib/firmware" > /sys/module/firmware_class/parameters/path +echo -n "/hal/lib/firmware" > /sys/module/firmware_class/parameters/path -- 2.7.4 From 42a360e4ac10d9ca5990814cbccb4d67ffdc7a1b Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Tue, 14 Mar 2023 06:31:58 +0900 Subject: [PATCH 09/16] halapi: common: Remove unused variables on _get_module_info_with_library_name Change-Id: I5bb8472601d010a7e7b0e8d8e7b56f191c1d543b Signed-off-by: Chanwoo Choi --- src/hal-api-conf.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/hal-api-conf.c b/src/hal-api-conf.c index 9495d3b..064ff5f 100644 --- a/src/hal-api-conf.c +++ b/src/hal-api-conf.c @@ -62,10 +62,7 @@ static struct __hal_module_info* _get_module_info_with_library_name(enum hal_mod const char *library_name) { struct __hal_module_info *info = NULL, *new_info = NULL, *tmp_info = NULL; - const char *group_name = NULL; - const char *module_name = NULL; char *library_name_prefix = NULL; - int ret; if (!_module_hash || !library_name) return NULL; -- 2.7.4 From 82c338c4db17f1517e3efec3e4c482034f4b6b0d Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Fri, 7 Apr 2023 11:23:01 +0900 Subject: [PATCH 10/16] halapi: Fix mismatch by closing backend Change-Id: I1bd0d6548551a35cb9c993dfc6f3094d87c8bcca Signed-off-by: Chanwoo Choi --- src/hal-api-common.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/hal-api-common.c b/src/hal-api-common.c index 47f033b..64d0f83 100644 --- a/src/hal-api-common.c +++ b/src/hal-api-common.c @@ -430,7 +430,7 @@ static int __get_backend_data(enum hal_module module, unsigned int *abi_version, if (!info->backend->name || (len + 1 > name_size)) { _E("%s: Invalid size of name[] array\n", info->module_name); ret = -EINVAL; - goto err_conf_exit; + goto err_close_backend; } strncpy(name, info->backend->name, len); @@ -443,7 +443,7 @@ static int __get_backend_data(enum hal_module module, unsigned int *abi_version, if (!info->backend->vendor || (len + 1 > vendor_size)) { _E("%s: Invalid size of vendor[] array\n", info->module_name); ret = -EINVAL; - goto err_conf_exit; + goto err_close_backend; } strncpy(vendor, info->backend->vendor, len); @@ -451,10 +451,12 @@ static int __get_backend_data(enum hal_module module, unsigned int *abi_version, } else { _E("%s: Failed to get backend data\n", info->module_name); ret = -EINVAL; - goto err_conf_exit; + goto err_close_backend; } ret = 0; +err_close_backend: + __close_backend(info); err_conf_exit: _hal_api_conf_exit(); err_unlock: -- 2.7.4 From 522f2f536f5b9f4570dced1a6ee97cb6ff7f684f Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Mon, 27 Mar 2023 07:47:26 +0900 Subject: [PATCH 11/16] halapi: Add missing exception handling of hal_common_get_backend_library_name Change-Id: I9832ecce9923cfdd45196293c3af16bff1358ae5 Signed-off-by: Chanwoo Choi --- src/hal-api-common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal-api-common.c b/src/hal-api-common.c index 64d0f83..babc61c 100644 --- a/src/hal-api-common.c +++ b/src/hal-api-common.c @@ -72,7 +72,7 @@ int hal_common_get_backend_library_name(enum hal_module module, char *name, int } len_library_name = strlen(library_name); - if (!name || (len_library_name + 1 > size)) { + if (!name || (len_library_name + 1 > size) || len_library_name == 0) { ret = -EINVAL; name = NULL; goto out; -- 2.7.4 From 5d2ce093a0c4d6c97a4dabf9ab67d5eff5450d9c Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Wed, 29 Mar 2023 01:57:19 +0900 Subject: [PATCH 12/16] halapi: Add new hal_common_get_backend_module_name function Add new hal_common_get_backend_module_name function in order to provide the HAL module name [Detailed function prototype] - int hal_common_get_backend_module_name(enum hal_module module, char *name, int size); Change-Id: I521846db3917571ea7cfa00dd701dd9e8c7c97a2 Signed-off-by: Chanwoo Choi --- include/hal-common.h | 9 +++++++++ src/hal-api-common.c | 49 +++++++++++++++++++++++++++++++++++++------------ 2 files changed, 46 insertions(+), 12 deletions(-) diff --git a/include/hal-common.h b/include/hal-common.h index 6b632bb..f4dd4c4 100644 --- a/include/hal-common.h +++ b/include/hal-common.h @@ -104,6 +104,15 @@ int hal_common_get_backend_library_name(enum hal_module module, char *name, int int hal_common_get_backend_symbol_name(enum hal_module module, char *name, int size); /** + * @brief Get the backend module name according to the type of HAL module + * @param[in] HAL module id among enum hal_moudle + * @param[out] Backend module name of HAL module + * @param[in] Arrary size of name[] + * @return @c 0 on success, otherwise a negative error value + */ +int hal_common_get_backend_module_name(enum hal_module module, char *name, int size); + +/** * @brief Get the backend data according to the type of HAL module * @param[in] HAL module id among enum hal_moudle * @param[out] Data pointer where 'hal_backend_[module]_funcs' instance diff --git a/src/hal-api-common.c b/src/hal-api-common.c index babc61c..0984ef8 100644 --- a/src/hal-api-common.c +++ b/src/hal-api-common.c @@ -37,6 +37,9 @@ extern char *program_invocation_name; #define EXPORT __attribute__ ((visibility("default"))) #endif +#define HAL_BACKEND_SYMBOL_NAME 1 +#define HAL_BACKEND_MODULE_NAME 2 + static enum hal_abi_version g_platform_curr_abi_version; G_LOCK_DEFINE_STATIC(hal_common_lock); @@ -87,13 +90,12 @@ out: return ret; } -EXPORT -int hal_common_get_backend_symbol_name(enum hal_module module, char *name, int size) +static int __hal_common_get_backend_name(enum hal_module module, char *name, int size, int name_type) { struct __hal_module_info *info = NULL; - char *symbol_name = NULL; + char *str = NULL; int ret; - int len_symbol_name; + int len_str; /* Check parameter whether is valid or not */ if (module <= HAL_MODULE_UNKNOWN || module >= HAL_MODULE_END) { @@ -110,21 +112,32 @@ int hal_common_get_backend_symbol_name(enum hal_module module, char *name, int s ret = -EINVAL; goto out; } - symbol_name = info->symbol_name; - if (!symbol_name) { - _E("%s backend symbol name is NULL\n", info->module_name); + + switch (name_type) { + case HAL_BACKEND_SYMBOL_NAME: + str = info->symbol_name; + break; + case HAL_BACKEND_MODULE_NAME: + str = info->module_name; + break; + default: + break; + } + + if (!str) { + _I("%s backend name is NULL\n", info->module_name); ret = 0; goto out; } - len_symbol_name = strlen(symbol_name); - if (!name || (len_symbol_name + 1 > size)) { + len_str = strlen(str); + if (!str || (len_str + 1 > size) || len_str == 0) { ret = -EINVAL; - name = NULL; + str = NULL; goto out; } - strncpy(name, symbol_name, len_symbol_name); - name[len_symbol_name] = '\0'; + strncpy(name, str, len_str); + name[len_str] = '\0'; ret = 0; out: @@ -133,6 +146,18 @@ out: return ret; } +EXPORT +int hal_common_get_backend_symbol_name(enum hal_module module, char *name, int size) +{ + return __hal_common_get_backend_name(module, name, size, HAL_BACKEND_SYMBOL_NAME); +} + +EXPORT +int hal_common_get_backend_module_name(enum hal_module module, char *name, int size) +{ + return __hal_common_get_backend_name(module, name, size, HAL_BACKEND_MODULE_NAME); +} + static int __open_backend(struct __hal_module_info *info) { const char *backend_library_name = NULL; -- 2.7.4 From e1a40bc9515af39043f3b1cafd385f1c7fc0915b Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Tue, 14 Mar 2023 06:17:42 +0900 Subject: [PATCH 13/16] tools: Add lshal tool to get hal backends Provide lshal to get the detailed informaiton of hal backends on device. [Description of each attribute of lshal tool] - HAL Module Name : HAL Module Name (fixed, not be changed) - ID : HAL Module Unique ID (fixed, not be changed) - Backend Library Name : HAL Backend Library Name (fixed, not be changed) - Backend Open Count : HAL Backend Open Count (it's changed according to user count) - Backend Verification : If there is HAL backend, print "YES". : If HAL backend is verified (get/put_backen), print "VERIFIED". - Backend Symbol Name : HAL Backend Symbol Name (fixed, not be changed) - Backend ABI Version : HAL Backend ABI Version (Written by Backend Developer) - Backend Name : HAL Backend Name (Written by Backend Developer) - Vendor Name : HAL Backend Vendor Name (Written by Backend Developer) - TOTAL : The number of HAL modules and backends [Example on rpi4 armv7l environment] root:~> lshal --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | Backend | Backend | Backend | Backend ABI Version | Backend Name | Vendor Name | HAL Module Name | ID | Backend Library Name | Open Count | Verification | Symbol Name | (Written by Developer) | (Written by Developer) | (Written by Developer) | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- HAL_MODULE_TBM | 1 | /hal/lib/libhal-backend-tbm.so | 4 | YES | VERIFIED | hal_backend_tbm_data | HAL_ABI_VERSION_TIZEN_6_5 | vc4 | Samsung | HAL_MODULE_TDM | 2 | /hal/lib/libhal-backend-tdm.so | 2 | YES | VERIFIED | hal_backend_tdm_data | HAL_ABI_VERSION_TIZEN_6_5 | vc4 | Samsung | HAL_MODULE_COREGL | 3 | | | | | | | | | HAL_MODULE_INPUT | 4 | | | | | | | | | HAL_MODULE_AUDIO | 5 | /hal/lib/libhal-backend-audio.so | 1 | YES | VERIFIED | hal_backend_audio_data | HAL_ABI_VERSION_TIZEN_6_5 | audio-rpi | Broadcom | HAL_MODULE_CAMERA | 6 | /hal/lib/libhal-backend-camera.so | 1 | YES | VERIFIED | hal_backend_camera_data | HAL_ABI_VERSION_TIZEN_6_5 | camera-v4l2 | TIZEN | HAL_MODULE_RADIO | 7 | /hal/lib/libhal-backend-radio.so | 0 | NO | | hal_backend_radio_data | | | | HAL_MODULE_CODEC | 8 | | | | | | | | | HAL_MODULE_USB_AUDIO | 9 | | | | | | | | | HAL_MODULE_ALSAUCM | 10 | | | | | | | | | HAL_MODULE_BLUETOOTH | 11 | /hal/lib/libhal-backend-bluetooth.so | 1 | YES | VERIFIED | hal_backend_bluetooth_data | HAL_ABI_VERSION_TIZEN_6_5 | bluetooth | broadcom | HAL_MODULE_WIFI | 12 | /hal/lib/libhal-backend-wifi.so | 0 | NO | | hal_backend_wifi_data | | | | HAL_MODULE_NAN | 13 | | | | | | | | | HAL_MODULE_NFC | 14 | /hal/lib/libhal-backend-nfc.so | 0 | NO | | hal_backend_nfc_data | | | | HAL_MODULE_ZIGBEE | 15 | /hal/lib/libhal-backend-zigbee.so | 0 | NO | | hal_backend_zigbee_data | | | | HAL_MODULE_UWB | 16 | /hal/lib/libhal-backend-uwb.so | 0 | NO | | hal_backend_uwb_data | | | | HAL_MODULE_MTP | 17 | | | | | | | | | HAL_MODULE_TELEPHONY | 18 | | | | | | | | | HAL_MODULE_LOCATION | 19 | /hal/lib/libhal-backend-location.so | 3 | YES | VERIFIED | hal_backend_location_data | HAL_ABI_VERSION_TIZEN_6_5 | location-backend | replay | HAL_MODULE_COMMON | 20 | | | | | | | | | HAL_MODULE_POWER | 21 | /hal/lib/libhal-backend-power.so | 1 | YES | VERIFIED | hal_backend_power_data | HAL_ABI_VERSION_TIZEN_6_5 | power-rpi4 | Rasberry Pi | HAL_MODULE_SENSOR | 22 | /hal/lib/libhal-backend-sensor.so | 0 | NO | | hal_backend_sensor_data | | | | HAL_MODULE_PERIPHERAL | 23 | | | | | | | | | HAL_MODULE_DEVICE_BATTERY | 24 | /hal/lib/libhal-backend-device-battery.so | 0 | NO | | hal_backend_device_battery_data | | | | HAL_MODULE_DEVICE_BEZEL | 25 | /hal/lib/libhal-backend-device-bezel.so | 0 | NO | | hal_backend_device_bezel_data | | | | HAL_MODULE_DEVICE_DISPLAY | 26 | /hal/lib/libhal-backend-device-display.so | 2 | YES | VERIFIED | hal_backend_device_display_data | HAL_ABI_VERSION_TIZEN_7_0 | display | RPI | HAL_MODULE_DEVICE_IR | 27 | /hal/lib/libhal-backend-device-ir.so | 0 | NO | | hal_backend_device_ir_data | | | | HAL_MODULE_DEVICE_TOUCHSCREEN | 28 | /hal/lib/libhal-backend-device-touchscreen.so | 1 | YES | VERIFIED | hal_backend_device_touchscreen_data | HAL_ABI_VERSION_TIZEN_7_0 | touchscreen | RPI | HAL_MODULE_DEVICE_LED | 29 | /hal/lib/libhal-backend-device-led.so | 1 | YES | VERIFIED | hal_backend_device_led_data | HAL_ABI_VERSION_TIZEN_7_0 | led | RPI | HAL_MODULE_DEVICE_BOARD | 30 | /hal/lib/libhal-backend-device-board.so | 1 | YES | VERIFIED | hal_backend_device_board_data | HAL_ABI_VERSION_TIZEN_7_0 | board | RPI | HAL_MODULE_DEVICE_EXTERNAL_CONNECTION | 31 | /hal/lib/libhal-backend-device-external-connection.so | 0 | NO | | hal_backend_device_external_connection_data | | | | HAL_MODULE_DEVICE_THERMAL | 32 | /hal/lib/libhal-backend-device-thermal.so | 1 | YES | VERIFIED | hal_backend_device_thermal_data | HAL_ABI_VERSION_TIZEN_7_0 | thermal | RPI | HAL_MODULE_DEVICE_USB_GADGET | 33 | /hal/lib/libhal-backend-device-usb-gadget.so | 0 | NO | | hal_backend_device_usb_gadget_data | | | | HAL_MODULE_DEVICE_HAPTIC | 34 | /hal/lib/libhal-backend-device-haptic.so | 1 | YES | VERIFIED | hal_backend_device_haptic_data | HAL_ABI_VERSION_TIZEN_7_0 | haptic | RPI | HAL_MODULE_DEVICE_MEMORY | 35 | /hal/lib/libhal-backend-device-memory.so | 1 | YES | VERIFIED | hal_backend_device_memory_data | HAL_ABI_VERSION_TIZEN_7_0 | memory | RPI | HAL_MODULE_DEVICE_INPUT | 36 | /hal/lib/libhal-backend-device-input.so | 0 | NO | | hal_backend_device_input_data | | | | HAL_MODULE_DEVICE_POWER | 37 | /hal/lib/libhal-backend-device-power.so | 0 | NO | | hal_backend_device_power_data | | | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- TOTAL | 37 | | | 14 | | | | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Change-Id: Id8246ff25d6cabf785b3fd1c6f24b1a1749daf0f Signed-off-by: Chanwoo Choi --- CMakeLists.txt | 2 + packaging/hal-api-common.spec | 1 + tools/lshal/CMakeLists.txt | 33 +++++++ tools/lshal/lshal.c | 224 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 260 insertions(+) create mode 100644 tools/lshal/CMakeLists.txt create mode 100644 tools/lshal/lshal.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 5979e5a..5fcd8e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,3 +61,5 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/hal-rpmdb-checker.conf DESTINATION /usr/lib/tmpfiles.d) ADD_SUBDIRECTORY(tests) + +ADD_SUBDIRECTORY(tools/lshal) diff --git a/packaging/hal-api-common.spec b/packaging/hal-api-common.spec index 0163bc4..058f19c 100644 --- a/packaging/hal-api-common.spec +++ b/packaging/hal-api-common.spec @@ -105,6 +105,7 @@ systemd-tmpfiles /usr/lib/tmpfiles.d/hal-rpmdb-checker.conf --create %defattr(-,root,root,-) %dir /hal %{_libdir}/hal/*.so* +%{_bindir}/lshal %{_sysconfdir}/ld.so.conf.d/libhal-api.conf %{_systemdgeneratordir}/systemd-hal-firmware-generator diff --git a/tools/lshal/CMakeLists.txt b/tools/lshal/CMakeLists.txt new file mode 100644 index 0000000..d5efa00 --- /dev/null +++ b/tools/lshal/CMakeLists.txt @@ -0,0 +1,33 @@ +PROJECT(lshal C CXX) + +SET(SRCS + ${CMAKE_SOURCE_DIR}/src/hal-api-common.c + ${CMAKE_SOURCE_DIR}/src/hal-api-conf.c +) + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) + +INCLUDE(FindPkgConfig) +pkg_check_modules(gtest_pkgs REQUIRED + gio-2.0 + glib-2.0 + dlog +) + +FOREACH(flag ${gtest_pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wall -fPIE") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") + +SET(src ${CMAKE_SOURCE_DIR}/tools/lshal/lshal.c) +GET_FILENAME_COMPONENT(src_name ${src} NAME_WE) +MESSAGE("${src_name}") +ADD_EXECUTABLE(${src_name} ${SRCS} ${src}) +TARGET_LINK_LIBRARIES(${src_name} ${gtest_LDFLAGS} ${gtest_pkgs_LDFLAGS} -ldl) +INSTALL(TARGETS ${src_name} DESTINATION /usr/bin/) diff --git a/tools/lshal/lshal.c b/tools/lshal/lshal.c new file mode 100644 index 0000000..fa4491b --- /dev/null +++ b/tools/lshal/lshal.c @@ -0,0 +1,224 @@ +/* + * lshal Tool + * + * Copyright (c) 2023 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "hal-common.h" +#include "hal-common-interface.h" + +#include "hal-api-conf.h" + +#define BIT(x) (1ULL << x) +#define BUFF_MAX 256 + +#define LSHAL_FLAG_BACKEND_VERIFICATION BIT(0) +#define LSHAL_FLAG_BACKEND_MODULE_NAME BIT(1) +#define LSHAL_FLAG_BACKEND_LIB_NAME BIT(2) +#define LSHAL_FLAG_BACKEND_SYMBOL_NAME BIT(3) +#define LSHAL_FLAG_BACKEND_NAME BIT(4) +#define LSHAL_FLAG_BACKEND_VENDOR_NAME BIT(5) +#define LSHAL_FLAG_BACKEND_USAGE_COUNT BIT(6) +#define LSHAL_FLAG_BACKEND_ABI_VERSION BIT(7) + +struct _hal_backend_module_data { + /** + * Each HAL module defines the different backend_module_data. + * In order to test the all HAL backends, just use the large buffer. + */ + void *unused_buffer[10000]; +} *backend_module_data; + +static int lshal_verify_hal_backend(enum hal_module module) +{ + int ret; + + ret = hal_common_get_backend(module, (void **)&backend_module_data); + if (ret < 0) + return ret; + + ret = hal_common_put_backend(module, backend_module_data); + if (ret < 0) + return ret; + + return 0; +} + +static void lshal_print_border(void) { + for (int i = 0; i < 267; i++) + printf("-"); + printf("\n"); +} + +static void lshal_print_hal_backend_info(u_int32_t flags) { + int ret; + enum hal_module module; + char str[BUFF_MAX]; + int backend_verification_count = 0; + + lshal_print_border(); + printf(" %-38s | | %-55s | %-10s | %-15s | %-45s | %-25s | %-25s | %-25s |\n", + "", + "", + "Backend", + "Backend", + "Backend", + "Backend ABI Version", + "Backend Name", + "Vendor Name"); + + printf(" %-38s | ID | %-55s | %-10s | %-15s | %-45s | %-25s | %-25s | %-25s |\n", + "HAL Module Name", + "Backend Library Name", + "Open Count", + "Verification", + "Symbol Name", + "(Written by Developer)", + "(Written by Developer)", + "(Written by Developer)"); + lshal_print_border(); + + for (module = HAL_MODULE_UNKNOWN + 1; module < HAL_MODULE_END; module++) { + if (LSHAL_FLAG_BACKEND_MODULE_NAME | flags) { + strncpy(str, "", BUFF_MAX - 1); + + ret = hal_common_get_backend_module_name(module, str, BUFF_MAX - 1); + if (ret < 0) + printf(" %-38s | %-2d |", "", module); + else + printf(" %-38s | %-2d |", str, module); + } + + if (LSHAL_FLAG_BACKEND_LIB_NAME | flags) { + strncpy(str, "", BUFF_MAX - 1); + + ret = hal_common_get_backend_library_name(module, str, BUFF_MAX - 1); + if (ret < 0) + printf(" %-55s |", ""); + else + printf(" %-55s |", str); + } + + if (LSHAL_FLAG_BACKEND_USAGE_COUNT | flags) { + int count = hal_common_get_backend_count(module); + if (count < 0) + printf(" %-10s |", ""); + else + printf(" %-10d |", count); + } + + if (LSHAL_FLAG_BACKEND_VERIFICATION | flags) { + ret = lshal_verify_hal_backend(module); + + if (ret == -ENOENT) { + printf(" %-15s |", "NO |"); + } else if (ret < 0) { + printf(" %-15s |", " |"); + } else { + printf(" %-15s |", "YES | VERIFIED"); + backend_verification_count++; + } + } + + if (LSHAL_FLAG_BACKEND_SYMBOL_NAME | flags) { + strncpy(str, "", BUFF_MAX - 1); + + ret = hal_common_get_backend_symbol_name(module, str, BUFF_MAX - 1); + if (ret < 0) + printf(" %-45s |", ""); + else + printf(" %-45s |", str); + } + + if (LSHAL_FLAG_BACKEND_ABI_VERSION | flags) { + strncpy(str, "", BUFF_MAX - 1); + + ret = hal_common_get_backend_abi_version(module); + if (ret == HAL_ABI_VERSION_UNKNOWN) + printf(" %-25s |", ""); + else + printf(" %-25s |", hal_abi_version_str[ret]); + } + + if (LSHAL_FLAG_BACKEND_NAME | flags) { + strncpy(str, "", BUFF_MAX - 1); + + ret = hal_common_get_backend_name(module, str, BUFF_MAX - 1); + if (ret < 0) + printf(" %-25s |", ""); + else + printf(" %-25s |", str); + } + + if (LSHAL_FLAG_BACKEND_VENDOR_NAME | flags) { + strncpy(str, "", BUFF_MAX - 1); + + ret = hal_common_get_backend_vendor(module, str, BUFF_MAX - 1); + if (ret < 0) + printf(" %-25s |", ""); + else + printf(" %-25s |", str); + } + + printf("\n"); + } + + lshal_print_border(); + printf(" %-38s | %-2d | %-55s | %-10s | %15d | %-45s | %-25s | %-25s | %-25s |\n", + "TOTAL", + HAL_MODULE_END - 1, + "", + "", + backend_verification_count, + "", + "", + "", + ""); + lshal_print_border(); +} + +static void lshal_handle_signal(int signal) {} + +static void lshal(void) +{ + u_int32_t flags = (LSHAL_FLAG_BACKEND_VERIFICATION + | LSHAL_FLAG_BACKEND_LIB_NAME + | LSHAL_FLAG_BACKEND_SYMBOL_NAME + | LSHAL_FLAG_BACKEND_NAME + | LSHAL_FLAG_BACKEND_VENDOR_NAME + | LSHAL_FLAG_BACKEND_USAGE_COUNT); + + lshal_print_hal_backend_info(flags); +} + +int main(int argc, char *argv[]) +{ + /* Register signal handler for freeing resources */ + signal(SIGINT, lshal_handle_signal); + + lshal(); + + return 0; +} -- 2.7.4 From 9746f25a833ac7ac450263458e8896702f489df0 Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Fri, 21 Apr 2023 11:04:15 +0900 Subject: [PATCH 14/16] tools: lshal: Fix wrong operation when checking flag is set or not When using bit operation for flag, should use 'and' operation. But, lshal.c used the wrong operation. It fix the operatin from 'or' to 'and'. Change-Id: I3a2badb8c61f73a6fc8d98b737fa6d7d4134c9eb Signed-off-by: Chanwoo Choi --- tools/lshal/lshal.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/lshal/lshal.c b/tools/lshal/lshal.c index fa4491b..1a25fc8 100644 --- a/tools/lshal/lshal.c +++ b/tools/lshal/lshal.c @@ -101,7 +101,7 @@ static void lshal_print_hal_backend_info(u_int32_t flags) { lshal_print_border(); for (module = HAL_MODULE_UNKNOWN + 1; module < HAL_MODULE_END; module++) { - if (LSHAL_FLAG_BACKEND_MODULE_NAME | flags) { + if (LSHAL_FLAG_BACKEND_MODULE_NAME & flags) { strncpy(str, "", BUFF_MAX - 1); ret = hal_common_get_backend_module_name(module, str, BUFF_MAX - 1); @@ -111,7 +111,7 @@ static void lshal_print_hal_backend_info(u_int32_t flags) { printf(" %-38s | %-2d |", str, module); } - if (LSHAL_FLAG_BACKEND_LIB_NAME | flags) { + if (LSHAL_FLAG_BACKEND_LIB_NAME & flags) { strncpy(str, "", BUFF_MAX - 1); ret = hal_common_get_backend_library_name(module, str, BUFF_MAX - 1); @@ -121,7 +121,7 @@ static void lshal_print_hal_backend_info(u_int32_t flags) { printf(" %-55s |", str); } - if (LSHAL_FLAG_BACKEND_USAGE_COUNT | flags) { + if (LSHAL_FLAG_BACKEND_USAGE_COUNT & flags) { int count = hal_common_get_backend_count(module); if (count < 0) printf(" %-10s |", ""); @@ -129,7 +129,7 @@ static void lshal_print_hal_backend_info(u_int32_t flags) { printf(" %-10d |", count); } - if (LSHAL_FLAG_BACKEND_VERIFICATION | flags) { + if (LSHAL_FLAG_BACKEND_VERIFICATION & flags) { ret = lshal_verify_hal_backend(module); if (ret == -ENOENT) { @@ -142,7 +142,7 @@ static void lshal_print_hal_backend_info(u_int32_t flags) { } } - if (LSHAL_FLAG_BACKEND_SYMBOL_NAME | flags) { + if (LSHAL_FLAG_BACKEND_SYMBOL_NAME & flags) { strncpy(str, "", BUFF_MAX - 1); ret = hal_common_get_backend_symbol_name(module, str, BUFF_MAX - 1); @@ -152,7 +152,7 @@ static void lshal_print_hal_backend_info(u_int32_t flags) { printf(" %-45s |", str); } - if (LSHAL_FLAG_BACKEND_ABI_VERSION | flags) { + if (LSHAL_FLAG_BACKEND_ABI_VERSION & flags) { strncpy(str, "", BUFF_MAX - 1); ret = hal_common_get_backend_abi_version(module); @@ -162,7 +162,7 @@ static void lshal_print_hal_backend_info(u_int32_t flags) { printf(" %-25s |", hal_abi_version_str[ret]); } - if (LSHAL_FLAG_BACKEND_NAME | flags) { + if (LSHAL_FLAG_BACKEND_NAME & flags) { strncpy(str, "", BUFF_MAX - 1); ret = hal_common_get_backend_name(module, str, BUFF_MAX - 1); @@ -172,7 +172,7 @@ static void lshal_print_hal_backend_info(u_int32_t flags) { printf(" %-25s |", str); } - if (LSHAL_FLAG_BACKEND_VENDOR_NAME | flags) { + if (LSHAL_FLAG_BACKEND_VENDOR_NAME & flags) { strncpy(str, "", BUFF_MAX - 1); ret = hal_common_get_backend_vendor(module, str, BUFF_MAX - 1); -- 2.7.4 From 28a766b1e13636421c19c601f85668d4505ce68a Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Thu, 27 Apr 2023 13:59:44 +0900 Subject: [PATCH 15/16] halapi: Add support of RISC-V architecture type Change-Id: I7a41b523735c10973702557734c59ddbde1c8cc3 Reported-by: Woochang Kim Tested-by: Woochang Kim Signed-off-by: Chanwoo Choi --- src/common.h | 2 +- src/hal-api-common.c | 2 +- src/hal-api-conf.c | 2 +- tests/unittest/test-hal-api-common.cc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/common.h b/src/common.h index 93f7090..e9c5621 100644 --- a/src/common.h +++ b/src/common.h @@ -118,7 +118,7 @@ static inline const char* get_backend_library_name(struct __hal_module_info *inf if (!info) return NULL; -#if defined(__aarch64__) || defined(__x86_64__) +#if defined(__aarch64__) || defined(__x86_64__) || defined (__riscv) return info->library_name_64bit; #else return info->library_name; diff --git a/src/hal-api-common.c b/src/hal-api-common.c index 0984ef8..02a1ad8 100644 --- a/src/hal-api-common.c +++ b/src/hal-api-common.c @@ -644,7 +644,7 @@ static int __get_backend_library_data(enum hal_module module, DIR *dir; char *backend_module_name = NULL; int count, i, ret, len; -#if defined(__aarch64__) || defined(__x86_64__) +#if defined(__aarch64__) || defined(__x86_64__) || defined (__riscv) const char hal_backend_path[] = "/hal/lib64"; #else const char hal_backend_path[] = "/hal/lib"; diff --git a/src/hal-api-conf.c b/src/hal-api-conf.c index 064ff5f..791ed29 100644 --- a/src/hal-api-conf.c +++ b/src/hal-api-conf.c @@ -115,7 +115,7 @@ static struct __hal_module_info* _get_module_info_with_library_name(enum hal_mod new_info->module = info->module; new_info->license = info->license; new_info->module_name = g_strdup(info->module_name); -#if defined(__aarch64__) || defined(__x86_64__) +#if defined(__aarch64__) || defined(__x86_64__) || defined(__riscv) new_info->library_name_64bit = g_strdup_printf("/hal/lib64/%s", library_name); #else new_info->library_name = g_strdup_printf("/hal/lib/%s", library_name); diff --git a/tests/unittest/test-hal-api-common.cc b/tests/unittest/test-hal-api-common.cc index c544e76..e2cd0d1 100644 --- a/tests/unittest/test-hal-api-common.cc +++ b/tests/unittest/test-hal-api-common.cc @@ -575,7 +575,7 @@ TEST_P(HalInfoMatchedTest, get_backend_library_name) { ret = hal_common_get_backend_library_name(info.module_, ret_library_name, MAX_BUFF); EXPECT_TRUE(ret == TIZEN_ERROR_NONE); -#if defined(__aarch64__) || defined(__x86_64__) +#if defined(__aarch64__) || defined(__x86_64__) || defined(__riscv) EXPECT_STREQ(info.library_name_64bit_, ret_library_name) << "module name is " << info.module_name_; #else EXPECT_STREQ(info.library_name_, ret_library_name) << "module name is " << info.module_name_; -- 2.7.4 From 9d972a8ff763c0f2faa7022ecfd7a3e3b998dfe9 Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Wed, 31 May 2023 14:19:49 +0900 Subject: [PATCH 16/16] Revert "halapi: Fix mismatch by closing backend" This reverts commit 82c338c4db17f1517e3efec3e4c482034f4b6b0d because it causes the system halt. Change-Id: I67a0ea9f324dfa46e894a3b49050eba972821cf3 Signed-off-by: Chanwoo Choi --- src/hal-api-common.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/hal-api-common.c b/src/hal-api-common.c index 02a1ad8..3520a58 100644 --- a/src/hal-api-common.c +++ b/src/hal-api-common.c @@ -455,7 +455,7 @@ static int __get_backend_data(enum hal_module module, unsigned int *abi_version, if (!info->backend->name || (len + 1 > name_size)) { _E("%s: Invalid size of name[] array\n", info->module_name); ret = -EINVAL; - goto err_close_backend; + goto err_conf_exit; } strncpy(name, info->backend->name, len); @@ -468,7 +468,7 @@ static int __get_backend_data(enum hal_module module, unsigned int *abi_version, if (!info->backend->vendor || (len + 1 > vendor_size)) { _E("%s: Invalid size of vendor[] array\n", info->module_name); ret = -EINVAL; - goto err_close_backend; + goto err_conf_exit; } strncpy(vendor, info->backend->vendor, len); @@ -476,12 +476,10 @@ static int __get_backend_data(enum hal_module module, unsigned int *abi_version, } else { _E("%s: Failed to get backend data\n", info->module_name); ret = -EINVAL; - goto err_close_backend; + goto err_conf_exit; } ret = 0; -err_close_backend: - __close_backend(info); err_conf_exit: _hal_api_conf_exit(); err_unlock: -- 2.7.4