Struct aya::maps::array::PerCpuArray [−][src]
Expand description
A per-CPU fixed-size array.
The size of the array is defined on the eBPF side using the bpf_map_def::max_entries
field.
All the entries are zero-initialized when the map is created.
Examples
use aya::maps::{PerCpuArray, PerCpuValues}; use aya::util::nr_cpus; use std::convert::TryFrom; let mut array = PerCpuArray::try_from(bpf.map_mut("ARRAY")?)?; // set array[1] = 42 for all cpus let nr_cpus = nr_cpus()?; array.set(1, PerCpuValues::try_from(vec![42u32; nr_cpus])?, 0)?; // retrieve the values at index 1 for all cpus let values = array.get(&1, 0)?; assert_eq!(values.len(), nr_cpus); for cpu_val in values.iter() { assert_eq!(*cpu_val, 42u32); }
Implementations
Returns the number of elements in the array.
This corresponds to the value of bpf_map_def::max_entries
on the eBPF side.
Returns a slice of values - one for each CPU - stored at the given index.
Errors
Returns MapError::OutOfBounds
if index
is out of bounds, MapError::SyscallError
if bpf_map_lookup_elem
fails.
Sets the values - one for each CPU - at the given index.
Errors
Returns MapError::OutOfBounds
if index
is out of bounds, MapError::SyscallError
if bpf_map_update_elem
fails.
Trait Implementations
Auto Trait Implementations
impl<T, V> RefUnwindSafe for PerCpuArray<T, V> where
T: RefUnwindSafe,
V: RefUnwindSafe,
impl<T, V> Send for PerCpuArray<T, V> where
T: Send,
V: Send,
impl<T, V> Sync for PerCpuArray<T, V> where
T: Sync,
V: Sync,
impl<T, V> Unpin for PerCpuArray<T, V> where
T: Unpin,
V: Unpin,
impl<T, V> UnwindSafe for PerCpuArray<T, V> where
T: UnwindSafe,
V: UnwindSafe,