open_coroutine_iouring/
version.rs1use once_cell::sync::Lazy;
2use std::ffi::c_int;
3
4extern "C" {
5 fn linux_version_code() -> c_int;
6}
7
8#[must_use]
9pub fn kernel_version(major: c_int, patchlevel: c_int, sublevel: c_int) -> c_int {
10 ((major) << 16) + ((patchlevel) << 8) + if (sublevel) > 255 { 255 } else { sublevel }
11}
12
13#[must_use]
14pub fn current_kernel_version() -> c_int {
15 unsafe { linux_version_code() }
16}
17
18static SUPPORT: Lazy<bool> = Lazy::new(|| current_kernel_version() >= kernel_version(5, 6, 0));
19
20#[must_use]
21pub fn support_io_uring() -> bool {
22 *SUPPORT
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn test() {
31 println!("{}", current_kernel_version());
32 println!("{}", support_io_uring());
33 }
34}