compio_driver/
driver_type.rs1#[repr(u8)]
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4pub enum DriverType {
5 Poll,
7 IoUring,
9 IOCP,
11}
12
13impl DriverType {
14 #[cfg(fusion)]
16 pub(crate) fn suggest() -> DriverType {
17 use io_uring::opcode::*;
18
19 const USED_OP: &[u8] = &[
21 Read::CODE,
22 Readv::CODE,
23 Write::CODE,
24 Writev::CODE,
25 Fsync::CODE,
26 Accept::CODE,
27 Connect::CODE,
28 Recv::CODE,
29 Send::CODE,
30 RecvMsg::CODE,
31 SendMsg::CODE,
32 PollAdd::CODE,
33 ];
34
35 if USED_OP.iter().all(|op| crate::sys::is_op_supported(*op)) {
36 DriverType::IoUring
37 } else {
38 DriverType::Poll
39 }
40 }
41
42 pub fn is_polling(&self) -> bool {
44 *self == DriverType::Poll
45 }
46
47 pub fn is_iouring(&self) -> bool {
49 *self == DriverType::IoUring
50 }
51
52 pub fn is_iocp(&self) -> bool {
54 *self == DriverType::IOCP
55 }
56}