int num_version_list;
enum hal_common_backend_compatibility compatibility;
};
+static struct compatibility_info g_compatibility_info[HAL_MODULE_END];
static const char *compatibility_result_path = HAL_CC_DEFAULT_COMPATIBILITY_RESULT_PATH;
compatibility_result_path = HAL_CC_DEFAULT_COMPATIBILITY_RESULT_PATH;
}
+void reset_compatibility_info(void)
+{
+ memset(g_compatibility_info, 0, sizeof(g_compatibility_info));
+}
+
static int get_module_by_name(const char *name, enum hal_module *module)
{
int ret;
if (!info)
return -EINVAL;
+ if (g_compatibility_info[module].initialized) {
+ *info = g_compatibility_info[module];
+ return 0;
+ }
+
fd = open(compatibility_result_path, O_RDONLY, 0);
if (fd == -1)
return -errno;
if (!info->initialized)
return -ENODATA;
+ memcpy(&g_compatibility_info[module], info, sizeof(struct compatibility_info));
+
return 0;
}
if (!infos[index].initialized)
continue;
write_module_comaptibility_info(index, &infos[index]);
+ memcpy(&g_compatibility_info[module], &infos[index], sizeof(struct compatibility_info));
}
return 0;
void unset_compatibility_manifest_directory(void);
void set_compatibility_result_path(const char *path);
void unset_compatibility_result_path(void);
+void reset_compatibility_info(void);
#ifdef __cplusplus
}
unlink(g_compatibility_result_path);
unset_compatibility_result_path();
+ reset_compatibility_info();
unsetenv("SYSTEMD_SCOPE");
}
ASSERT_EQ(ret, -1);
unset_compatibility_result_path();
+ reset_compatibility_info();
}
TEST_F(HalccObjectTest, hal_check_compatibility_on_generator_context)
unlink(g_compatibility_result_path);
unset_compatibility_result_path();
+ reset_compatibility_info();
unsetenv("SYSTEMD_SCOPE");
}
mock_hal_backend_data_unset_version(HAL_MODULE_DEVICE_DISPLAY);
unset_compatibility_result_path();
+ reset_compatibility_info();
}
TEST_F(HalccObjectTest, hal_get_backend_with_generator_without_result_file)
unlink(g_compatibility_result_path);
unset_compatibility_result_path();
+ reset_compatibility_info();
unsetenv("SYSTEMD_SCOPE");
}
free(vi.minor_versions);
vi.minor_versions = NULL;
+
+ reset_compatibility_info();
}