# HG changeset patch # User Rob Hoes Add Cpuid.features_mask function. Signed-off-by: Rob Hoes diff -r 9ab11f4a89f1 cpuid/cpuid.ml --- a/cpuid/cpuid.ml Wed Mar 17 11:15:44 2010 +0000 +++ b/cpuid/cpuid.ml Fri Mar 19 10:01:00 2010 +0000 @@ -179,6 +179,14 @@ (* === Masking checks === *) +let mask_features features mask = + { + base_ecx = logand features.base_ecx mask.base_ecx; + base_edx = logand features.base_edx mask.base_edx; + ext_ecx = logand features.ext_ecx mask.ext_ecx; + ext_edx = logand features.ext_edx mask.ext_edx; + } + let assert_maskability cpu manufacturer features = (* Manufacturers need to be the same *) if manufacturer != cpu.manufacturer then diff -r 9ab11f4a89f1 cpuid/cpuid.mli --- a/cpuid/cpuid.mli Wed Mar 17 11:15:44 2010 +0000 +++ b/cpuid/cpuid.mli Fri Mar 19 10:01:00 2010 +0000 @@ -54,8 +54,11 @@ (** {2 Masking Checks} *) -(** Check that this CPU can be masked to fit the pool. Raises {!CannotMaskCpu} - * including a reason string if this is not possible. *) +(** Apply a mask to given features. *) +val mask_features : features -> features -> features + +(** Check that this CPU can be masked to fit the pool. Raises exception + * indicating the reason if this is not possible. *) val assert_maskability : cpu_info -> manufacturer -> features -> unit (** Return the CPU masking string to add to the Xen command-line,