A library for writing BPF programs in Async Rust, complementary for libbpf-rs, Rust wrapper for libbpf.
Currently, this provides Async-friendly APIs for BPF ring buffer.
To use in your project, add into your Cargo.toml:
[dependencies]
libbpf-async = "0.3"#[tokio::main]
async fn main() {
let mut open_object = std::mem::MaybeUninit::uninit();
let mut builder = TracerSkelBuilder::default();
let mut skel = builder.open(&mut open_object).unwrap().load().unwrap();
let mut rb = libbpf_async::RingBuffer::new(&skel.maps.ringbuf);
loop {
let mut buf = [0; 128];
let n = rb.read(&mut buf).await.unwrap();
// do something useful with the buffer
}
}A working example code can be found here.
This work is dual-licensed under BSD 2-clause license and GNU LGPL v2.1 license. You can choose between one of them if you use this work.