|
|
@ -1,5 +1,7 @@
|
|
|
|
use aya::{EbpfLoader, maps::Array, programs::UProbe};
|
|
|
|
use aya::{EbpfLoader, maps::Array, programs::UProbe};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use crate::utils::attach_uprobe;
|
|
|
|
|
|
|
|
|
|
|
|
const PEEK_INDEX: u32 = 0;
|
|
|
|
const PEEK_INDEX: u32 = 0;
|
|
|
|
const POP_INDEX: u32 = 1;
|
|
|
|
const POP_INDEX: u32 = 1;
|
|
|
|
|
|
|
|
|
|
|
@ -27,32 +29,13 @@ pub extern "C" fn trigger_queue_pop(marker: u64) -> u64 {
|
|
|
|
fn queue_basic() {
|
|
|
|
fn queue_basic() {
|
|
|
|
let mut bpf = EbpfLoader::new().load(crate::QUEUE_TEST).unwrap();
|
|
|
|
let mut bpf = EbpfLoader::new().load(crate::QUEUE_TEST).unwrap();
|
|
|
|
|
|
|
|
|
|
|
|
let prog: &mut UProbe = bpf
|
|
|
|
for (probe_name, symbol) in &[
|
|
|
|
.program_mut("test_queue_push")
|
|
|
|
("test_queue_push", "trigger_queue_push"),
|
|
|
|
.unwrap()
|
|
|
|
("test_queue_pop", "trigger_queue_pop"),
|
|
|
|
.try_into()
|
|
|
|
("test_queue_peek", "trigger_queue_peek"),
|
|
|
|
.unwrap();
|
|
|
|
] {
|
|
|
|
prog.load().unwrap();
|
|
|
|
attach_uprobe(bpf, probe_name, symbol);
|
|
|
|
prog.attach("trigger_queue_push", "/proc/self/exe", None, None)
|
|
|
|
}
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let prog: &mut UProbe = bpf
|
|
|
|
|
|
|
|
.program_mut("test_queue_pop")
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.try_into()
|
|
|
|
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
prog.load().unwrap();
|
|
|
|
|
|
|
|
prog.attach("trigger_queue_pop", "/proc/self/exe", None, None)
|
|
|
|
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let prog: &mut UProbe = bpf
|
|
|
|
|
|
|
|
.program_mut("test_queue_peek")
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.try_into()
|
|
|
|
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
prog.load().unwrap();
|
|
|
|
|
|
|
|
prog.attach("trigger_queue_peek", "/proc/self/exe", None, None)
|
|
|
|
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let array_map = bpf.map("RESULT").unwrap();
|
|
|
|
let array_map = bpf.map("RESULT").unwrap();
|
|
|
|
let array = Array::<_, u64>::try_from(array_map).unwrap();
|
|
|
|
let array = Array::<_, u64>::try_from(array_map).unwrap();
|
|
|
|