Messages in this thread | | | Date | Sun, 21 Jan 2007 11:15:45 -0800 | From | William D Waddington <> | Subject | Re: [RFCLUE3] flagging kernel interface changes |
| |
Jesper Juhl wrote: > On 15/11/06, William D Waddington <william.waddington@beezmo.com> wrote: > >> I tried submitting a patch a while back: >> "[PATCH] IRQ: ease out-of-tree migration to new irq_handler prototype" >> to add #define __PT_REGS to include/linux/interrupt.h to flag the change >> to the new interrupt handler prototype. It wasn't well received :( >> >> No big surprise. The #define wasn't my idea and I hadn't submitted a >> patch before. I wanted to see how the patch procedure worked, and >> hoped that the flag would be included so I could mod my drivers and >> move on... >> >> What I'm curious about is why flagging kernel/driver interface changes >> is considered a bad idea. From my point of view as a low-life out-of- >> tree driver maintainer, >> >> #ifdef NEW_INTERFACE >> #define <my new internals> >> #endif >> >> (w/maybe an #else...) >> >> is cleaner and safer than trying to track specific kernel versions in >> a multi-kernel-version driver. It seems that in some cases, the new >> interface has been, like HAVE_COMPAT_IOCTL for instance. >> >> I don't want to start an argument about "stable_api_nonsense" or the >> wisdom of out-of-tree drivers. Just curious about the - why - and >> whether it is indifference or antagonism toward drivers outside the >> fold. Or ??? >> > > I would say that one reason is that cluttering up the kernel with > #ifdef's is ugly and annoying to maintain long-term. Especially when > it's expected that anyone who changes in-kernel interfaces also fix up > any user(s) of those interfaces, so the #ifdef's are pointless > (ignoring out-of-tree code that is).
Ah, but out-of-tree code is what I'm stuck w/maintaining. I wouldn't want to infest in-tree drivers w/#ifdef's either, but they are a fact of life in my world. And, lately, _really_ ugly version tests.
If I had _my_ way, there would be a kernel_interface_change.h file that had an #define'd entry for _every_ kernel interface change within a major release series:
/* * include/linux/interrupt.h interface change x.y.z * interrupt handler now takes 2 args */ #define INTERRUPT_H_CHANGE_X.Y.Z "interrupt handler now takes 2 args"
or something.
I understand that many (most?) kernel maintainers would prefer that all drivers be brought in-tree, and aren't particularly concerned when interface changes affect out-of-tree drivers.
Respectfully, I suggest that world domination isn't quite the same thing as world dictatorship, and maybe the road to the former would be helped by a little less of the latter :)
Rat-bastard out-of-tree maintainer takes refuge under desk....
Thanks, Bill -- -------------------------------------------- William D Waddington Bainbridge Island, WA, USA william.waddington@beezmo.com -------------------------------------------- "Even bugs...are unexpected signposts on the long road of creativity..." - Ken Burtch - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |