1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
pub use semver::{SemVerError, Version};
mod raw {
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
}
pub fn linux_headers_version() -> Version {
let version = raw::LINUX_VERSION_CODE as u64;
let major = version >> 16;
let minor = version >> 8 & 0xFF;
let patch = version & 0xFF;
Version::new(major, minor, patch)
}
pub fn linux_kernel_version() -> Result<Version, SemVerError> {
let uname = nix::sys::utsname::uname();
let pre_ver = Version::parse(uname.release())?;
Ok(Version {
pre: vec![],
build: pre_ver.pre.clone(),
..pre_ver
})
}