-
Brenden Blanco authored
This adds the ability to consume perf events in libbpf/python using the ring buffer. For now, this is the only way to get access to the function call graph. Only kernel functions are supported. It does this by introducing a new set of libbpf helper functions that can open the perf fd, mmap it, and poll over the events as they are submitted by the kernel. This allow for faster event processing than trace_printks, but has not been tested. The functionality is disabled by default, the user can enable it by passing a non-empty cb parameter into the BPF constructor. That cb function will be invoked for each event that is read from the buffer. Buffers are per-fd, so each event is distinct as well as separated from other processes that may be running simultaneously. The initial test case uses this functionality to build a histogram of events keyed by the callchain. Signed-off-by: Brenden Blanco <bblanco@plumgrid.com>
8207d10e