On 06/17/2011 09:15 AM, Frederic Weisbecker wrote: > On Fri, Jun 17, 2011 at 08:23:01AM -0600, David Ahern wrote: >> On 06/17/2011 08:14 AM, Frederic Weisbecker wrote: >>> >>> So I feel uncomfortable with this tod_sample_type hack. I think we can't >>> really continue >>> with this fixed sample_type per session given the kind of hacks that >>> involves. >>> >>> One thing we could do is to split session->sample_type into an array with >>> one sample >>> type per event type (hardware, breakpoint, software, tracepoint). >>> >>> And then each builtin tool can provide their constraints on top of these >>> values: >>> >>> - builtin-report wants sample_type[HARDWARE] == sample_type[SOFTWARE] == >>> sample_type[TRACEPOINT] == sample_type[BREAKPOINT] >>> although that may be tunable by the time but we can start with that. >>> - builtin-script has no specific constraints, except that sample_type[i] >>> meets what the user passed as a parameter >>> - etc.. >>> >>> Constraints can probably default to sample_type[i] == sample_type[i+1] to >>> mimic the current behaviour. Then tools >>> can override that. >>> >>> What do you think? >> >> I started working on sample_type refactoring right after sending this >> patchset (though I got sidetracked). Each evsel in the list has a >> perf_attr struct which has a sample_type. Why not use that which allows >> events to have their own sample type - versus a type per event type? > > This can make sense, I can figure out some cases where such granularity can be > useful. Branch recording doesn't care about recording period for example I > think. > >> >> I'll see if I can get back to it in the next few days and get a better >> idea of the pain involved with the refactoring. > > Thanks a lot :)
Coming back to this one .... >From what I can see sample_type has to be a global per perf session and all samples have to use the same sample_type or a change is needed to the API/ABI. The perf_event_header does not have any information that uniquely associates it with a specific event type. Right now perf_evlist__id2evsel() is used to associate a sample with a specific event (evsel) in the list, but that function requires a parsed sample. To parse a sample we need the sample_type. So, the sample_type has to be a global and the same for all samples. David -- To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
