fn main() {
let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();
let force_mio = std::env::var("CARGO_FEATURE_FORCE_MIO").is_ok();
if target_os == "linux" && !force_mio && kernel_version_sufficient() {
println!("cargo:rustc-cfg=has_io_uring");
}
}
fn kernel_version_sufficient() -> bool {
let Ok(release) = std::fs::read_to_string("/proc/sys/kernel/osrelease") else {
return true;
};
let mut parts = release.trim().split('.');
let major: u32 = parts.next().and_then(|s| s.parse().ok()).unwrap_or(0);
let minor: u32 = parts
.next()
.and_then(|s| {
let digits: String = s.chars().take_while(|c| c.is_ascii_digit()).collect();
digits.parse().ok()
})
.unwrap_or(0);
(major, minor) >= (6, 0)
}