[CRIU] [PATCH 03/12] x86: cpu -- Use bitwise operator for option check
Cyrill Gorcunov
gorcunov at gmail.com
Thu Aug 30 14:00:18 MSK 2018
Usually people simply leave cpu checkin in default
mode (which is fpu level) but idea was to be able
to compose a mixture of settings, for this sake
CPU_CAP_ constants are bit shifts. Thus use bitwise
operator for this.
Same time define CPU_CAP_ as bit shifts explicitly
and use explicit CPU_CAP_NONE compare where needed.
Signed-off-by: Cyrill Gorcunov <gorcunov at gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46 at gmaill.com>
---
criu/arch/x86/cpu.c | 6 +++---
criu/include/cr_options.h | 10 +++++-----
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/criu/arch/x86/cpu.c b/criu/arch/x86/cpu.c
index 9751261ab277..c59f9d63fe84 100644
--- a/criu/arch/x86/cpu.c
+++ b/criu/arch/x86/cpu.c
@@ -236,7 +236,7 @@ static int cpu_validate_features(compel_cpuinfo_t *cpu_info)
if (cpu_has_unsupported_features())
return -1;
- if (opts.cpu_cap == CPU_CAP_FPU) {
+ if (opts.cpu_cap & CPU_CAP_FPU) {
/*
* If we're requested to check FPU only ignore
* any other bit. It's up to a user if the
@@ -288,7 +288,7 @@ static int cpu_validate_features(compel_cpuinfo_t *cpu_info)
/*
* Capability on instructions level only.
*/
- if (opts.cpu_cap == CPU_CAP_INS)
+ if (opts.cpu_cap & CPU_CAP_INS)
return cpu_validate_ins_features(cpu_info);
/*
@@ -458,7 +458,7 @@ int cpuinfo_check(void)
* still allow to check instructions only
* and etc.
*/
- if (!opts.cpu_cap)
+ if (opts.cpu_cap == CPU_CAP_NONE)
opts.cpu_cap = CPU_CAP_ALL;
if (cpu_validate_cpuinfo())
diff --git a/criu/include/cr_options.h b/criu/include/cr_options.h
index 44588fce7a71..4de777be655e 100644
--- a/criu/include/cr_options.h
+++ b/criu/include/cr_options.h
@@ -24,11 +24,11 @@
/*
* CPU capability options.
*/
-#define CPU_CAP_NONE (0u)
-#define CPU_CAP_ALL (-1u)
-#define CPU_CAP_FPU (1u) /* Only FPU capability required */
-#define CPU_CAP_CPU (2u) /* Strict CPU capability required */
-#define CPU_CAP_INS (4u) /* Instructions CPU capability */
+#define CPU_CAP_NONE (0u << 0) /* Don't check capability at all */
+#define CPU_CAP_FPU (1u << 0) /* Only FPU capability required */
+#define CPU_CAP_CPU (1u << 1) /* Strict CPU capability required */
+#define CPU_CAP_INS (1u << 2) /* Instructions CPU capability */
+#define CPU_CAP_ALL (CPU_CAP_FPU | CPU_CAP_CPU | CPU_CAP_INS)
#define CPU_CAP_DEFAULT (CPU_CAP_FPU)
struct cg_root_opt {
--
2.17.1
More information about the CRIU
mailing list