7 releases
0.1.6 | May 21, 2024 |
---|---|
0.1.5 | May 21, 2024 |
0.1.4 | Oct 24, 2023 |
0.1.2 | May 17, 2023 |
#105 in Profiling
555 downloads per month
Used in 3 crates
(via perf-event2)
170KB
3.5K
SLoC
perf-event-data
Parse data emitted by perf_event_open
into usable rust structs.
Getting Started
- The
Record
type is an enum with every known record type. - The
parse
module has what you need to parse bytes into known records.
Putting it all together, we get
use perf_event_data::endian::Native;
use perf_event_data::parse::{ParseConfig, Parser};
use perf_event_data::Record;
fn main() {
let data: &[u8] = &[
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
0x16, 0x4C, 0x01, 0x00, 0x17, 0x4C, 0x01, 0x00,
0x00, 0xA0, 0x48, 0x96, 0x4F, 0x7F, 0x00, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xA0, 0x48, 0x96, 0x4F, 0x7F, 0x00, 0x00,
0x2F, 0x2F, 0x61, 0x6E, 0x6F, 0x6E, 0x00, 0x00,
];
let config = ParseConfig::<Native>::default();
let mut parser = Parser::new(data, config);
let record: Record = parser.parse().expect("failed to parse the record");
// ...
}
See Also
- The
perf-event2
crate allows you to set up sampled perf event counters. You will likely need this, or an equivalent crate, in order to get the event data this crate parses. - The
linux-perf-event-reader
crate provides similar functionality to this one.
Dependencies
~570–770KB
~19K SLoC