Skip to content

esperto-input/libbpf-async

 
 

Repository files navigation

libbpf-async

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"

Example

#[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.

License

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.

About

BPF library for Async Rust, complementary for libbpf-rs. This fork updates to latest libbpf

Resources

License

Stars

Watchers

Forks

Contributors

Languages

  • Rust 100.0%