Use a unique name for the pinned map used in a test

reviewable/pr1318/r5
Ershaad Basheer 2 months ago
parent 83a7619071
commit 3fa765deba

@ -11,7 +11,7 @@ use integration_common::ring_buf::Registers;
extern crate ebpf_panic; extern crate ebpf_panic;
#[map] #[map]
static pinned_ringbuf_reuse_test: RingBuf = RingBuf::pinned(0, 0); static RING_BUF: RingBuf = RingBuf::with_byte_size(0, 0);
// Use a PerCpuArray to store the registers so that we can update the values from multiple CPUs // Use a PerCpuArray to store the registers so that we can update the values from multiple CPUs
// without needing synchronization. Atomics exist [1], but aren't exposed. // without needing synchronization. Atomics exist [1], but aren't exposed.
@ -26,7 +26,7 @@ pub fn ring_buf_test(ctx: ProbeContext) {
Some(regs) => unsafe { &mut *regs }, Some(regs) => unsafe { &mut *regs },
None => return, None => return,
}; };
let mut entry = match pinned_ringbuf_reuse_test.reserve::<u64>(0) { let mut entry = match RING_BUF.reserve::<u64>(0) {
Some(entry) => entry, Some(entry) => entry,
None => { None => {
*dropped += 1; *dropped += 1;

@ -1,5 +1,7 @@
use std::{ use std::{
fs, mem, fs,
io::ErrorKind,
mem,
os::fd::AsRawFd as _, os::fd::AsRawFd as _,
sync::{ sync::{
Arc, Arc,
@ -13,7 +15,8 @@ use anyhow::Context as _;
use assert_matches::assert_matches; use assert_matches::assert_matches;
use aya::{ use aya::{
Ebpf, EbpfLoader, Ebpf, EbpfLoader,
maps::{Map, MapData, array::PerCpuArray, ring_buf::RingBuf}, maps::{MapData, array::PerCpuArray, ring_buf::RingBuf},
pin::PinError,
programs::UProbe, programs::UProbe,
}; };
use aya_obj::generated::BPF_RINGBUF_HDR_SZ; use aya_obj::generated::BPF_RINGBUF_HDR_SZ;
@ -82,12 +85,16 @@ impl PinnedRingBufTest {
(RING_BUF_MAX_ENTRIES * (mem::size_of::<u64>() + BPF_RINGBUF_HDR_SZ as usize)) as u32; (RING_BUF_MAX_ENTRIES * (mem::size_of::<u64>() + BPF_RINGBUF_HDR_SZ as usize)) as u32;
let mut bpf = EbpfLoader::new() let mut bpf = EbpfLoader::new()
.set_max_entries("pinned_ringbuf_reuse_test", RING_BUF_BYTE_SIZE) .set_max_entries("RING_BUF", RING_BUF_BYTE_SIZE)
.load(crate::RING_BUF_PINNED) .load(crate::RING_BUF)
.unwrap(); .unwrap();
// We assume the map has been pinned as part of the loading process. let ring_buf = bpf.take_map("RING_BUF").unwrap();
let ring_buf = MapData::from_pin(RING_BUF_PIN_PATH).unwrap(); match ring_buf.pin(RING_BUF_PIN_PATH) {
let ring_buf = Map::RingBuf(ring_buf); Ok(()) => {}
Err(PinError::SyscallError(err)) if err.io_error.kind() == ErrorKind::AlreadyExists => {
}
_ => assert!(false, "Pinning failed or pinned map not present"),
}
let ring_buf = RingBuf::try_from(ring_buf).unwrap(); let ring_buf = RingBuf::try_from(ring_buf).unwrap();
let regs = bpf.take_map("REGISTERS").unwrap(); let regs = bpf.take_map("REGISTERS").unwrap();
let regs = PerCpuArray::<_, Registers>::try_from(regs).unwrap(); let regs = PerCpuArray::<_, Registers>::try_from(regs).unwrap();

Loading…
Cancel
Save