如何在锈病中使用epoll

时间:2019-09-01 22:55:28

标签: rust epoll

我碰到了this库,以在锈迹中支持epoll,但是我不确定如何正确使用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是什么,因为它是位标志。

1 个答案:

答案 0 :(得分:0)

由于eventsepoll::wait的输出参数,因此您可以在其中输入任何内容,但需要输入有效值。明智的默认设置是将事件设置为空:

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

Events是由bitflags宏生成的结构,因此查看源代码对理解如何使用它没有多大帮助,但是幸运的是bitflags也会生成非常全面的结构。 documentation用于生成的结构。