use std::process::ExitCode;
use std::time::Duration;
use perf_event::events::KProbe;
use perf_event::Builder;
fn run() -> std::io::Result<()> {
let func = "__x64_sys_write";
let probe = KProbe::probe(func, 0)?;
let mut builder = Builder::new(probe)
.one_cpu(0)
.any_pid()
.enabled(true)
.build()?;
std::thread::sleep(Duration::from_secs(5));
builder.disable()?;
let count = builder.read()?;
println!("{func} was called {count} times");
Ok(())
}
fn main() -> ExitCode {
if let Err(e) = run() {
eprintln!("{e}");
ExitCode::FAILURE
} else {
ExitCode::SUCCESS
}
}