Re: [lttng-dev] Perf ABI (was: Re: [PATCH 09/11] sched: export task_prio to GPL modules)

Steven Rostedt
2012-01-12T15:53:53Z

On Thu, 2012-01-12 at 10:39 -0500, Mathieu Desnoyers wrote:

> pipe()/pipe2()
> dup()/dup2()/dup3()
> umount()/umount2()
> mmap()/mmap2()
> madvise()/madvise1()
> eventfd()/eventfd2()
>
> Those look very much like major version numbers to me. And these are
> entirely compatible with your statement above about using -ENOSYS to
> detect if the major version number is implemented or not.

That's a stretch in calling version numbers. All but the madvise case
above are how many parameters it takes, not really a "version" number.

It's adding a new syscall, not updating a version and then deprecating
the old one. As I believe all the above are still supported.

>
> If your only concern is that the major version number should be part of
> the ABI name (as in the examples above), that can be arranged.

> >
> > We've done this without version numbers. Just look at all the udev
> > changes.
>
> Are you seriously refering to udev as an example of how to handle
> changes, or as one of the worse ABI breakage mess that happened in the
> Linux kernel history ? My own experience as a Linux users (in the
> era around 2.6.12 kernels if my memory serves me right) lead me to think
> it's the latter. And because udev is part of the runtime support, that
> indeed led to non-bootable systems and lots of frustrated users.

Yeah, I know it sucked, as I got burned by it too. But having "version"
numbers wouldn't have helped at all. In fact, it should have kept both
ways working much longer, or at least had the new udev support both.

What udev did is more like what you want to do than what I did with
trace-cmd.

-- Steve