Struct libbpf_rs::RingBuffer

source ·
pub struct RingBuffer<'cb> { /* private fields */ }
Expand description

The canonical interface for managing a collection of ringbuf maps.

ringbufs are a special kind of Map, used to transfer data between Programs and userspace. As of Linux 5.8, the ringbuf map is now preferred over the perf buffer.

Implementations§

source§

impl RingBuffer<'_>

source

pub fn poll_raw(&self, timeout: Duration) -> i32

Poll from all open ring buffers, calling the registered callback for each one. Polls continually until we either run out of events to consume or timeout is reached. If timeout is Duration::MAX, this will block indefinitely until an event occurs.

Return the amount of events consumed, or a negative value in case of error.

source

pub fn poll(&self, timeout: Duration) -> Result<()>

Poll from all open ring buffers, calling the registered callback for each one. Polls continually until we either run out of events to consume or timeout is reached. If timeout is Duration::MAX, this will block indefinitely until an event occurs.

source

pub fn consume_raw(&self) -> i32

Greedily consume from all open ring buffers, calling the registered callback for each one. Consumes continually until we run out of events to consume or one of the callbacks returns a non-zero integer.

Return the amount of events consumed, or a negative value in case of error.

source

pub fn consume(&self) -> Result<()>

Greedily consume from all open ring buffers, calling the registered callback for each one. Consumes continually until we run out of events to consume or one of the callbacks returns a non-zero integer.

source

pub fn epoll_fd(&self) -> i32

Get an fd that can be used to sleep until data is available

Trait Implementations§

source§

impl AsRawLibbpf for RingBuffer<'_>

source§

fn as_libbpf_object(&self) -> NonNull<Self::LibbpfType>

Retrieve the underlying libbpf_sys::ring_buffer.

§

type LibbpfType = ring_buffer

The underlying libbpf type.
source§

impl<'cb> Debug for RingBuffer<'cb>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Drop for RingBuffer<'_>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl Send for RingBuffer<'_>

Auto Trait Implementations§

§

impl<'cb> Freeze for RingBuffer<'cb>

§

impl<'cb> !RefUnwindSafe for RingBuffer<'cb>

§

impl<'cb> !Sync for RingBuffer<'cb>

§

impl<'cb> Unpin for RingBuffer<'cb>

§

impl<'cb> !UnwindSafe for RingBuffer<'cb>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.