Re: [PATCH] perf_counter: extensible perf_counter_attr

Peter Zijlstra
2009-06-08T19:51:43Z

On Mon, 2009-06-08 at 12:02 -0700, Corey Ashford wrote:
> Hi Peter,
>
> Peter Zijlstra wrote:
> > Allow extending the perf_counter_attr structure by linking extended
> > structures to it.
> >
> > Also, should we grow the directly reserved space in the structure a
> > little more?
> >
> > Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> > ---
> > include/linux/perf_counter.h | 7 +++++++
> > kernel/perf_counter.c | 1 +
> > 2 files changed, 8 insertions(+), 0 deletions(-)
> >
> > diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h
> > index 3586df8..781d8ce 100644
> > --- a/include/linux/perf_counter.h
> > +++ b/include/linux/perf_counter.h
> > @@ -175,6 +175,13 @@ struct perf_counter_attr {
> > __u32 __reserved_3;
> >
> > __u64 __reserved_4;
> > +
> > + struct perf_counter_attr_ext *ext_attrs;
> > +};
> > +
> > +struct perf_counter_attr_ext {
> > + struct perf_counter_attr_ext *next;
> > + __u64 perf_attr_ext_type;
> > };
>
> Let's say I want to extend the attributes by four 64-bit quantities... from the
> above definition, I'd need four additional records chained together, right? How
> about something like this instead:

Ah, the idea was to do something like:

struct perf_counter_attr_feature {
struct perf_counter_attr_ext head;
... more stuff ...
};

and set head.perf_attr_ext_type = PERF_ATTR_EXT_FEATURE