EbpfPtr

Struct EbpfPtr 

Source
pub struct EbpfPtr<'a, T> { /* private fields */ }
Expand description

Pointer to a buffer that may be shared between eBPF programs. It allows to safely pass around pointers to the data stored in eBPF maps and access the data referenced by the pointer.

Implementations§

Source§

impl<'a, T> EbpfPtr<'a, T>

Source

pub unsafe fn new(ptr: *mut T) -> Self

Creates a new EbpfPtr from the specified pointer.

§Safety

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

Source

pub unsafe fn deref(&self) -> &'a T

§Safety

Caller must ensure that the value cannot be updated by other threads while the returned reference is live.

Source

pub unsafe fn deref_mut(&self) -> &'a mut T

§Safety

Caller must ensure that the value is not being used by other threads.

Source§

impl EbpfPtr<'_, u64>

Source

pub fn load_relaxed(&self) -> u64

Loads the value referenced by the pointer. Atomicity is guaranteed if and only if the pointer is 8-byte aligned.

Source

pub fn store_relaxed(&self, value: u64)

Stores the value at the memory referenced by the pointer. Atomicity is guaranteed if and only if the pointer is 8-byte aligned.

Source§

impl EbpfPtr<'_, u32>

Source

pub fn load_relaxed(&self) -> u32

Loads the value referenced by the pointer. Atomicity is guaranteed if and only if the pointer is 8-byte aligned.

Source

pub fn store_relaxed(&self, value: u32)

Stores the value at the memory referenced by the pointer. Atomicity is guaranteed if and only if the pointer is 8-byte aligned.

Trait Implementations§

Source§

impl<'a, T> Send for EbpfPtr<'a, T>

Source§

impl<'a, T> Sync for EbpfPtr<'a, T>

Auto Trait Implementations§

§

impl<'a, T> Freeze for EbpfPtr<'a, T>

§

impl<'a, T> RefUnwindSafe for EbpfPtr<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> Unpin for EbpfPtr<'a, T>

§

impl<'a, T> UnwindSafe for EbpfPtr<'a, T>
where T: RefUnwindSafe,

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

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.