EbpfBufferPtr

Struct EbpfBufferPtr 

Source
pub struct EbpfBufferPtr<'a> { /* private fields */ }
Expand description

Wraps a pointer to buffer used in eBPF runtime, such as an eBPF maps entry. The referenced data may be access from multiple threads in parallel, which makes it unsafe to access it using standard Rust types. EbpfBufferPtr allows to access these buffers safely. It may be used to reference either a whole VMO allocated for and eBPF map or individual elements of that VMO (see slice()). The address and the size of the buffer are always 8-byte aligned.

Implementations§

Source§

impl<'a> EbpfBufferPtr<'a>

Source

pub const ALIGNMENT: usize = 8usize

Source

pub unsafe fn new(ptr: *mut u8, size: usize) -> Self

Creates a new EbpfBufferPtr from the specified pointer. ptr must be 8-byte aligned. size must be multiple of 8.

§Safety

Caller must ensure that the buffer referenced by ptr is valid for lifetime 'a.

Source

pub fn len(&self) -> usize

Size of the buffer in bytes.

Source

pub fn raw_ptr(&self) -> *mut u8

Raw pointer to the start of the buffer.

Source

pub fn get_ptr<T>(&self, offset: usize) -> Option<EbpfPtr<'a, T>>

Returns a pointer to a value of type T at the specified offset.

Source

pub fn slice(&self, range: impl RangeBounds<usize>) -> Option<Self>

Returns pointer to the specified range in the buffer. Range bounds must be multiple of 8.

Source

pub fn load(&self) -> Vec<u8>

Loads contents of the buffer to a Vec<u8>.

Source

pub fn store(&self, data: &[u8])

Stores data in the buffer. data must be the same size as the buffer.

Source

pub fn store_padded(&self, data: &[u8])

Stores data at the head of the buffer. If data is not multiple of 8 then it’s padded at the end with zeros.

Trait Implementations§

Source§

impl<'a> Clone for EbpfBufferPtr<'a>

Source§

fn clone(&self) -> EbpfBufferPtr<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for EbpfBufferPtr<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for EbpfBufferPtr<'a>

§

impl<'a> RefUnwindSafe for EbpfBufferPtr<'a>

§

impl<'a> !Send for EbpfBufferPtr<'a>

§

impl<'a> !Sync for EbpfBufferPtr<'a>

§

impl<'a> Unpin for EbpfBufferPtr<'a>

§

impl<'a> UnwindSafe for EbpfBufferPtr<'a>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.