halcc: Use major/minor version instead of abi version for checking compatibility 52/308952/1
authorYoungjae Cho <y0.cho@samsung.com>
Tue, 2 Apr 2024 06:48:13 +0000 (15:48 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Tue, 2 Apr 2024 07:38:54 +0000 (16:38 +0900)
Change-Id: Ib7fa6ed4e9a482ac5f9cdc356626444d3d762730
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
halcc/src/hal-compatibility-checker.c

index 38272f6af270b522faef3c31751a2666f9f38ce7..4bb91cbc9eab06c6037635ffdb98635c0c8ee875 100644 (file)
@@ -79,9 +79,13 @@ static int parse_directory(const char *manifest_dir, halcc_manifest *manifest)
        return 0;
 }
 
-static halcc_compatibility_e is_compatible(int major, int minor, unsigned int abi_version)
+static halcc_compatibility_e is_compatible(int platform_major, int platform_minor,
+       int backend_major, int backend_minor)
 {
-       if (abi_version == HAL_ABI_VERSION_UNKNOWN)
+       if (platform_major != backend_major)
+               return HALCC_INCOMPATIBLE;
+
+       if (platform_minor < backend_minor)
                return HALCC_INCOMPATIBLE;
 
        return HALCC_COMPATIBLE;
@@ -118,7 +122,7 @@ static void foreach_hal(void *data, void *user_data)
 
        for (module = HAL_MODULE_UNKNOWN; module < HAL_MODULE_END; ++module) {
                char module_name[128] = { 0 , };
-               unsigned int abi_version;
+               int backend_major, backend_minor;
                int ret;
 
                ret = hal_common_get_backend_module_name(module, module_name, sizeof(module_name));
@@ -129,11 +133,11 @@ static void foreach_hal(void *data, void *user_data)
                if (ret != 0)
                        continue;
 
-               abi_version = hal_common_get_backend_abi_version(module);
-               if (abi_version == HAL_ABI_VERSION_UNKNOWN)
-                       break;
+               ret = hal_common_get_backend_version(module, &backend_major, &backend_minor);
+               if (ret != 0)
+                       continue;
 
-               compatible = is_compatible(major, minor, abi_version);
+               compatible = is_compatible(major, minor, backend_major, backend_minor);
                break;
        }