Hi Stephane, On Tue June 6 2006 2:21 am, Stephane Eranian wrote: > On Thu, Jun 01, 2006 at 10:00:38AM -0500, Kevin Corry wrote: > > More specifically, we identify an event with a number (an "opaque > > descriptor" as you call it below), which is usually an index into an > > arch-specific internal array of events (although I suppose it doesn't > > strictly *have* to be an index). An array of these event numbers is > > passed to the dispatch_events routine, rather than the names of the > > events. For the unit-masks, we could do basically the same thing, and > > have an array or list of mask numbers for each event. Then we'd need APIs > > to get the mask number for a desired event number and mask name. Perhaps > > something like: > > > > int pfm_find_event_mask(const char *mask_str, > > unsigned int event_idx, > > unsigned int *mask_idx); > > int pfm_find_event_mask_byname(const char *mask_name, > > unsigned int event_idx, > > unsigned int *mask_idx); > > int pfm_get_num_event_masks(unsigned int event_idx, > > unsigned int *count); > > int pfm_get_event_mask_name(unsigned int event_idx, > > unsigned int mask_idx, > > char *mask_name, > > size_t maxlen); > > int pfm_get_event_mask_description(unsigned int event_idx, > > unsigned int mask_idx, > > char **str); > > That looks reasonable. > > I think we can simplify the API some more for both event and unit mask. > The find_*() and find_*_byname() are a bit redundant. The former searches > by name or code (if first character is digit). We also have an explicit > pfm_find_event*_bycode(). It seems we could smiplify by removing the > pfm_find_event() function. Caller can do the checking for digit vs. > alphabetical first caharacter and dispatch to the right function.
Sounds fine to me. > Then we would augment the pfmlib_input_param_t.pfmlib_event_t structure > with a new array to pass the unit mask descriptors. I suggest a size of 32 > for that array. That should give us some slack. 32 will probably work for now. I don't know of any current systems that would come close to filling that up. If we add the APIs for getting the unit-mask number for a given name, then we would we probably only need to add a simple array of unsigned ints (or even shorts or chars) to pfmlib_event_t to store the unit-masks, along with a num_masks field. -- Kevin Corry [EMAIL PROTECTED] http://www.ibm.com/linux/ http://evms.sourceforge.net/ _______________________________________________ perfmon mailing list [email protected] http://www.hpl.hp.com/hosted/linux/mail-archives/perfmon/
