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/

Reply via email to