Re: include file conflict

tytso@mit.edu
Tue, 17 Nov 1998 20:23:13 -0500


Date: Tue, 17 Nov 1998 12:03:15 +0100 (MET)
From: dwguest@win.tue.nl (Guest section DW)

It works if (a) the kernel the header file is carefully constructed to
...

It requires some discipline on the part of the kernel programmer, but
can be done.

Hmm, a peculiar answer. I quote historical facts, and you tell me
that I am wrong and as corroboration mention a hypothetical future.

No, it's not a hypothetical future; it's a which we've been living in
some cases. Take a look at serial.h, from Linux 1.2, 2.0, and Linux
2.1.latest. An old setserial will compile using the latest serial.h,
and vice versa --- the latest setserial will work with an 1.2 serial.h,
thanks to a very carefully designed header file. It might work with
Linux 1.0 as well, but I don't have Linux 1.0 sources easily around to
check....

So yes, you're wrong. There are counter-examples where you can compile
an old program with new kernel header files. Yes, the kernel changes
rapidly, but that doesn't mean the kernel interface doesn't have to
change rapidly. And, in the case of serial.h, I left space in
structures to allow for future expansion, so that we *could* add new
features to the serial.h interface without breaking old programs.

And in any case, yes, I'm much more interested in the future than the
past. For the purposes of designing *future* kernel interfaces, and
redoing existing kernel interfaces, the best thing to do is to create a
well-designed kernel header file, which is where the master copy of the
interface is located, and to copy the kernel header file to user
programs. But on top of that, it may very well be useful to
automatically take the newer version of the kernel header file, if you
can trust that the kernel programmer only puts backwards-compatible
changes into the kernel header file.

- Ted

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