Messages in this thread | | | Date | Mon, 08 Jun 2009 14:18:09 -0700 | From | Corey Ashford <> | Subject | Re: [PATCH] perf_counter: extensible perf_counter_attr |
| |
Peter Zijlstra wrote: > 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
So you'd do something like this then when assigning to the perf_counter_attr struct:
struct perf_counter_attr pca; ... struct perf_counter_attr_feature feature;
... pca.ext_attrs = (struct perf_counter_attr_ext *)&feature; -or- pca.ext_attrs = &feature.head; /* secretly know that there's data that lies past the attr struct header */
Am I understanding this correctly?
- Corey
| |