如何在 Rust 中使用 epoll
How to use epoll in rust
我遇到了 this 库来支持 epoll
in rust 但我不确定如何正确使用 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
是什么,因为它是位标志。
由于 events
是 epoll::wait
的输出参数,您可以在其中输入任何内容,但您需要输入有效值。一个合理的默认值是一个空的事件集:
let mut events = [Event::empty(); 10];
Events
是由 bitflags
宏生成的结构体,因此查看源代码对理解如何使用它没有多大帮助,但幸运的是 bitflags
也生成生成的结构非常全面documentation。
我遇到了 this 库来支持 epoll
in rust 但我不确定如何正确使用 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
是什么,因为它是位标志。
由于 events
是 epoll::wait
的输出参数,您可以在其中输入任何内容,但您需要输入有效值。一个合理的默认值是一个空的事件集:
let mut events = [Event::empty(); 10];
Events
是由 bitflags
宏生成的结构体,因此查看源代码对理解如何使用它没有多大帮助,但幸运的是 bitflags
也生成生成的结构非常全面documentation。