mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-23 10:09:57 +00:00
Unlike pr_perror(), pr_err() does not append a newline. Signed-off-by: Kir Kolyshkin <kir@openvz.org> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
42 lines
934 B
C
42 lines
934 B
C
#include <sys/auxv.h>
|
|
#include <asm/cputable.h>
|
|
#include <errno.h>
|
|
#include <stdbool.h>
|
|
|
|
#include "compel-cpu.h"
|
|
|
|
#include "common/bitops.h"
|
|
|
|
#include "log.h"
|
|
|
|
#undef LOG_PREFIX
|
|
#define LOG_PREFIX "cpu: "
|
|
|
|
static compel_cpuinfo_t rt_info;
|
|
static bool rt_info_done = false;
|
|
|
|
void compel_set_cpu_cap(compel_cpuinfo_t *info, unsigned int feature) { }
|
|
void compel_clear_cpu_cap(compel_cpuinfo_t *info, unsigned int feature) { }
|
|
int compel_test_cpu_cap(compel_cpuinfo_t *info, unsigned int feature) { return 0; }
|
|
|
|
int compel_cpuid(compel_cpuinfo_t *info)
|
|
{
|
|
info->hwcap[0] = getauxval(AT_HWCAP);
|
|
info->hwcap[1] = getauxval(AT_HWCAP2);
|
|
|
|
if (!info->hwcap[0] || !info->hwcap[1]) {
|
|
pr_err("Can't read the hardware capabilities\n");
|
|
return -1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
bool compel_cpu_has_feature(unsigned int feature)
|
|
{
|
|
if (!rt_info_done) {
|
|
compel_cpuid(&rt_info);
|
|
rt_info_done = true;
|
|
}
|
|
return compel_test_cpu_cap(&rt_info, feature);
|
|
}
|