diff options
| author | Dennis Kobert <dennis@kobert.dev> | 2025-03-08 21:06:20 +0100 |
|---|---|---|
| committer | Dennis Kobert <dennis@kobert.dev> | 2025-03-08 21:07:27 +0100 |
| commit | b4eae244826a0fb8907ef50c8ef9a38da40b719d (patch) | |
| tree | b57014575b3dfc38c5f25115357253d037b3189c /perf-event/examples/insns-for-pid.rs | |
| parent | 06dd6966ad27f0c52c56092dd2f45a06541e5c6c (diff) | |
Vendor perf event
Diffstat (limited to 'perf-event/examples/insns-for-pid.rs')
| -rw-r--r-- | perf-event/examples/insns-for-pid.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/perf-event/examples/insns-for-pid.rs b/perf-event/examples/insns-for-pid.rs new file mode 100644 index 0000000..3fc73ae --- /dev/null +++ b/perf-event/examples/insns-for-pid.rs @@ -0,0 +1,27 @@ +use libc::pid_t; +use perf_event::events::Hardware; +use perf_event::Builder; +use std::thread::sleep; +use std::time::Duration; + +fn main() -> std::io::Result<()> { + let pid: pid_t = std::env::args() + .nth(1) + .expect("Usage: insns-for-pid PID") + .parse() + .expect("Usage: insns-for-pid PID"); + + let mut insns = Builder::new() + .observe_pid(pid) + .kind(Hardware::BRANCH_INSTRUCTIONS) + .build()?; + + // Count instructions in PID for five seconds. + insns.enable()?; + sleep(Duration::from_secs(5)); + insns.disable()?; + + println!("instructions in last five seconds: {}", insns.read()?); + + Ok(()) +} |
