## Direct, unsafe Rust bindings for Linux's `perf_event_open` system call
This crate exports `unsafe` Rust wrappers for Linux system calls for accessing
performance monitoring counters and tracing facilities. This includes:
- the processor's own performance monitoring registers
- kernel counters for things like context switches and page faults
- kernel tracepoints, kprobe, and uprobes
- processor tracing facilities like Intel's Branch Trace Store (BTS)
- hardware breakpoints
This crate provides:
- a Rust wrapper the Linux `perf_event_open` system call
- Rust wrappers for the ioctls you can apply to a file descriptor returned by `perf_event_open`
- the bindings generated by `bindgen` for the `perf_event_open` header files
All functions are direct, `unsafe` wrappers for the underlying calls. They
operate on raw pointers and raw file descriptors.
Building this crate runs `bindgen` on your system, and exposes the results via
the `bindings` module. This means that we can't make any stability guarantees
about the API of `bindings`; it depends entirely on the headers you have
installed on your system.