Commit 18be1a83 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Andrei Vagin

compel: cpu -- Add ability to clear features

Will need them to mask some of the features from
command line options.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent f25f91e5
...@@ -26,3 +26,21 @@ bool compel_cpu_has_feature(unsigned int feature) ...@@ -26,3 +26,21 @@ bool compel_cpu_has_feature(unsigned int feature)
} }
return compel_test_cpu_cap(&rt_info, feature); return compel_test_cpu_cap(&rt_info, feature);
} }
void compel_cpu_clear_feature(unsigned int feature)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
return compel_clear_cpu_cap(&rt_info, feature);
}
void compel_cpu_copy_cpuinfo(compel_cpuinfo_t *c)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
memcpy(c, &rt_info, sizeof(rt_info));
}
...@@ -26,3 +26,21 @@ bool compel_cpu_has_feature(unsigned int feature) ...@@ -26,3 +26,21 @@ bool compel_cpu_has_feature(unsigned int feature)
} }
return compel_test_cpu_cap(&rt_info, feature); return compel_test_cpu_cap(&rt_info, feature);
} }
void compel_cpu_clear_feature(unsigned int feature)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
return compel_clear_cpu_cap(&rt_info, feature);
}
void compel_cpu_copy_cpuinfo(compel_cpuinfo_t *c)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
memcpy(c, &rt_info, sizeof(rt_info));
}
...@@ -40,3 +40,21 @@ bool compel_cpu_has_feature(unsigned int feature) ...@@ -40,3 +40,21 @@ bool compel_cpu_has_feature(unsigned int feature)
} }
return compel_test_cpu_cap(&rt_info, feature); return compel_test_cpu_cap(&rt_info, feature);
} }
void compel_cpu_clear_feature(unsigned int feature)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
return compel_clear_cpu_cap(&rt_info, feature);
}
void compel_cpu_copy_cpuinfo(compel_cpuinfo_t *c)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
memcpy(c, &rt_info, sizeof(rt_info));
}
...@@ -40,3 +40,21 @@ bool cpu_has_feature(unsigned int feature) ...@@ -40,3 +40,21 @@ bool cpu_has_feature(unsigned int feature)
} }
return compel_test_cpu_cap(&rt_info, feature); return compel_test_cpu_cap(&rt_info, feature);
} }
void compel_cpu_clear_feature(unsigned int feature)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
return compel_clear_cpu_cap(&rt_info, feature);
}
void compel_cpu_copy_cpuinfo(compel_cpuinfo_t *c)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
memcpy(c, &rt_info, sizeof(rt_info));
}
...@@ -233,3 +233,21 @@ bool compel_cpu_has_feature(unsigned int feature) ...@@ -233,3 +233,21 @@ bool compel_cpu_has_feature(unsigned int feature)
} }
return compel_test_cpu_cap(&rt_info, feature); return compel_test_cpu_cap(&rt_info, feature);
} }
void compel_cpu_clear_feature(unsigned int feature)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
return compel_clear_cpu_cap(&rt_info, feature);
}
void compel_cpu_copy_cpuinfo(compel_cpuinfo_t *c)
{
if (!rt_info_done) {
compel_cpuid(&rt_info);
rt_info_done = true;
}
memcpy(c, &rt_info, sizeof(rt_info));
}
...@@ -7,5 +7,7 @@ ...@@ -7,5 +7,7 @@
extern int compel_cpuid(compel_cpuinfo_t *info); extern int compel_cpuid(compel_cpuinfo_t *info);
extern bool compel_cpu_has_feature(unsigned int feature); extern bool compel_cpu_has_feature(unsigned int feature);
extern void compel_cpu_clear_feature(unsigned int feature);
extern void compel_cpu_copy_cpuinfo(compel_cpuinfo_t *c);
#endif /* UAPI_COMPEL_CPU_H__ */ #endif /* UAPI_COMPEL_CPU_H__ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment