= RTEMS Paravirtualization = [[TOC(Projects/Paravirtualization, depth=2)]] '''Status:''' New features to be designed. A previous GSOC project started to investigate this topic. See [wiki:GSoC/2011 RTEMSSummerOfCode2011] '''Introduction:''' The overall project consists in adapting RTEMS to be executed on top of an hypervisor so that we can run RTEMS instances on a partitioned kernel (such as ARINC653-related isolation layers like PikeOS, VxWorks, etc...). To do so, it is necessary to (1) define a architecture-agnostic API to run RTEMS as a guest operating system and also tailor an existing hypervisor to execute RTEMS instances in several partitions. '''Goal:''' make RTEMS compliant with partitioned kernel/isolation layer and make a proof-of-concept by collocating several RTEMS instances on top of an existing FOSS separation kernel '''Requirements:''' low-level development, intel/sparc instructions, kernel design '''Resources:''' Existing partitioning/isolation layer, such as POK (see http://pok.safety-critical.net) or AIR (http://air.di.fc.ul.pt/) = Proposed Approach = The project could be separated in two different efforts : define an API in RTEMS to execute privileged instructions and adapt an existing partitioning kernel to execute RTEMS instance. = Adapt RTEMS for privileged instructions = This consists in reviewing RTEMS code and indentify which part of the code requires privileged instructions. After these code review efforts, the goal of this first activity would be used to design an architecture-agnostic API to perform privileged instructions. Basically, these instructions would be adapted when RTEMS is running as a guest OS, making hypercalls to the hypervisor layer. Finally, last part of this efforts would consist in implementing the API for one or two architectures (ideally x86 and SPARC). For that, the project could reuse the results of the previous Google Summer of Code project (in 2011) (see [wiki:GSoC/2011 RTEMSSummerOfCode2011]) = Adapt existing isolation layer = Second step of this project is to adapt an existing partitioning kernel/isolation layer to execute RTEMS instances. Ideally, this would be implemented in an existing FOSS isolation layer. Actually, two FOSS projects provide such functionalities : Air and POK. Ideally, developers may evaluate the feasibility on each isolation kernel and choose the most appropriate solution. = References = * ARINC653: http://en.wikipedia.org/wiki/ARINC_653 * Air: http://air.di.fc.ul.pt/ * POK: http://pok.safety-critical.net * Old references on RTEMS wiki: [wiki:Projects/Hypervisor RTEMSHyperVisor]