perf-event-open-sys
Regenerated x86_64
bindings from Fedora's kernel-headers-5.19.4-200.fc36.x86_64
package.
Added support for 64-bit ARM (aarch64
).
The perf_event_open_sys
crate now builds on Windows and Mac. Although the system call and ioctl wrapper functions are not available, the types in the bindings
module are still provided for use by code on other platforms that would like to parse perf data produced on Linux or Android.
Contrary to the documentation, perf_event_open
does set errno
. The documentation has been fixed.
Based on Linux kernel headers packaged by Fedora as kernel-headers-5.18.4-200.fc36
.
Fix build for Android, x86_64-unknown-linux-musl.
Remove redundant prefixes from bindings
constants derived from enums in the Linux kernel headers.
For example, the kernel headers have the definition:
/* * attr.type */ enum perf_type_id { PERF_TYPE_HARDWARE = 0, PERF_TYPE_SOFTWARE = 1, PERF_TYPE_TRACEPOINT = 2, ... };
This crate used to render the above as constants like this:
pub const perf_type_id_PERF_TYPE_HARDWARE: perf_type_id = 0; pub const perf_type_id_PERF_TYPE_SOFTWARE: perf_type_id = 1; pub const perf_type_id_PERF_TYPE_TRACEPOINT: perf_type_id = 2; ...
The names incorporate the names of both the C enum and its constants. But since the constants' names are already prefixed (necessary because C places enumeration constants in the ‘ordinary identifier’ namespace), this is redundant.
In v3.0.0, these constants are rendered in Rust like this:
pub const PERF_TYPE_HARDWARE: perf_type_id = 0; pub const PERF_TYPE_SOFTWARE: perf_type_id = 1; pub const PERF_TYPE_TRACEPOINT: perf_type_id = 2;
Here's the full list of prefixes that were stripped, in case you want to sed
your way through a conversion:
bp_type_idx_ perf_bpf_event_type_ perf_branch_sample_type_ perf_branch_sample_type_shift_ perf_callchain_context_ perf_event_ioc_flags_ perf_event_ioctls_ perf_event_read_format_ perf_event_sample_format_ perf_event_type_ perf_hw_cache_id_ perf_hw_cache_op_result_id_ perf_hw_id_ perf_record_ksymbol_type_ perf_sample_regs_abi_ perf_sw_ids_ perf_type_id_