我碰到了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
是什么,因为它是位标志。
答案 0 :(得分:0)
由于events
是epoll::wait
的输出参数,因此您可以在其中输入任何内容,但需要输入有效值。明智的默认设置是将事件设置为空:
let mut events = [Event::empty(); 10];
Events
是由bitflags
宏生成的结构,因此查看源代码对理解如何使用它没有多大帮助,但是幸运的是bitflags
也会生成非常全面的结构。 documentation用于生成的结构。