Post a Comment
Well even AmigaOS could load kernel modules of some sort
BeOS, AFAICR, had kernel modules as well, but in a much cleaner fashion than what linux does.
> how these independent objects dynamically become part of the Linux kernel.
And participate in the global mess...
Linux finally got hierarchically organized modules (BeOS had those 10 years ago), but they still explicitely link to each other making it a pain to have them loaded in correct order, and insmod is still required, even if it's hidden by udev.
In BeOS (and Haiku) modules only link to the kernel, and access other modules via a clean API where they ask which module the need and get given a list of functions then can call.
This makes the whole much cleaner and stable than the driver framework in linux, or rather the absence thereof.
Yes, the reason they give is that all drivers are in the source tree anyway, and it allows for faster development.
The first one is wrong, there are things like OSSv4 which (tries to) support Linux by requiring an ugly glue full of #ifdefs on the kernel version. Of course some integrists just discard it saying all driver must be in the source tree or just not be at all. That's a bit pathetic but eh.
As for faster dev, well, maybe, but sometimes it's better to take the time to see where one is going before running to it.
From the article linked:
Linux is not the only monolithic kernel that can be dynamically altered (and it wasn't the first). You'll find loadable module support in Berkeley Software Distribution (BSD) variants, Sun Solaris, in older kernels such as OpenVMS, and other popular operating systems such as Microsoft® Windows® and Apple Mac OS X.
So yes, you're right, it wasn't the first one.






