Messages in this thread | | | Date | Fri, 12 Jul 2013 15:56:01 +0300 | From | Adrian Hunter <> | Subject | Re: [PATCH V5 09/12] perf: make events stream always parsable |
| |
On 12/07/13 12:56, Peter Zijlstra wrote: > On Thu, Jul 11, 2013 at 04:12:18PM +0300, Adrian Hunter wrote: >> The event stream is not always parsable because the format of a sample >> is dependent on the sample_type of the selected event. When there >> is more than one selected event and the sample_types are not the >> same then parsing becomes problematic. A sample can be matched to its >> selected event using the ID that is allocated when the event is opened. >> Unfortunately, to get the ID from the sample means first parsing it. >> >> This patch adds a new sample format bit PERF_SAMPLE_IDENTIFER that puts >> the ID at a fixed position so that the ID can be retrieved without >> parsing the sample. For sample events, that is the first position >> immediately after the header. For non-sample events, that is the last >> position. > > There's events where this isn't a possible location; take PERF_RECORD_MMAP for > instance; the tail is the complete filename.
PERF_RECORD_MMAP falls in the category I have called non-sample events. Those events are appended with an ID sample. perf tools parses the ID sample backwards from header.size. So the ID is at the last position relative to header.size
> > Why not always insert right after the header?
It is for sample events i.e. PERF_RECORD_SAMPLE
> > Also; you forgot to update include/uapi/linux/perf_event.h:enum perf_event_type > That's the format documentation. >
OK
| |