|
|
@ -1,5 +1,9 @@
|
|
|
|
use aya::{
|
|
|
|
use aya::{
|
|
|
|
include_bytes_aligned, maps::{AsyncPerfEventArray, HashMap}, programs::UProbe, util::online_cpus, Bpf,
|
|
|
|
include_bytes_aligned,
|
|
|
|
|
|
|
|
maps::{AsyncPerfEventArray, HashMap},
|
|
|
|
|
|
|
|
programs::UProbe,
|
|
|
|
|
|
|
|
util::online_cpus,
|
|
|
|
|
|
|
|
Bpf,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
use aya_log::BpfLogger;
|
|
|
|
use aya_log::BpfLogger;
|
|
|
|
use bytes::BytesMut;
|
|
|
|
use bytes::BytesMut;
|
|
|
@ -8,18 +12,6 @@ use tokio::task;
|
|
|
|
|
|
|
|
|
|
|
|
use crate::STACK_ARGUMENT;
|
|
|
|
use crate::STACK_ARGUMENT;
|
|
|
|
|
|
|
|
|
|
|
|
pub struct Args {
|
|
|
|
|
|
|
|
a_0: u64,
|
|
|
|
|
|
|
|
a_1: u64,
|
|
|
|
|
|
|
|
a_2: u64,
|
|
|
|
|
|
|
|
a_3: u64,
|
|
|
|
|
|
|
|
a_4: u64,
|
|
|
|
|
|
|
|
a_5: u64,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a_6: u64,
|
|
|
|
|
|
|
|
a_7: i64,
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[no_mangle]
|
|
|
|
#[no_mangle]
|
|
|
|
#[inline(never)]
|
|
|
|
#[inline(never)]
|
|
|
|
pub extern "C" fn trigger_stack_argument(
|
|
|
|
pub extern "C" fn trigger_stack_argument(
|
|
|
@ -53,7 +45,7 @@ async fn stack_argument() {
|
|
|
|
|
|
|
|
|
|
|
|
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
|
|
|
|
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
|
|
|
|
assert_eq!(args_map.keys().count(), 8);
|
|
|
|
assert_eq!(args_map.keys().count(), 8);
|
|
|
|
for iter in args_map.iter(){
|
|
|
|
for iter in args_map.iter() {
|
|
|
|
let iter_v = iter.unwrap();
|
|
|
|
let iter_v = iter.unwrap();
|
|
|
|
assert_eq!(iter_v.0, iter_v.1);
|
|
|
|
assert_eq!(iter_v.0, iter_v.1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|