#bpf #async #ring-buffer #libbpf

libbpf-async

用于在异步Rust中编写BPF程序的库,与libbpf-rs互补

2个不稳定版本

0.2.0 2024年1月30日
0.1.0 2021年11月5日

#886 in Unix API

LGPL-2.1 OR BSD-2-Clause

8KB
126

libbpf-async

用于在异步Rust中编写BPF程序的库,与libbpf-rs互补,是libbpf的Rust封装。

目前,它提供了针对BPF环形缓冲区的异步API。

要在项目中使用,请在您的Cargo.toml中添加

[dependencies]
libbpf-async = "0.1"

示例

#[tokio::main]
async fn main() {
    let mut builder = TracerSkelBuilder::default();
    let mut skel = builder.open().unwrap().load().unwrap();

    let mut rb = libbpf_async::RingBuffer::new(skel.obj.map_mut("ringbuf").unwrap());
    loop {
        let mut buf = [0; 128];
        let n = rb.read(&mut buf).await.unwrap();
        // do something useful with the buffer
    }
}

一个可工作的示例代码可以在这里找到。

许可证

本作品采用BSD 2条款许可证和GNU LGPL v2.1许可证的双重许可。如果您使用此作品,可以选择其中之一。

依赖关系

~14–21MB
~323K SLoC