Shams wrote:
Hi
I played with the demo cd and it works great..
Just a few questions which I am having a hard time understanding:
- L4 is itself a API/ABI reference, right?
L4 is a family of microkernels. There are two main APIs: L4-X.2 (aka L4-V.4) and L4-V.2, which include a binary interface (ABI) for each supported processor architecture. In addition there are two experimental APIs: L4.Sec and seL4 (see the Nicta homepage).
- Are L4.Pistachio and L4.Fiasco are 2 different implementations of L4?
Yes, Pistachio implements the L4-X.2 API. Fiasco implements an improved version of L4-V.2 that incorporates some extensions inspired by L4-X.2 (e.g., UTCBs) and by our local work here (e.g., support for real-time scheduling).
- Is L4.Pistachio is the current official reference implementation?
When you look for a reference implementation for L4-X.2 maybe yes.
Both Fiasco and Pistachio origin from experiments but are right now widely used even by some industry partners.
Do both of them only differ in internal code only?
No, they also differ in the API version they implement.
- What is the difference between L4.Pistachio and L4.Fiasco?
Why are there 2 separate implementations ie. why not just one codebase?
We have two code bases primarily for historic reasons. Fiasco was implemented in C++ at the time when the main stream L4 kernel was Jochen Liedke's assembler kernel implementing the L4-V2 API. Pistachio was developed later. One of the design goals was to restructure the code base to better support porting the kernel to different architectures. Fiasco was later on re-factored to support multiple architectures as well.
Are you able to merge these 2 together or plan to?
Technically yes, but why should we do so? One can only learn from having two alternative implementations.
- Is L4.Sec official and already in the process of being implemented?
We have a partial implementation of the L4.Sec API but there are no near term plans to release it.
Is L4.Pistachio and L4.Fiasco going to be replaced by L4.Sec?
Probably not. The main objective of L4.Sec was to experiment with capabilities and kernel memory management.
Marcus