tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/sys
Date: Thu, 23 Feb 2017 15:32:16 +0800 (PHT)
From: Paul Goyette <paul%whooppee.com@localhost>
Message-ID: <Pine.NEB.4.64.1702231527400.4219%speedy.whooppee.com@localhost>
| On Thu, 23 Feb 2017, Kamil Rytarowski wrote:
|
| > I'm evaluating it from the osabi (pkgsrc term) point of view. I'm
| > targeting LLDB for 7.99.62+.
The kernel version number is a horribly blunt, and very ineffetive tool,
to use for this purpose - much better is to use a feature test, where the
user level code tests for the presence of a symbol (#define) in the
appropriate header file.
If run time testing is required (which is useful far less often than you
might think) then a run time feature test (either just try the interface
and see if it works, or add an option/flag to the API which allows an
explicit test).
| Other reasons might include
|
| * changes to the contents of prop-libs that are passed between kernel
| and userland, or kernel and modules
Not sure about that one, but I'd expect that kernel-user proplib interactions
need versioning if some incompatibility is introduced, I don't think a
kernel version bump will normally achieve anything.
| * changes to structs that might be included in ioctl args
That one definitely needs versioning, and not a kernel version bump.
Of course, for both of those, if the interface changed is a very new one
(as in "this ioctl/proplib was introduced last week, but we forgot...")
then just change it - anything that was built to use the (previous version
of) the new interface can just get recompiled.
| * changes to things that kmem grovelers chase
I don't think kernel version bumps really help there either - for those
I think it is normal just to expect that a kmem groveller (of which there
are not many left, fortunately) might need to match the kernel version if
it is to be expected to work. That is, if you boot a new kernel, you're
likely to have to rebuild those things (if you need them - it has been a
long time since I was last bothered by one of those failing, whatever the
difference between the version of user level code and the kernel)
The internal interface between kernel and modules (ie: making sure the
correct modules get loaded for the kernel) is 99% of the demand for kernel
version bumps. Changing the sizes of kernel structs is the most common
change that requires a change, and altering the prototype of a non-static
function is another fairly common one (adding/deleting an arg, or changing
types) is another.
kre
Home |
Main Index |
Thread Index |
Old Index