首页 > 解决方案 > rust中如何使用epoll

问题描述

我遇到了这个库来支持epollrust,但我不确定如何正确使用该epoll:wait功能:

let mut events = [Event; 10];
rc = epoll::wait(self.vfio_epoll_fd, timeout, &mut events)?;

如果有人可以为我提供一些入门示例,那就太好了:) 提前感谢您的支持。

编译上述代码时出现以下错误:

error[E0423]: expected value, found struct `Event`
   --> src/interrupts.rs:132:27
    |
132 |         let mut events = [Event; 10];
    |                           ^^^^^ did you mean `Event { /* fields */ }`?

事件结构如下所示:

pub struct Event {
    pub events: Events,
    pub data: u64,
}

问题是我不知道什么Events是位标志。

标签: rustepoll

解决方案


因为events是一个输出参数,epoll::wait你可以在里面放任何东西,但是你需要放一个有效的值。一个合理的默认设置是一个空事件集:

let mut events = [Event::empty(); 10];

Events是由宏生成的结构bitflags,因此查看源代码对理解如何使用它没有多大帮助,但幸运的是,bitflags它还为生成的结构生成了相当全面的文档


推荐阅读