add marker

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
reviewable/pr1319/r10
Xiaobo Liu 3 weeks ago
parent 78000ecb18
commit 0d1488a370

@ -12,6 +12,7 @@ mod rbpf;
mod relocations; mod relocations;
mod ring_buf; mod ring_buf;
mod smoke; mod smoke;
mod stack;
mod strncmp; mod strncmp;
mod tcx; mod tcx;
mod uprobe_cookie; mod uprobe_cookie;

@ -11,14 +11,16 @@ pub extern "C" fn trigger_queue_push(arg: u64) {
#[unsafe(no_mangle)] #[unsafe(no_mangle)]
#[inline(never)] #[inline(never)]
pub extern "C" fn trigger_queue_peek() { pub extern "C" fn trigger_queue_peek(marker: u64) -> u64 {
core::hint::black_box(trigger_queue_peek); core::hint::black_box(trigger_queue_peek);
marker + 1
} }
#[unsafe(no_mangle)] #[unsafe(no_mangle)]
#[inline(never)] #[inline(never)]
pub extern "C" fn trigger_queue_pop() { pub extern "C" fn trigger_queue_pop(marker: u64) -> u64 {
core::hint::black_box(trigger_queue_pop); core::hint::black_box(trigger_queue_pop);
marker + 2
} }
#[test_log::test] #[test_log::test]
@ -57,11 +59,17 @@ fn queue_basic() {
for i in 0..9 { for i in 0..9 {
trigger_queue_push(i); trigger_queue_push(i);
std::thread::sleep(std::time::Duration::from_millis(1)); // 确保完成
}
for i in 0..9 {
trigger_queue_peek(i);
let peek_value = array.get(&PEEK_INDEX, 0).unwrap();
trigger_queue_peek(); trigger_queue_pop(i);
assert_eq!(array.get(&PEEK_INDEX, 0).unwrap(), i); let pop_value = array.get(&POP_INDEX, 0).unwrap();
trigger_queue_pop(); assert_eq!(peek_value, pop_value);
assert_eq!(array.get(&POP_INDEX, 0).unwrap(), i); assert_eq!(pop_value, i);
} }
} }

@ -11,19 +11,21 @@ pub extern "C" fn trigger_stack_push(arg: u64) {
#[unsafe(no_mangle)] #[unsafe(no_mangle)]
#[inline(never)] #[inline(never)]
pub extern "C" fn trigger_stack_peek() { pub extern "C" fn trigger_stack_peek(marker: u64) -> u64 {
core::hint::black_box(trigger_stack_peek); core::hint::black_box(trigger_stack_peek);
marker + 1
} }
#[unsafe(no_mangle)] #[unsafe(no_mangle)]
#[inline(never)] #[inline(never)]
pub extern "C" fn trigger_stack_pop() { pub extern "C" fn trigger_stack_pop(marker: u64) -> u64 {
core::hint::black_box(trigger_stack_pop); core::hint::black_box(trigger_stack_pop);
marker + 2
} }
#[test_log::test] #[test_log::test]
fn stack_basic() { fn stack_basic() {
let mut bpf = EbpfLoader::new().load(crate::stack_TEST).unwrap(); let mut bpf = EbpfLoader::new().load(crate::STACK_TEST).unwrap();
let prog: &mut UProbe = bpf let prog: &mut UProbe = bpf
.program_mut("test_stack_push") .program_mut("test_stack_push")
@ -57,11 +59,13 @@ fn stack_basic() {
for i in 0..9 { for i in 0..9 {
trigger_stack_push(i); trigger_stack_push(i);
}
trigger_stack_peek(); for i in (0..9).rev() {
trigger_stack_peek(i);
assert_eq!(array.get(&PEEK_INDEX, 0).unwrap(), i); assert_eq!(array.get(&PEEK_INDEX, 0).unwrap(), i);
trigger_stack_pop(); trigger_stack_pop(i);
assert_eq!(array.get(&POP_INDEX, 0).unwrap(), i); assert_eq!(array.get(&POP_INDEX, 0).unwrap(), i);
} }
} }

Loading…
Cancel
Save