A new generation of Adeos patches is hitting the street, and will gradually replace the former one for all architectures. This move is in direct consequence of the work that took place some weeks ago on the LKML, where a refactored implementation of the interrupt pipeline scheme, which is at the core of the Adeos patch, has been submitted for review.
To this end, the code has undergone a large revamping, especially on x86, basically in order to take the lessons learned during the last three years of continuous use and development of Adeos as a realtime system enabler for RTAI. Four major reasons led to this decision: - The original Adeos papers [1] authored by Karim Yaghmour described the core of what would be a full-featured virtualization system usable for various purposes, whilst the current Adeos incarnation is "only" a real-time enabling extension, hence a functional subset of this proposal, which provides basic but still crucial support to RTOSes that want to integrate with the Linux kernel environment. The revised implementation now exclusively focuses on the latter goal, dismissing any generic feature that does not immediately benefit this application domain. As a positive side-effect, the maintenance of such patches already proved to be far easier. - The x86 implementation from the former patch series had a serious design flaw when it comes to handle the complexity of this architecture's hardware interrupt management on some configurations. This has led to a number of bug reports, many of them involving interrupt routing. The cause of most, if not all, of these issues has been identified, and the fix has required significant surgery, much beyond the usual bug fixing process. Fundamental changes took place internally for that purpose. - A number of generic and arch-dependent optimizations were only possible with radical changes to the implementation, which also had an impact on the Adeos API that definitely breaks backward compatibility with the older patches. This said, the core interrupt and event interposition features still have the same semantics, and the pipelining scheme is still of course at the heart of the implementation. - Adeos needs to integrate as seamlessly as possible with the Linux internals, so that combining it with other kernel extensions (e.g. LTT, PREEMPT_RT) is made easier. The refactoring of the Adeos codebase according to the kernel coding standards made the patch less intrusive in the same time, which eventually helps such combination work. Some pratical details now: - The new patch series is nicknamed "I-pipe" (for Interrupt Pipeline), in reference to the work published on the LKML, which is at the core of the new implementation. - I-pipe patches are named the following way, which makes it easy to distinguish them unambiguously from the former generation ones: adeos-ipipe-<kernel_version>-X.Y-ZZ.patch. The former candidate/final release naming convention has been replaced by a more usual version stamp, consisting of the major, minor and patchlevel identifiers (i.e. X.Y-ZZ). - I-pipe patches are immediately available for x86. By the time those lines are written, PPC support is being developed. - I-pipe/x86 patches for 2.6 kernels are available for download from here, along with the former generation ones (go the the oldgen/ directory for those): http://download.gna.org/adeos/patches/v2.6/adeos/i386/ [1] http://www.opersys.com/ftp/pub/Adeos/adeos.pdf http://www.opersys.com/ftp/pub/Adeos/practical-smp-clusters.pdf -- Philippe.
