A library to parse the x86 CPUID instruction, written in rust with no external dependencies. The implementation closely resembles the Intel CPUID manual description. The library works in no_std environments. Some additional cargo features require std (e.g., pretty printing, serialization).
use raw_cpuid::CpuId; let cpuid = CpuId::new(); if let Some(vf) = cpuid.get_vendor_info() { assert!(vf.as_str() == "GenuineIntel" || vf.as_str() == "AuthenticAMD"); } let has_sse = cpuid.get_feature_info().map_or(false, |finfo| finfo.has_sse()); if has_sse { println!("CPU supports SSE!"); } if let Some(cparams) = cpuid.get_cache_parameters() { for cache in cparams { let size = cache.associativity() * cache.physical_line_partitions() * cache.coherency_line_size() * cache.sets(); println!("L{}-Cache size is {}", cache.level(), size); } } else { println!("No cache parameter information available") }
cpuid binaryraw-cpuid ships with a cpuid binary that can be installed to inspect the output of the CPUID instruction on a host system.
To install, use:
cargo install raw-cpuid --features cli
The cli feature is currently required to build the binary version due to cargo limitations.