Re: [perf] perf_event.h ABI visibility question

From: Peter Zijlstra
Date: Mon Aug 27 2018 - 03:52:57 EST


On Fri, Aug 24, 2018 at 05:09:27PM -0400, Vince Weaver wrote:
> On Fri, 24 Aug 2018, Peter Zijlstra wrote:
>
> > > +++ b/include/uapi/linux/perf_event.h
> > > @@ -143,6 +143,8 @@ enum perf_event_sample_format {
> > > PERF_SAMPLE_PHYS_ADDR = 1U << 19,
> > >
> > > PERF_SAMPLE_MAX = 1U << 20, /* non-ABI */
> > > +
> > > + __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
> > > };
> > >
> >
> > Hurphm.. visible yes, but as you say, also quite useless. Does it really
> > make sense to document that?
>
> Well, it should probably be documented either in the manpage or else in
> perf_event.h (even if it's just "internal use, don't use") as we can't
> really expect people to download a git tree and do a git-blame to try to
> figure out what this mysterious field is all about.


Something like so then?

diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
index eeb787b1c53c..f35eb72739c0 100644
--- a/include/uapi/linux/perf_event.h
+++ b/include/uapi/linux/perf_event.h
@@ -144,7 +144,7 @@ enum perf_event_sample_format {

PERF_SAMPLE_MAX = 1U << 20, /* non-ABI */

- __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
+ __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63, /* non-ABI; internal use */
};

/*

> Also, this change increased the size of the enum from 32 to 64 bits on
> 32-bit machines, though that only really matters if the user is doing
> something really weird with enum variables.

Yeah, since the target variable is a u64 I really can't be bothered with
that.