Re: [RFC PATCH] perfcounters: provide expansion room in the ABI

From: Ingo Molnar
Date: Wed Mar 04 2009 - 05:50:09 EST



* Paul Mackerras <paulus@xxxxxxxxx> wrote:

> Impact: ABI change
>
> This expands several fields in the perf_counter_hw_event
> struct and adds a "flags" argument to the perf_counter_open
> system call, in order that features can be added in future
> without ABI changes.
>
> In particular the record_type field is expanded to 64 bits,
> and the space for flag bits has been expanded from 32 to 64
> bits.
>
> This also adds some new fields:
>
> * read_format (64 bits) is intended to provide a way to specify what
> userspace wants to get back when it does a read() on a simple
> (non-interrupting) counter;
>
> * exclude_idle (1 bit) provides a way for userspace to ask that events
> that occur when the cpu is idle be excluded;
>
> * extra_config_len will provide a way for userspace to supply an
> arbitrary amount of extra machine-specific PMU configuration data
> immediately following the perf_counter_hw_event struct, to allow
> sophisticated users to program things such as instruction matching
> CAMs and address range registers;
>
> * __reserved_3 and __reserved_4 provide space for future expansion.
>
> Signed-off-by: Paul Mackerras <paulus@xxxxxxxxx>
> ---
> This should provide plenty of room for future expansion, in fact maybe
> it's a little over the top.

Yeah - but i think it does not hurt to be defensive when it
comes to ABI extensibility.

Your changes look very good to me.

> Ingo, if this looks OK, you can pull it from the rfc branch of my
> perfcounters.git tree at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/paulus/perfcounters.git rfc
>
> include/linux/perf_counter.h | 12 +++++++++---
> include/linux/syscalls.h | 2 +-
> kernel/perf_counter.c | 10 +++++++---
> 3 files changed, 17 insertions(+), 7 deletions(-)

Pulled into tip:perfcounters/core, thanks Paul!

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/