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 ring_buf;
mod smoke;
mod stack;
mod strncmp;
mod tcx;
mod uprobe_cookie;

@ -11,14 +11,16 @@ pub extern "C" fn trigger_queue_push(arg: u64) {
#[unsafe(no_mangle)]
#[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);
marker + 1
}
#[unsafe(no_mangle)]
#[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);
marker + 2
}
#[test_log::test]
@ -57,11 +59,17 @@ fn queue_basic() {
for i in 0..9 {
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();
assert_eq!(array.get(&PEEK_INDEX, 0).unwrap(), i);
trigger_queue_pop(i);
let pop_value = array.get(&POP_INDEX, 0).unwrap();
trigger_queue_pop();
assert_eq!(array.get(&POP_INDEX, 0).unwrap(), i);
assert_eq!(peek_value, pop_value);
assert_eq!(pop_value, i);
}
}

@ -11,19 +11,21 @@ pub extern "C" fn trigger_stack_push(arg: u64) {
#[unsafe(no_mangle)]
#[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);
marker + 1
}
#[unsafe(no_mangle)]
#[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);
marker + 2
}
#[test_log::test]
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
.program_mut("test_stack_push")
@ -57,11 +59,13 @@ fn stack_basic() {
for i in 0..9 {
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);
trigger_stack_pop();
trigger_stack_pop(i);
assert_eq!(array.get(&POP_INDEX, 0).unwrap(), i);
}
}

Loading…
Cancel
Save