From: Rob Hoes Date: Mon, 29 Mar 2010 09:47:47 +0000 (+0100) Subject: Add Cpuid.features_mask function. X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=9501b532080fc7c5d1637f9fde26e816378ea0bf;p=xcp%2Fxen-api-libs.git Add Cpuid.features_mask function. Signed-off-by: Rob Hoes --- diff --git a/cpuid/cpuid.ml b/cpuid/cpuid.ml index 6f332b7..04cf46b 100644 --- a/cpuid/cpuid.ml +++ b/cpuid/cpuid.ml @@ -181,6 +181,14 @@ let read_cpu_info () = (* === 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 --git a/cpuid/cpuid.mli b/cpuid/cpuid.mli index 7f9e800..447b1b5 100644 --- a/cpuid/cpuid.mli +++ b/cpuid/cpuid.mli @@ -54,8 +54,11 @@ val read_cpu_info : unit -> cpu_info (** {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,